n8n Automation: Complete Guide with 10 Practical Workflows
Back to Blog
AI & Automation

n8n Automation: Complete Guide with 10 Practical Workflows

January 21, 2026
18 min read
Jonas Höttler

n8n Automation: The Complete Guide

n8n is the Swiss Army knife of workflow automation: open source, self-hostable, incredibly flexible. This guide takes you from zero to productive use – with 10 concrete workflow examples.

Why n8n?

n8n vs. the Competition

Featuren8nMakeZapier
Price (1,000 tasks/mo)€20 (Cloud) / €0 (Self-Host)€16€29
Self-HostingYesNoNo
Open SourceYesNoNo
Code NodesYes (JS/Python)LimitedLimited
ComplexityMedium-HighMediumLow
EU HostingYesYesNo

n8n is ideal when:

  • You need control over your data (GDPR)
  • You want to implement complex logic
  • You're technically savvy or want to become so
  • Budget is a factor

Detailed comparison: Make vs Zapier vs n8n

Basics: Understanding n8n

Core Concepts

Workflows: A workflow is a chain of nodes that process data.

Nodes: Building blocks of your workflow. There are:

  • Trigger Nodes: Start the workflow (Webhook, Schedule, App Event)
  • Regular Nodes: Process data (HTTP Request, Transform, Filter)
  • Credential Nodes: Store access data securely

Connections: Connect nodes and transport data.

Expressions: Allow dynamic values with {{ $json.field }} syntax.

Understanding Data Flow

[Trigger] → [Node 1] → [Node 2] → [Output]
     ↓           ↓           ↓
   Items       Items       Items

Each node receives Items (JSON objects) and outputs items. Items flow from left to right through the workflow.

Important: A node can receive multiple items and processes each one individually.

Installation and Setup

Option 1: n8n Cloud (Recommended for Start)

  1. Go to n8n.io
  2. Create an account
  3. Done – you can start immediately

Advantages: No setup, automatic updates, SSL included

Option 2: Self-Hosting with Docker

docker run -it --rm \
  --name n8n \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  n8nio/n8n

Open http://localhost:5678 in your browser.

Option 3: Docker Compose (Production)

version: '3.8'
services:
  n8n:
    image: n8nio/n8n
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=securepassword
      - N8N_HOST=n8n.yourdomain.com
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.yourdomain.com/
    volumes:
      - n8n_data:/home/node/.n8n
volumes:
  n8n_data:

The 10 Practical Workflows

Workflow 1: Lead Notification (Beginner)

Use Case: New lead in CRM → Slack message → Email to sales

Nodes:

  1. CRM Trigger (e.g., HubSpot, Pipedrive)
  2. Slack Node → Message to #sales-channel
  3. Email Node → Email to assigned sales rep

Complexity: ⭐☆☆☆☆

Workflow 2: Automatic Invoice Processing (Medium)

Use Case: Email with PDF attachment → OCR → Data to Excel/Airtable

Nodes:

  1. Email Trigger (IMAP)
  2. IF Node → Filter: Has attachment?
  3. HTTP Request → OCR API (e.g., Azure Document Intelligence)
  4. Set Node → Structure data
  5. Airtable/Google Sheets → Save

Complexity: ⭐⭐⭐☆☆

Pro Tips:

  • Use Error Workflow for failed OCR
  • Save original PDF for audit
  • Validate extracted amounts (Regex)

Workflow 3: Social Media Scheduler (Medium)

Use Case: Google Sheet with posts → Automatically post to LinkedIn/Twitter

Nodes:

  1. Schedule Trigger (daily 9:00)
  2. Google Sheets → Read next post
  3. IF Node → Post not yet published?
  4. LinkedIn/Twitter Node → Post
  5. Google Sheets → Mark as published

Complexity: ⭐⭐⭐☆☆

Workflow 4: Applicant Pipeline (Medium)

Use Case: Application on website → Notion entry → Hiring manager notification

Nodes:

  1. Webhook Trigger (Form submission)
  2. Notion Node → Create candidate page
  3. IF Node → Which position?
  4. Email Node → To responsible hiring manager
  5. Slack Node → Recruiting channel

Complexity: ⭐⭐⭐☆☆

Workflow 5: Data Synchronization (Advanced)

Use Case: CRM ↔ ERP Sync every 15 minutes

Nodes:

  1. Schedule Trigger (every 15 min)
  2. CRM Node → Get changed contacts
  3. Code Node → Transform data
  4. ERP API → Update/Create
  5. Error Workflow → Notify on errors

Complexity: ⭐⭐⭐⭐☆

Code Node Example:

// Transform CRM data to ERP format
return items.map(item => {
  return {
    json: {
      erpCustomerId: item.json.crm_id,
      name: `${item.json.firstName} ${item.json.lastName}`,
      email: item.json.email,
      lastSync: new Date().toISOString()
    }
  };
});

Workflow 6: AI-Powered Email Sorting (Advanced)

Use Case: Incoming emails → GPT-4 classification → Automatic routing

Nodes:

  1. Email Trigger (IMAP)
  2. OpenAI Node → Classify: Support/Sales/Spam/Info
  3. Switch Node → Based on classification
  4. Email/Slack Nodes → To right team

Complexity: ⭐⭐⭐⭐☆

OpenAI Prompt:

Classify this email into one of the categories:
- SUPPORT: Technical questions, problems, bugs
- SALES: Inquiries, interest in products
- SPAM: Advertising, irrelevant
- INFO: General information

Email:
{{ $json.text }}

Reply only with the category in uppercase.

Workflow 7: Reporting Automation (Advanced)

Use Case: Monday 8:00 → Data from 5 sources → PDF report → Send via email

Nodes:

  1. Schedule Trigger (Monday 8:00)
  2. Multiple Parallel Nodes → Google Analytics, CRM, Ads, etc.
  3. Merge Node → Combine data
  4. Code Node → Generate report
  5. Email Node → With PDF attachment

Complexity: ⭐⭐⭐⭐⭐

Workflow 8: Inventory Alert System (Medium)

Use Case: Stock below threshold → Trigger order + notification

Nodes:

  1. Schedule Trigger (hourly)
  2. Database/API → Current inventory
  3. IF Node → Below minimum stock?
  4. Supplier API → Auto-reorder
  5. Slack/Email → Notify team

Complexity: ⭐⭐⭐☆☆

Workflow 9: Customer Onboarding (Advanced)

Use Case: New customer → Multi-step onboarding over 14 days

Nodes:

  1. Webhook Trigger (New customer)
  2. Wait Node → Day 0: Welcome email
  3. Wait Node → Day 3: Tutorial video
  4. Wait Node → Day 7: Book check-in call
  5. Wait Node → Day 14: Feedback survey

Complexity: ⭐⭐⭐⭐☆

Workflow 10: Multi-Channel Support Bot (Expert)

Use Case: Slack + Email + Webform → Central queue → Auto-reply → Escalation

Nodes:

  1. Multiple Triggers (Webhook, Email, Slack)
  2. Merge Node → Unified format
  3. OpenAI Node → Response suggestion
  4. Notion/Airtable → Create ticket
  5. Code Node → Prioritization
  6. Switch Node → Routing

Complexity: ⭐⭐⭐⭐⭐

Best Practices

1. Workflow Design

  • Build modular: Small, reusable sub-workflows
  • Error Handling: Always define an error workflow
  • Documentation: Sticky notes for complex logic
  • Naming: Descriptive node names (Get_Active_Customers not HTTP Request)

2. Performance

  • Batch Processing: Process large data volumes in batches
  • Webhook over Polling: Saves resources
  • Caching: Cache frequently used data
  • Watch timeout: Long workflows can timeout

3. Security

  • Credentials: Never hardcoded in workflow
  • Webhook Security: Enable authentication
  • Self-Hosting: Behind reverse proxy (Traefik/Nginx)
  • Encryption: SSL/TLS for all connections

4. Debugging

  • Execute Once: For testing individual nodes
  • Pin Data: Fix test data
  • Console.log: In code node for analysis
  • Execution History: Check logs

Avoiding Common Mistakes

Mistake 1: No Error Handling

Problem: Workflow breaks, nobody notices.

Solution:

[Main Workflow] → Error Workflow → Slack/Email Notification

Mistake 2: Overly Complex Workflows

Problem: One workflow does everything – impossible to debug.

Solution: Split into sub-workflows. One workflow = one task.

Mistake 3: Hardcoded Values

Problem: API keys, URLs directly in workflow.

Solution: Use environment variables and credentials.

Mistake 4: No Idempotency

Problem: Workflow runs twice = duplicate data.

Solution: Build in deduplication logic (check before create).

Advanced Techniques

Custom Code Nodes

// Complex transformation
const processedItems = [];

for (const item of items) {
  // Your logic here
  const processed = {
    json: {
      ...item.json,
      processedAt: new Date().toISOString(),
      customField: someFunction(item.json.data)
    }
  };
  processedItems.push(processed);
}

return processedItems;

Webhook with Authentication

// In workflow: Check header auth
const authHeader = $input.headers['x-api-key'];
const validKey = $env.WEBHOOK_API_KEY;

if (authHeader !== validKey) {
  throw new Error('Unauthorized');
}

Calling Sub-Workflows

Use the "Execute Workflow" node to build modular architectures.

Next Steps

  1. Start small: Take a simple process (e.g., notification)
  2. Learn the nodes: Experiment with the most important ones (HTTP, IF, Set)
  3. Build incrementally: Extend working workflows
  4. Use community: n8n Community for templates

Calculate ROI: Our Automation ROI Calculator shows you the savings potential.

Conclusion

n8n is powerful – but the learning curve is worth it. With these 10 workflow examples, you have a solid starting point. Begin with simple automations and work your way up.


Want to automate processes but don't know where to start? Our Automation Potential Check identifies the best candidates in your company. See also: Process Automation Best Practices.

#n8n#Workflow Automation#No-Code#Process Automation#Low-Code

Have a similar project?

Let's talk about how I can help you.

Get in touch