Automation for clients

Stage 2 of 8 · 8 lessons · ~5 weeks

n8n in depth

Learn n8n properly: nodes and items, expressions, credentials, the Code node, n8n Cloud versus self-hosting with Docker, the fair-code licence and how executions are billed.

Start: Nodes, connections and items

Lessons· one lesson for each topic, in this order

  1. 1Nodes, connections and items
  2. 2Triggers: webhook, schedule, app and manual
  3. 3Expressions and built-in data
  4. 4Credentials
  5. 5The Code node
  6. 6n8n Cloud or self-hosting with Docker
  7. 7The fair-code licence
  8. 8Executions and what a client pays

Do this

  • Install Docker and start n8n with a named volume so your workflows survive restarts.
  • Finish the free n8n Academy Essentials course and earn its badge.
  • Build a workflow that takes a webhook, calls a public API and writes to a sheet.
  • Write three expressions that clean data: trim, lowercase and a fallback for empty values.
  • Reshape an array of items in a Code node and return it in the item format n8n expects.
  • Store every key as a credential and check none appears inside a node field.
  • Read the licence page and write one sentence on what you may and may not do for clients.

Start with

  • CourseFree
    n8n Academy

    n8n · Beginner

    Free official courses from Essentials to APIs and AI, each with a certificate and badge

Practise

Keep handy

  • Node reference, expressions, the Code node, hosting and licence pages

Before moving on: A self-hosted n8n in Docker (or an n8n Cloud trial) running a four-node workflow: a webhook trigger, an HTTP request to a public API, a Code node that reshapes the result and a Google Sheets or Slack action, all using stored credentials.

Tauseef's advice
Run n8n in Docker on your own machine first: it costs nothing, and breaking it teaches you what a client server needs. Learn how items flow between nodes before anything else; nearly every confusing n8n bug is one item where you expected many, or many where you expected one. Use the Code node only when an expression or built-in node cannot do the job.

Mark this stage as not done?