Week 1, n8n fundamentals
Goal, learn the n8n editor, triggers, nodes, and data. Build 5 small workflows and document each one.
1
W1S1, Setup + first workflow
Install, create workspace, run first workflow, learn the UI.
2 hours
Watch, 0:00 to 0:25
- Video link, n8n beginner intro: n8n Beginner Course, Introduction to Automation
- While watching, write 5 bullets on what n8n is used for.
Build, 0:25 to 1:35
- Create n8n account, or run self-hosted n8n.
- Create workflow W1S1 - Hello Workflow.
- Add nodes: Manual Trigger , Set.
- In Set node, set fields:
message=Hello from n8n,createdAt= current time using expression{{new Date().toISOString()}}. - Run workflow, inspect output, take a screenshot.
// Set node fields
message: "Hello from n8n"
createdAt: {{new Date().toISOString()}}
Verify + document, 1:35 to 2:00
- Verify output is valid JSON with both fields present.
- Create README notes: Purpose, Nodes, Inputs, Outputs, How to run.
- Write 3 ways you could use a workflow like this in real life.
2
W1S2, APIs + HTTP Request node
Call a public API, map fields, and return structured output.
2 hours
Watch, 0:00 to 0:25
- n8n Beginner Course, APIs and Webhooks
- Write definitions for API, endpoint, request, response, JSON.
Build, 0:25 to 1:35
- Create workflow W1S2 - Quote API.
- Add nodes: Manual Trigger , HTTP Request , Set.
- HTTP Request, Method GET, URL:
https://api.quotable.io/random. - Set node, output only these fields:
quote,author,length,fetchedAt. - Use expressions to map from HTTP output.
// Example Set node expressions
quote: {{$json["content"]}}
author: {{$json["author"]}}
length: {{$json["length"]}}
fetchedAt: {{new Date().toISOString()}}
Verify + document, 1:35 to 2:00
- Verify Set node returns only the 4 fields, no extra clutter.
- Run 3 times, confirm quote changes.
- README, include the API URL, and a note about rate limits.
3
W1S3, Webhooks intake
Receive data from the outside world using a webhook trigger.
2 hours
Watch, 0:00 to 0:20
- n8n Beginner Course, What are nodes
- Skim n8n docs: Webhook node docs
Build, 0:20 to 1:40
- Create workflow W1S3 - Webhook Intake.
- Add nodes: Webhook , Set , Respond to Webhook.
- Webhook, Method GET, Path:
/intake(or anything). - Execute workflow, then open the test URL with query params:
?name=Sam&topic=n8n. - Set node maps:
name,topic,receivedAt,source=webhook. - Respond to Webhook returns JSON { ok: true, name, topic }.
// Response JSON
{
"ok": true,
"name": "{{$json["name"]}}",
"topic": "{{$json["topic"]}}"
}
Verify + document, 1:40 to 2:00
- Verify browser shows JSON response, not hanging.
- Test missing params, open URL without name, handle fallback with expression default.
- README includes how to test the webhook and example URL.
4
W1S4, Data items + looping
Understand items arrays, transform lists, and map each item.
2 hours
Watch, 0:00 to 0:20
- n8n Beginner Course, How n8n handles data
- Write down what an item is, and what items[] means.
Build, 0:20 to 1:40
- Create workflow W1S4 - Multi Item Greetings.
- Manual Trigger , Function , Set.
- Function returns multiple items with names.
- Set node adds a greeting using expression.
// Function node
const names = ["Alice","Bob","Charlie","Dana"];
return names.map(n => ({ json: { name: n } }));
// Set node expression
message: {{`Hello, ${$json.name}!`}}
createdAt: {{new Date().toISOString()}}
Verify + document, 1:40 to 2:00
- Verify 4 output items exist and each has a unique message.
- Write README and include what changes if items length is 1000.
5
W1S5, Conditions, If, Switch
Branch a workflow and route outputs based on rules.
2 hours
Watch, 0:00 to 0:25
- n8n Beginner Course, Core workflow concepts
- Write 2 examples of routing logic, leads, support tickets.
Build, 0:25 to 1:35
- Create workflow W1S5 - Score Router.
- Manual Trigger , Set , If , Set (Pass) , Set (Fail).
- Set node sets
scoreto 75. - If checks score >= 60.
- Pass branch outputs
result: pass, Fail branch outputsresult: fail.
// Pass Set node
result: "pass"
score: {{$json.score}}
// Fail Set node
result: "fail"
score: {{$json.score}}
Verify + document, 1:35 to 2:00
- Run twice, once with score 75, once with score 50.
- README includes the condition and what it is used for.
Week 2, reliable workflows
Goal, add scheduling, useful nodes, error handling, debugging, and sharing.
6
W2S6, Useful nodes, Cron + Merge
Scheduled triggers and combining data streams.
2 hours
Watch, 0:00 to 0:25
- n8n Beginner Course, Useful nodes
- Write down 5 nodes that seem valuable, Cron, Wait, Merge, Split in Batches, Code.
Build, 0:25 to 1:35
- Create workflow W2S6 - Scheduled Quote + Time.
- Nodes: Cron , HTTP Request , Set (Time) , Merge , Set (Final).
- Cron, every 5 minutes for testing.
- HTTP, fetch quote from quotable API.
- Set (Time), create now fields:
runAt,timezone. - Merge, combine quote + time into one item.
- Final Set, return
quote,author,runAt.
// Merge mode suggestion
Use "Merge By Position" if both branches output one item.
// Final output
quote: {{$json.content}}
author: {{$json.author}}
runAt: {{$json.runAt}}
Verify + document, 1:35 to 2:00
- Run manually first, then activate Cron briefly to observe an automatic run.
- Deactivate Cron after testing if you do not want ongoing runs.
- README includes why Merge is needed and which merge mode you used.
7W2S7, Error handling patternsContinue on fail, error trigger, and graceful fallbacks.
2 hours
Watch, 0:00 to 0:25
- n8n Beginner Course, Error handling
- Write a list of 5 things that can break in automations, credentials, API rate limits, bad input, timeouts, formatting.
Build, 0:25 to 1:35
- Create workflow W2S7 - Failure Sandbox.
- Manual Trigger , HTTP Request (bad URL) , Set (Fallback) , IF (error exists).
- HTTP Request URL:
https://api.this-domain-should-not-exist-123.com. - Enable Continue On Fail on HTTP node.
- If checks
{{$json.error}}is not empty. - True branch sets
status: failed, includeserrorMessage. - False branch sets
status: ok.
// If condition expression idea
{{$json.error !== undefined}}
// Fallback Set fields
status: "failed"
errorMessage: {{$json.error.message || "unknown"}}
failedAt: {{new Date().toISOString()}}
Verify + document, 1:35 to 2:00
- Verify workflow completes even when HTTP fails.
- README includes your chosen failure strategy, stop, continue, alert.
8W2S8, Debugging like a proExecution logs, node-by-node runs, pinning data.
2 hours
Watch, 0:00 to 0:20
- n8n Beginner Course, Debugging
- Write your own debugging checklist, data, config, credentials, outputs.
Build, 0:20 to 1:40
- Pick any previous workflow and introduce a bug on purpose, wrong field name or bad expression.
- Use node execution view to find the exact node where data changed.
- Use pin data, if available, to reuse output while adjusting downstream nodes.
- Create workflow W2S8 - Debug Notes and paste your debugging checklist into a Set node so it lives in n8n.
// Example Debug Checklist text to store
1) What is the trigger input
2) What does each node output
3) Are expressions referencing the right fields
4) Any credential errors
5) Any rate limit or timeout
6) Does final output match schema
Verify + document, 1:40 to 2:00
- Write 3 bugs you encountered and the fix pattern you used.
- README includes your checklist and a real example from today.
9W2S9, Sharing workflowsExport, import, handover documentation.
2 hours
Watch, 0:00 to 0:20
- n8n Beginner Course, Collaboration
- Write down what breaks when moving workflows across environments.
Build, 0:20 to 1:40
- Each learner chooses their best workflow from Week 1 or 2.
- Export workflow as JSON and swap.
- Import the other person’s workflow.
- Update any missing credentials and re-run to confirm it works.
- Create a standard README template in your notes doc, reuse it for every workflow.
# README template
Name:
Purpose:
Trigger:
Nodes:
Inputs:
Outputs:
Credentials needed:
How to test:
Failure modes:
Version notes:
Verify + document, 1:40 to 2:00
- Verify you can run your partner’s workflow without them touching your setup.
- Add missing credential notes to the README.
10W2S10, Mini project, practical automationShip a useful workflow and document it properly.
2 hours
Watch, 0:00 to 0:15
- Optional inspiration: Build your first workflow in n8n
Build, 0:15 to 1:45
- Create workflow W2S10 - Daily Quote Digest.
- Use Cron daily at a chosen time, or manual trigger for now.
- Fetch a quote via HTTP, format a message, then send to one output channel.
- Output options, Email node, Slack, or just a Respond to Webhook.
- Add basic error handling, if HTTP fails, send a different message.
// Message format example
subject: "Daily Quote"
body: "\"{{$json.content}}\"\n\n- {{$json.author}}\n\nSent: {{new Date().toISOString()}}"
Verify + document, 1:45 to 2:00
- Run end-to-end, confirm the final message arrives.
- Write a proper README with failure modes and credentials.
Week 3, add AI
Goal, integrate an LLM node, create structured outputs, route based on AI classification, and practice prompt design.
11W3S11, OpenAI node setupCredentials, first AI call, structured JSON output.
2 hours
Watch, 0:00 to 0:25
- OpenAI Node in n8n, Supercharge your automations
- Create an OpenAI API key if required: OpenAI platform
Build, 0:25 to 1:35
- Create workflow W3S11 - First AI Call.
- Manual Trigger , Set (Input) , OpenAI node , Set (Normalize).
- Set (Input) creates:
question= a real question. - OpenAI prompt references
questionand forces JSON response. - Normalize Set extracts:
answer,confidence,sourcesSuggested.
// Prompt template
You are a helpful assistant.
Return ONLY valid JSON with keys: answer, confidence (0-1), sourcesSuggested (array).
Question: {{$json.question}}
Verify + document, 1:35 to 2:00
- Verify response parses as JSON, no extra text.
- Run 3 different questions.
- README includes your JSON schema and why structure matters.
12W3S12, AI classification + routingClassify inbound messages and route to different paths.
2 hours
Watch, 0:00 to 0:20
- Inspiration: Use AI to find ideas with Reddit + n8n
- Skim: n8n AI docs: n8n Advanced AI
Build, 0:20 to 1:40
- Create workflow W3S12 - Support Triage.
- Webhook trigger receives
message. - OpenAI node returns JSON with
categoryandpriority. - Switch node routes category, billing, tech, sales, other.
- Each route ends with a Respond to Webhook JSON acknowledging route.
// Classification prompt
Return ONLY JSON: {"category":"billing|tech|sales|other","priority":"low|medium|high","reason":"..."}
Message: {{$json.message}}
Verify + document, 1:40 to 2:00
- Test with 6 sample messages, confirm routing makes sense.
- Write README and include your test messages and results.
13W3S13, AI summariser workflowSummarise incoming text and format output cleanly.
2 hours
Watch, 0:00 to 0:15
Build, 0:15 to 1:45
- Create workflow W3S13 - Text Summariser.
- Webhook receives
text. - OpenAI returns JSON with
summary,keyPoints,actionItems. - Respond to Webhook returns the JSON directly.
// Summariser prompt
Return ONLY JSON with keys: summary (max 60 words), keyPoints (array max 5), actionItems (array max 5).
Text: {{$json.text}}
Verify + document, 1:45 to 2:00
- Test with a long paragraph and confirm summary length constraint.
- README includes exact schema and sample input/output.
14W3S14, Prompt engineering drillsMake outputs consistent, safe, and structured.
2 hours
Watch, 0:00 to 0:35
- Prompt Engineering for Beginners, AI Agents series
- Write 5 prompt rules, be specific, define format, give examples, constrain length, add refusal rules.
Build, 0:35 to 1:35
- Pick W3S12 or W3S13 and improve its prompt.
- Add a JSON schema example inside the prompt.
- Add a refusal rule, if the input is empty, return {"error":"empty input"}.
- Add a consistency rule, keep category values strict.
// Example schema snippet
Output example:
{"category":"tech","priority":"medium","reason":"password reset request"}
If message is empty, return: {"error":"empty input"}
Verify + document, 1:35 to 2:00
- Re-test your 6 messages and compare routing accuracy before vs after.
- In README, include prompt v1 vs prompt v2 and what improved.
15W3S15, Capstone selection + blueprintPlan Week 4 capstone with exact nodes, schemas, and tests.
2 hours
Read, 0:00 to 0:20
- Best practices article: AI Workflow Builder best practices
Plan, 0:20 to 2:00
- Pick ONE capstone per learner. Options below.
- Create a blueprint in your notes doc with nodes, inputs, outputs, and test cases.
- List credentials you will need and create them now.
- Define a strict JSON output schema and a failure strategy.
// Capstone options
1) Daily digest, fetch RSS or API, summarise, email or slack
2) Lead qualifier, webhook intake, enrich, score, route
3) Support triage, classify, draft reply, send to review queue
Week 4, capstone build
Goal, ship a production style workflow with logs, fallbacks, documentation, and a demo.
16W4S16, Capstone build, part 1Implement trigger, intake, and first processing steps.
2 hours
Action plan, 0:00 to 2:00
- Create workflow named W4 Capstone - (your project name).
- Add Trigger, webhook or cron or email trigger, based on blueprint.
- Create Set node to normalise input schema, required fields only.
- Add logging step, use a Set node to create
runIdandstartedAt. - Implement first external call if needed, HTTP or integration node.
- Stop after the first major milestone runs end to end.
// Run id helper in a Code or Function node
const runId = `${Date.now()}-${Math.random().toString(16).slice(2)}`;
return [{ json: { ...$json, runId, startedAt: new Date().toISOString() } }];
Deliverable
- 1 workflow that triggers and produces a clean normalised JSON payload.
- README section, Purpose, Trigger, Input schema, How to test.
17W4S17, Capstone build, part 2Add AI step with strict JSON output schema.
2 hours
Action plan, 0:00 to 2:00
- Add OpenAI node for the main intelligence step.
- Force JSON only output and define schema explicitly.
- Add validation, if output missing required keys, set status failed and return fallback.
- Add routing with If or Switch based on AI output.
- Keep outputs small and predictable.
// Prompt skeleton
Return ONLY JSON matching this schema:
{"decision":"...","reason":"...","nextSteps":["..."]}
Input: {{JSON.stringify($json)}}
Deliverable
- AI step that outputs structured JSON reliably.
- At least 2 routes based on AI output.
- README, schema, 5 test cases with expected outputs.
18W4S18, Capstone outputsSend results to email, sheets, slack, or CRM.
2 hours
Action plan, 0:00 to 2:00
- Add final output integration, email, slack, sheets, or webhook response.
- Format output for humans, keep a structured JSON version too.
- Add a summary text field that is easy to read.
- Run 10 tests, record outputs, fix formatting problems.
// Example human summary
summary: {{`Decision: ${$json.decision}\nReason: ${$json.reason}\nNext: ${($json.nextSteps||[]).join(", ")}`}}
Deliverable
- End-to-end workflow that produces a useful output externally.
- README updated with credentials and output format.
19W4S19, Production hardeningLogging, retries, timeouts, and safe failure.
2 hours
Action plan, 0:00 to 2:00
- Add error handling, continue on fail only when safe.
- Add an error route that returns a predictable JSON error object.
- Rate limit protection, use Wait or Split in Batches if calling AI multiple times.
- Cost guardrail, limit items processed per run.
- Add a logging output, store runId, status, and key fields to a sheet or database if possible.
// Error object format
{
"ok": false,
"runId": "{{$json.runId}}",
"error": "...",
"step": "openai",
"timestamp": "{{new Date().toISOString()}}"
}
Deliverable
- Workflow survives bad inputs and external failures.
- README includes failure modes and how to recover.
20W4S20, Demo + handoverPresent capstone like a client delivery.
2 hours
Action plan, 0:00 to 2:00
- Prepare a 5 minute demo walk-through of your workflow.
- Show, trigger, data flow, AI step, output, error case.
- Export workflow JSON.
- Write a final README that another person could use to run it.
- Self assess using the final checklist below.
// Demo script outline
1) What problem this solves
2) Trigger and input schema
3) Key nodes and decisions
4) AI prompt and schema
5) Output and where it goes
6) Failure modes and safeguards
Deliverable
- Capstone workflow JSON export.
- README + test cases.
- 5 minute demo complete.
Final skills checklist
Tick these when you can do them without help. This is the graduation standard.
I can create, run, and debug a workflow, and I can explain nodes, triggers, and data items.
I can use HTTP Request to call an API and map the response into a clean JSON output schema.
I can build a webhook intake that accepts params or JSON and returns a response.
I can route workflows using If or Switch, and I can explain the routing rules.
I can add fallbacks, continue on fail where appropriate, and return predictable error objects.
I can call an LLM node and force structured JSON output.
I can improve prompts to increase consistency and reduce hallucinations.
I can ship a workflow that produces an external output, email, slack, sheets, CRM, and runs reliably.
I can export a workflow and write a README that someone else can use to run it.
I built a capstone workflow with logs, error handling, schemas, and a 5 minute demo.