N8n not connecting to elevenLabs agent

I’ve built an agent on Eleven labs that needs to be connected to an n8n Workflow. But for some reason the webhook isn’t finding the eleven labs agent.

I’ve double checked that the webhook url matches the one found in the elevenlabs tool, which it does. I’ve also tested the webhook request through postman, and it was successful.

Is there anything I’m missing here? {
“nodes”: [
{
“parameters”: {
“promptType”: “define”,
“text”: "Customer that is requesting changes: ",
“options”: {
“systemMessage”: “=You are a helpful booking assistant to a Catering Company with over 30 years of Experience in the Industry. Your job is to send an email to customers\n\nStyle Guidelines:\n\n”
}
},
“type”: “@n8n/n8n-nodes-langchain.agent”,
“typeVersion”: 3.1,
“position”: [
880,
0
],
“id”: “8927c944-1c5c-4275-a0f5-90c11eff795a”,
“name”: “AI Agent”
},
{
“parameters”: {
“modelName”: “models/gemini-3.1-flash-lite”,
“options”: {}
},
“type”: “@n8n/n8n-nodes-langchain.lmChatGoogleGemini”,
“typeVersion”: 1.1,
“position”: [
576,
272
],
“id”: “28a25440-0ec4-4516-9a5f-7557a17f1b73”,
“name”: “Google Gemini Chat Model”,
“credentials”: {
“googlePalmApi”: {
“id”: “r5K1AFY1c2dmiqsE”,
“name”: “Google Gemini(PaLM) Api account”
}
}
},
{
“parameters”: {
“httpMethod”: “POST”,
“path”: “elevenlabs-agent”,
“responseMode”: “responseNode”,
“options”: {}
},
“type”: “n8n-nodes-base.webhook”,
“typeVersion”: 2.1,
“position”: [
0,
0
],
“id”: “c41ecac9-fa6a-43bf-9f56-20f3aa180506”,
“name”: “Webhook”,
“webhookId”: “5cb182b6-458e-47ef-b135-1f13c4bba464”,
“onError”: “continueRegularOutput”
},
{
“parameters”: {
“sendTo”: “barrtimm@gmail.com”,
“subject”: “Updated booking”,
“options”: {}
},
“type”: “n8n-nodes-base.gmail”,
“typeVersion”: 2.2,
“position”: [
1216,
0
],
“id”: “61b1ea10-4721-42f7-b75a-037e78ea3dbc”,
“name”: “Send a message”,
“webhookId”: “44038102-5fdb-43b4-a483-f9e17836d2f7”,
“credentials”: {
“gmailOAuth2”: {
“id”: “49vocCpyDoaHrQbO”,
“name”: “Gmail OAuth2 API”
}
}
},
{
“parameters”: {},
“type”: “@n8n/n8n-nodes-langchain.memoryBufferWindow”,
“typeVersion”: 1.4,
“position”: [
992,
272
],
“id”: “d968a2be-b208-47d8-a1f3-899caf75b969”,
“name”: “Simple Memory”
},
{
“parameters”: {
“assignments”: {
“assignments”:
},
“options”: {}
},
“type”: “n8n-nodes-base.set”,
“typeVersion”: 3.4,
“position”: [
640,
0
],
“id”: “4c3bf6b3-8e27-479d-92df-5493766e2c37”,
“name”: “Edit Fields”
},
{
“parameters”: {
“options”: {}
},
“type”: “n8n-nodes-base.respondToWebhook”,
“typeVersion”: 1.5,
“position”: [
1424,
0
],
“id”: “873db63d-a8d7-493e-b57b-b8465b41f427”,
“name”: “Respond to Webhook”
}
],
“connections”: {
“AI Agent”: {
“main”: [
[
{
“node”: “Send a message”,
“type”: “main”,
“index”: 0
}
]
]
},
“Google Gemini Chat Model”: {
“ai_languageModel”: [
[
{
“node”: “AI Agent”,
“type”: “ai_languageModel”,
“index”: 0
}
]
]
},
“Webhook”: {
“main”: [
[
{
“node”: “Edit Fields”,
“type”: “main”,
“index”: 0
}
]
]
},
“Send a message”: {
“main”: [
[
{
“node”: “Respond to Webhook”,
“type”: “main”,
“index”: 0
}
]
]
},
“Simple Memory”: {
“ai_memory”: [
[
{
“node”: “AI Agent”,
“type”: “ai_memory”,
“index”: 0
}
]
]
},
“Edit Fields”: {
“main”: [
[
{
“node”: “AI Agent”,
“type”: “main”,
“index”: 0
}
]
]
}
},
“pinData”: {},
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “845031bfdb8f607d8c7ae907fb5de28c6fb4d0a8d0cd06c1a605d7c42f4018a9”
}
}


Hi Tim,

If the webhook works in Postman but not when triggered from the ElevenLabs Agent, you are likely hitting an issue with the request body structure or header validation. ElevenLabs often sends requests with specific content types that n8n’s webhook node might require explicit configuration to handle.

Here are the three things to check to isolate the issue:

  1. Request Body Type: ElevenLabs may send data as application/json or as raw text/form data. In your n8n Webhook node, ensure “Respond with JSON” is enabled, but also check that “Ignore HTTP Header Content-Type” is toggled ON. Sometimes n8n rejects incoming payloads if the content-type header from ElevenLabs doesn’t perfectly match what it expects.

  2. The “Webhook ID” Mismatch: Looking at your provided JSON, your Webhook node is named Webhook and is set to responseNode. Verify that the URL you pasted into ElevenLabs is the Production URL (not the Test URL). If you are using the Test URL, it will not trigger the workflow unless you are actively looking at the editor.

  3. Authentication/Header Echo: Does your ElevenLabs agent require a handshake or a specific header back? If ElevenLabs expects a specific JSON response format (e.g., a specific key like {"status": "ok"}), the Respond to Webhook node must be configured to return that specific object. If the agent sends a request and gets an empty or malformed response, it will “time out” or show as “not found” on their end.

Temporarily change your Webhook node to “Respond Immediately” and connect it to a “Set” node that saves the incoming payload to a Google Sheet or an n8n “Table.” If the data appears in the table after an ElevenLabs trigger, you know the connection is fine, and the issue is specifically with the response the agent is expecting back from you.

Also, check your n8n logs (if self-hosted) for any 400 or 500 errors at the exact timestamp of the failed trigger—that will tell you immediately if it’s a header mismatch or a payload parsing error.

Best, Swapnil swapnilailabs.com

Had this exact thing when I first wired ElevenLabs into n8n, so a couple of ideas from what bit me.

The boring one first: if it works in Postman but not from ElevenLabs, you’re almost certainly hitting the test URL, or the workflow isn’t active. The test URL only fires while you have the editor open and listening, so it works once and then goes quiet — that lines up with what you’re describing. Activate the workflow (toggle top right) and point ElevenLabs at the production URL, the one without /webhook-test/.

The one that actually cost me time though: your webhook runs the AI Agent and then sends a Gmail before it responds. If ElevenLabs is calling this as a tool during the call, it won’t wait that long — it gives up and marks the tool as failed, even though the email still goes out a few seconds later. So from your side it looks half-broken. Keep the tool thin: put the Respond to Webhook right after the trigger so ElevenLabs gets its 200 fast, and hang the AI + Gmail part off after that so the slow stuff runs once you’ve already answered. In prod I ended up splitting it in two — one workflow that just acks and stores the payload, another that does the heavy part.

Last thing, make sure the Respond node returns real JSON and not an empty body, or ElevenLabs treats the tool call as errored.

If you paste a screenshot of the tool config on the ElevenLabs side (the tool type and the URL field) I can tell you which of the two it is.

David16’s production-vs-test URL check is the first thing to verify. If the production URL is already active and Postman still works, the fastest way to isolate the remaining fault is:

  1. Temporarily replace the workflow with Webhook (POST, production URL) -> Respond to Webhook and return explicit HTTP 200 JSON within a few seconds.
  2. Run the ElevenLabs tool test and compare the exact method, path, Content-Type, headers, and body with the successful Postman request.
  3. Check the reverse-proxy/ingress access log at the same timestamp. No ElevenLabs request means endpoint/tool configuration; a 30x/403 means redirect, WAF, or TLS; an n8n execution means the transport works and the remaining issue is response schema or timeout.
  4. After that minimal handshake succeeds, add the AI, Gmail, and other downstream nodes back one at a time.

This avoids debugging the whole workflow before confirming whether ElevenLabs can complete the HTTP handshake with n8n.

1 Like