Education

n8n Chat Errors: How to Fix Every Common Message

Exact fixes for the most common n8n chat errors: 'No response received', 'Response Mode must be set to Using Response Nodes', missing session ID, invalid JSON, CORS failures, and more.

Manoj Kumar

Manoj Kumar

n8n Chat Errors: How to Fix Every Common Message

You built a chatbot in n8n, connected a chat widget, sent a test message, and instead of a reply you got an error. If you searched for that exact error text and landed here, good news: every common n8n chat error has a known cause and a quick fix, and this guide collects all of them.

Each section below starts with the error message as n8n shows it, explains what's actually going wrong, and gives you the steps to fix it.

"No response received. This could happen if streaming is enabled in the Trigger but disabled in Agent node(s)"

What it means: Your input and output nodes disagree about streaming. The Chat Trigger (or Webhook) node is set to stream the response, but the AI Agent node that generates it has streaming turned off. The trigger opens a stream, waits for chunks that never arrive, and gives up.

The fix:

  1. Open the AI Agent node in your workflow
  2. Click Add option and select Enable streaming, then toggle it on
  3. Save and activate the workflow, then send a test message

If you don't want streaming at all, do the reverse: open the Chat Trigger node and remove the Streaming response mode so both sides use the normal request-response flow. The rule is simple: streaming must be on for both nodes or for neither. Our chat streaming setup guide walks through the full configuration.

"'Response Mode' in the Chat Trigger node must be set to 'Using Response Nodes'"

What it means: Your workflow contains a Chat node (previously called Respond to Chat), but the Chat Trigger isn't configured to hand response control over to it. The Chat node only works when the trigger explicitly delegates responses.

The fix:

  1. Open the Chat Trigger node
  2. Under Options, add the Response Mode field if it isn't visible
  3. Set it to Using Response Nodes
  4. Save and test again

Two related gotchas: the Chat node is not supported when the Chat Trigger runs in Embedded Chat mode (use the Respond to Webhook node there instead), and it doesn't work inside subworkflows. The Chat Trigger node guide explains all the response modes and when to use each one.

"No session ID found. Expected to find the session ID in an input field called 'sessionId'"

What it means: Your memory node (for example Simple Memory) looks for a field named sessionId to keep conversations separate, and the data reaching it doesn't have one. This usually happens when the chat request comes from a custom widget or a Webhook node that names the field differently, or when the memory node sits behind a node that strips the field out.

The fix:

  1. Check what your trigger actually outputs. The Chat Trigger node outputs sessionId automatically; a plain Webhook node does not
  2. If your session field has a different name, open the memory node and change the Session ID parameter to point at the right field, for example {{ $json.body.sessionId }}
  3. If the field is missing entirely, make sure your widget sends one. Most chat widgets send it by default

If multiple widgets share one workflow and conversations bleed into each other, that's a session key problem rather than an error. Our session management docs cover how to keep them separate.

"Workflow must be started from a Chat Trigger node"

What it means: Something tried to run this workflow through the chat channel, but the workflow's entry point isn't a Chat Trigger node. This also shows up when you open the built-in chat panel in a workflow whose trigger is a Webhook or Schedule node.

The fix: Add a Chat Trigger node as the workflow's starting point, or if you meant to call the workflow over HTTP, use its Webhook URL instead of the chat interface. One workflow can't be both unless you add both triggers.

"Invalid JSON in 'Response Body' field"

What it means: Your Respond to Webhook node is set to return JSON, but the text in its Response Body field isn't valid JSON. A missing quote, a trailing comma, or an unescaped expression result breaks the parse.

The fix:

  1. Open the Respond to Webhook node
  2. Validate the Response Body content (paste it into any JSON validator)
  3. Watch out for expressions: if {{ $json.output }} contains quotes or newlines, wrap the whole body in an expression that builds the object, for example {{ { "output": $json.output } }}, instead of hand-writing JSON around it

The widget loads but never replies (CORS)

What it means: No error in the widget, nothing in n8n executions, messages just vanish. Open your browser's developer console and you'll likely see a CORS error: the request was blocked because your site's domain isn't allowed to call the webhook.

The fix:

  1. Open the Chat Trigger node
  2. Under Options, add Allowed Origins (CORS)
  3. Enter your site's exact origin, for example https://www.yoursite.com. Multiple origins are comma-separated
  4. Save and activate the workflow

The origin must match exactly, including the protocol and any www prefix.

Webhook returns 404

What it means: The widget is calling a URL that n8n isn't listening on. There are only three causes:

  1. You're using the test URL. Test URLs only work while you're watching the workflow in the editor. Switch to the production URL
  2. The workflow isn't active. Production webhooks only register when the workflow's Active toggle is on
  3. The URL is stale. The webhook path changed, and your widget still points at the old one

Copy the production URL fresh from the Chat Trigger node, confirm the workflow is active, and update your widget's configuration.

The bot replies with an empty message

What it means: The connection works, but the widget can't find the reply text in the workflow's response. Chat widgets look for specific field names (commonly output, text, or message), and your workflow's final node returns something else.

The fix: Check what your last node actually outputs, then align the two sides. With an AI Agent as the last node, the reply lives in the output field and works out of the box. If a Code or Set node builds the response, name the field output. The expected response format for custom backends is documented in our backend integration guide.

A 5-Step n8n Chat Debugging Checklist

When something misbehaves and the error isn't obvious, run through this list. It resolves the majority of chat issues:

  1. Is the workflow Active? Test executions in the editor don't count for production webhooks
  2. Production URL or test URL? The widget should use the production one
  3. Is your domain in Allowed Origins? Check the browser console for CORS blocks
  4. Do streaming settings match? Both trigger and agent on, or both off
  5. Check the execution log. In n8n, open Executions and inspect what actually arrived and what each node returned

Skip This Class of Problems Entirely

A fair share of these errors comes from wiring a widget to a raw webhook by hand: wrong URLs, missing session IDs, mismatched response fields. A widget built with n8nchatui.com handles the connection layer for you. You paste your Chat Trigger webhook URL, the widget takes care of sessions, response parsing, and streaming detection, and managed widgets add webhook protection and rate limiting so your workflow isn't exposed to the open internet.