Webhook registration

I’m exposing n8n through Traefik with TLS termination, but my production webhook never registers executions.The endpoint resolves, but n8n doesn’t pick up the request. Could this be a base URL mismatch or an issue with how webhook URLs are being generated internally?

Describe the problem/error/question

What is the error message (if any)?

Please share your workflow

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)

Share the output returned by the last node

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

@joshlizzy Could you share:

  • Your current n8n environment variables (especially WEBHOOK_URL)

  • The webhook URL that n8n generated

  • Whether you’re using a path prefix

This will help us pinpoint the exact issue!

GL

1 Like

Yes, this typically happens when the externally reachable URL and the internal webhook registration URL are not aligned.

n8n generates webhook paths based on the value of WEBHOOK_URL. If this is unset or pointing to the container’s internal address, incoming requests will never map to the correct execution handler.

Please verify:

  • WEBHOOK_URL reflects the public HTTPS endpoint, not the internal service name.

  • Your reverse proxy forwards:

  • X-Forwarded-Proto

  • X-Forwarded-Host

  • N8N_HOST and N8N_PROTOCOL are consistent with your external domain.

Without these, webhook signatures are registered against the wrong base URL and remain unreachable from the outside.

2 Likes

This is helpful, thanks for this

@joshlizzy can you check your n8n environment variables:

WEBHOOK_URL=https://your-domain.com/
N8N_HOST=your-domain.com
N8N_PROTOCOL=https
N8N_PORT=443

Without these, n8n might be generating webhook URLs with http:// or localhost, which won’t match incoming requests.

Hope thsi helps!

This is almost certainly a WEBHOOK_URL mismatch, when n8n is behind Traefik it can’t auto-detect the public URL so it generates webhook paths using the internal hostname. Set WEBHOOK_URL=https://yourdomain.com/ and N8N_PROXY_HOPS=1 in your env vars and it should start picking up requests. Also double check the workflow is actually toggled active since test webhooks and production webhooks are separate.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.