Webhook Node Always Defaults to Test URL Despite Active Workflow

Hey n8n team,

I’m encountering an issue where my Webhook node continues to use the test URL (/webhook-test/) even though the workflow is active and properly configured.

Environment:

  • n8n version: 1.98.2
  • Deployment: Docker
  • Domain: custom domain over HTTPS (with port 5678 exposed)
  • N8N_WEBHOOK_URL is correctly set in the environment (e.g. https://<my-domain>)
  • Workflow is active and correctly receives test payloads
  • The executionMode in webhook data still shows "test" even when hitting the production URL (/webhook/...)

What I’ve tried:

  • Restarted Docker container after updating .env and docker-compose.yml
  • Verified all environment variables via docker exec
  • Rebuilt the workflow manually
  • Confirmed the external service (e.g., Slack) points to the production webhook URL

Still, the Webhook URL recorded in logs always shows .../webhook-test/..., and the mode is stuck in test.

Is there a cache, known bug, or configuration that might cause this behavior?

Thanks for your help!

Hi,
When you click on the web hook node it always defaults to showing the text url. You just need to click on the production tab to show the prod link or just remove the -test from the url

Let me know if that’s your issue

Hey,
Thanks for your reply.

Again, the issue is that even after I’m checking the Production button, it is not being saved and automatically changing back to test mode

what about your environment configration in compose?

What do you mean by changes back?

That is just displaying the links, not setting the mode. If it is active (toggle button on the top right ) then it will work from the production link

Hey,
this is my docker compose configuration:

version: “3.7”

services:
n8n:
image: n8nio/n8n
restart: unless-stopped
ports:
- “5678:5678”
volumes:
- ./n8n-data:/home/node/.n8n
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=changeme
- N8N_HOST=n8n.mydomain.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_WEBHOOK_URL=https://n8n.mydomain.com
- N8N_SECURE_COOKIE=false

Hey,

As you can see in the screenshot the Toggle is active.


The "Test URL is selected. the issue is it is working only on "Test mode and not production mode

As I said, it always shows the test URL first that’s just displaying the URL.

Can you use postman or Bruno to send a test post request to your web hook then show a screenshot of your executions?

I had a screenshot of what you have in postman/Bruno as well

If you don’t want to use an API client, you can temporarily change it to a get request and then just put the web hook URL in the browser and it will work like that as well (only with get requests though)

when you press the production url in editor tab, what url that given to you? it is still have -test slug or not?

I have the same issue. When I toggle to the Production tab, the -test disappears as expected. However, as soon as I click away and return, it is automatically defaulted back to the Test toggle and the -test has returned. Similarly, I can’t get executions with post call webhooks to run in production, only in test scenarios when I actively click Listen first. But, I need this to work automatically in production as well.

So I made this same mistake and it’s a little confusing but both @joe2 and @Ellor_Sofer. The functionality of it switching back and forth when you click the webhook trigger is fine. it actually doesn’t change anything. What changes is when you activate your workflow.

When you activate the workflow, the production URL becomes active. So copy the production URL and activate the workflow. Then send your POST to the production URL and you should get your trigger you are looking for.

This is exactly what I’ve just done.

I attempted to reach the production endpoint (which I’ve already updated in Slack to point to the correct production webhook URL), but it’s not working. No logs are appearing in the Execution tab

I’ve checked the container logs and this is the error I found:

I can see this is known issue:

I still don’t find a solution

Hey,
It has been fixed after I restarted the nginx service in my EC2 container.

The URL of the prod website has been updated, and it worked.
thanks anyone