Reference > Troubleshooting

Common Issues

Troubleshooting guide for frequent n8n problems, organized by symptom.

ReferenceBeginner3 min read

Workflow Is Not Triggering

Symptom: The workflow exists but never executes on its own.

  • Check activation. Verify the toggle in the top bar is set to Active. Inactive workflows only run during manual testing.
  • Check the trigger node. The first node must be a trigger (Webhook, Schedule, polling trigger). Action nodes cannot start a workflow automatically.
  • Webhook URL mismatch. Confirm the external service calls the production URL (/webhook/...), not the test URL (/webhook-test/...).
  • Schedule timezone. Verify GENERIC_TIMEZONE matches your expected timezone. Cron expressions use the instance timezone.

Authentication Errors

Symptom: A node fails with 401 Unauthorized, 403 Forbidden, or a credential-related error.

  • Expired tokens. OAuth2 tokens expire. Open the credential and click Reconnect to re-authorize.
  • Insufficient scopes. Check the node reference for required scopes, update them in the OAuth app config, then reconnect.
  • Personal access tokens. Tokens can be revoked or expire. Generate a new one if the old token no longer works.
  • OAuth redirect mismatch. The callback URL must match what is registered in the provider's app settings. If your n8n domain changed, update both sides.

Webhook Not Reachable

Symptom: External services report connection errors or timeouts when calling your webhook.

  • WEBHOOK_URL not set. On self-hosted instances, set the WEBHOOK_URL environment variable to your public URL (e.g., https://n8n.example.com/). Without this, n8n generates URLs with localhost.
  • Firewall or network rules. Ensure port 5678 (or your configured port) is open and reachable from the internet. If behind a reverse proxy, confirm the proxy passes traffic to n8n.
  • HTTPS required. Many services (Slack, GitHub, Stripe) require webhook URLs to use HTTPS. Set up TLS via a reverse proxy.
  • Path mismatch. Double-check the full webhook path. A typo in the path segment or an extra trailing slash can cause a 404.

No Data Coming Through

Symptom: The workflow triggers but downstream nodes receive empty data or undefined values.

  • Check node connections. Ensure every node is connected. Look for broken (red) lines in the editor.
  • Expression syntax errors. Use the correct syntax: {{ $json.fieldName }}. Common mistakes include missing $json, incorrect nesting, and referencing nonexistent fields.
  • Wrong data path. After a Webhook node, body data is under {{ $json.body }}. After most other nodes, data is directly under {{ $json }}. Use the input/output panel to inspect actual structure.
  • Empty result set. The upstream node returned zero items. A query with no matches passes nothing to the next node.

Execution Timeout

Symptom: The workflow fails with a timeout error before completing.

  • Increase the timeout. Set EXECUTIONS_TIMEOUT to a higher value (in seconds). A workflow-level setting may also override the instance default.
  • Check external services. A slow API or unresponsive database can stall execution. Test the service independently.
  • Optimize large data sets. Use SplitInBatches for smaller chunks, or filter data early to reduce volume.
  • Webhook response timeout. If using "When Last Node Finishes" response mode, the caller may time out. Switch to "Immediately" and process asynchronously.

See Also

Want this running in your stack?

I build production n8n and Cloudflare automation for teams — the same engineering behind HarperFlow. Fixed-price, escrow-protected, US-based.