Forem

Thesius Code
Thesius Code

Posted on • Originally published at datanest-stores.pages.dev

n8n Self-Hosted Workflow Templates

n8n Self-Hosted Workflow Templates

30+ production-ready n8n workflow templates for data processing, notifications, monitoring, reporting, and API integrations. Designed for self-hosted n8n instances with full control over execution, scheduling, and data privacy.

Key Features

  • 30+ importable workflows in n8n JSON format — paste and run
  • Self-hosted optimized — leverages n8n's full node library without cloud plan limitations
  • Error handling on every workflow — Error Trigger nodes with Slack/email fallback
  • Credential placeholders — clearly marked connection points for your services
  • Cron-ready scheduling — pre-configured trigger intervals for each workflow
  • Sub-workflow patterns — reusable utility workflows called from main flows
  • Environment-aware — development and production configs with variable overrides

What's Included

Category Workflows Key Automations
Data Processing 8 CSV transforms, JSON normalization, database sync, deduplication
Notifications 6 Multi-channel alerts, digest emails, escalation chains
Monitoring 5 Uptime checks, SSL expiry, disk space, API health
Reporting 5 Daily summaries, weekly KPIs, monthly exports
API Integration 6 Webhook receivers, REST-to-database, API orchestration
n8n-workflow-templates/
├── README.md
├── configs/
│   ├── development.yaml       # Dev instance configuration
│   └── production.yaml        # Production instance settings
├── src/
│   ├── data_processing/
│   │   ├── csv_transformer.json
│   │   ├── database_sync.json
│   │   ├── deduplication.json
│   │   └── ...
│   ├── notifications/
│   │   ├── multi_channel_alert.json
│   │   ├── digest_email.json
│   │   └── ...
│   ├── monitoring/
│   │   ├── uptime_checker.json
│   │   ├── ssl_expiry.json
│   │   └── ...
│   ├── reporting/
│   │   ├── daily_summary.json
│   │   ├── weekly_kpi.json
│   │   └── ...
│   └── api_integration/
│       ├── webhook_processor.json
│       ├── rest_to_database.json
│       └── ...
├── examples/
│   ├── import_guide.md
│   └── sub_workflow_patterns.md
├── docs/
│   └── QUICKSTART.md
└── LICENSE
Enter fullscreen mode Exit fullscreen mode

Quick Start

  1. Access your n8n instance — navigate to your self-hosted n8n UI
  2. Import a workflow — click the menu (⋮) → Import from File → select a .json from src/
  3. Configure credentials — click each node with a ⚠️ warning and connect your accounts
  4. Update variables — edit the Set node at the start of each workflow with your values
  5. Test with "Execute Workflow" — run manually to verify each node's output
  6. Activate the workflow — toggle the Active switch to enable scheduled/triggered execution

Example: Multi-Channel Alert Workflow

{
  "name": "Multi-Channel Alert",
  "nodes": [
    {
      "name": "Webhook Trigger",
      "type": "n8n-nodes-base.webhook",
      "position": [250, 300],
      "parameters": {
        "path": "alert",
        "httpMethod": "POST",
        "responseMode": "onReceived"
      }
    },
    {
      "name": "Classify Severity",
      "type": "n8n-nodes-base.switch",
      "position": [450, 300],
      "parameters": {
        "rules": [
          { "output": 0, "value": "critical", "field": "={{$json.severity}}" },
          { "output": 1, "value": "warning", "field": "={{$json.severity}}" },
          { "output": 2, "value": "info", "field": "={{$json.severity}}" }
        ]
      }
    },
    {
      "name": "Slack - Critical",
      "type": "n8n-nodes-base.slack",
      "position": [700, 150],
      "parameters": { "channel": "#alerts-critical", "text": "CRITICAL: {{$json.message}}\nSource: {{$json.source}}" }
    },
    {
      "name": "Email - Critical",
      "type": "n8n-nodes-base.emailSend",
      "position": [700, 300],
      "parameters": { "toEmail": "oncall@example.com", "subject": "[CRITICAL] {{$json.source}}: {{$json.message}}" }
    },
    {
      "name": "Slack - Warning",
      "type": "n8n-nodes-base.slack",
      "position": [700, 500],
      "parameters": { "channel": "#alerts-warning", "text": "WARNING: {{$json.message}} ({{$json.source}})" }
    }
  ],
  "connections": {
    "Webhook Trigger": { "main": [["Classify Severity"]] },
    "Classify Severity": {
      "main": [
        ["Slack - Critical", "Email - Critical"],
        ["Slack - Warning"],
        []
      ]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Configuration

# configs/production.yaml
n8n:
  instance:
    url: "https://n8n.example.com"
    # Basic auth or header auth for API access
    api_key: "YOUR_N8N_API_KEY"

  # Environment variables for workflow expressions
  variables:
    COMPANY_NAME: "Acme Corp"
    ALERT_EMAIL: "alerts@example.com"
    SLACK_CHANNEL_ALERTS: "#alerts"
    SLACK_CHANNEL_REPORTS: "#daily-reports"
    TIMEZONE: "UTC"

  # Execution settings
  execution:
    timeout: 300                        # Max seconds per workflow
    save_success: true                  # Retain successful execution data
    retention_days: 30                  # Days to keep execution logs

  # Credential references (configured in n8n UI)
  credentials: { slack: "Slack OAuth2", postgres: "Production PostgreSQL", smtp: "SMTP Email" }

  # Scheduling defaults
  scheduling:
    monitoring: "*/5 * * * *"           # Every 5 minutes
    reporting: "0 8 * * *"              # Daily at 8 AM
    data_sync: "0 */2 * * *"            # Every 2 hours
Enter fullscreen mode Exit fullscreen mode

Best Practices

  1. Use the Error Trigger node — create a global error-handling workflow that catches all failures
  2. Pin test data — use n8n's pin data feature to freeze test inputs for reproducible debugging
  3. Use sub-workflows — extract reusable logic (send Slack, log to DB) into shared workflows
  4. Set execution timeouts — prevent runaway workflows from consuming server resources
  5. Version control your workflows — export JSON files and commit to Git after each change
  6. Use environment variables — never hardcode URLs or keys in workflow expressions
  7. Monitor disk space — n8n stores execution data; set retention_days to prevent disk bloat

Troubleshooting

Issue Solution
Workflow won't activate Check that all credential nodes are configured — any ⚠️ blocks activation
Webhook not receiving data Verify the webhook URL includes /webhook/ (not /webhook-test/) for production
Cron trigger not firing Ensure the workflow is Active (green toggle) and the server timezone matches your cron
"Execution timed out" errors Increase timeout in Settings or optimize the workflow (reduce API calls, add pagination)
Memory errors on large datasets Use the "Split In Batches" node to process records in chunks of 50-100
Credentials not found after import Credentials are not exported with workflows — recreate them in n8n and re-link

This is 1 of 11 resources in the No-Code Builder Pro toolkit. Get the complete [n8n Self-Hosted Workflow Templates] with all files, templates, and documentation for $29.

Get the Full Kit →

Or grab the entire No-Code Builder Pro bundle (11 products) for $129 — save 30%.

Get the Complete Bundle →


Related Articles

Top comments (0)