What is the difference between n8n's test and production webhook URLs?
The test URL works only while the workflow is open in the editor and listening for a test event, and it shows the incoming data on the canvas. The production URL works once the workflow is published, runs without the editor, and records each run in the Executions tab instead of on the canvas.
Both URLs belong to the same Webhook node, so it is easy to think they behave the same. They do not. Most "it worked in testing but not live" problems come from this one difference, so it is worth understanding before you give either URL to another system.
When does each URL work?
Click "Listen for Test Event" in the editor to arm the test URL. The test URL accepts a request only while that listener is active. The production URL accepts requests whenever the workflow is active.
That gives three practical rules. First, arm the test listener before you send the test, or the request is rejected. Second, do not expect the production URL to behave like the test: it does not show the incoming data in the editor, so you must read the Executions tab. Third, if the workflow is inactive, the production URL gets no run at all, even though the test URL still works while you have the editor open.
Which URL should the sending system use?
The sending system should always use the production URL. The test URL is for building the workflow and is not meant to stay in a live system.
Give a form tool or booking platform the production URL once the workflow is published and tested. If a live system keeps the test URL, the integration stops working the moment you close the editor. Keep a note of which URL each sender uses, so a later change to the workflow does not break a system nobody remembers connecting.
How do you check that a production run happened?
Open the Executions tab. Each production run appears there with its status, its time and the data it received, and failed runs show the step that stopped.
- Success. The run completed. Check the output of the last step to confirm the record reached the destination.
- Error. A step failed. The error names the step, which tells you whether the cause is the incoming data or a connection.
- No run. The request never reached the workflow. Check the method, the URL, the workflow's active state and the sender's log.
Set an error workflow or a notification for failed runs. A webhook that quietly stops working is the most expensive kind of failure, because nobody sees it until a lead goes missing.
Where does this fit in a larger n8n build?
The test and production split is the same in every n8n build. What changes is how many webhooks a flow has and how much checking each one needs.
Our n8n automation service sets up each webhook with its own test, production URL record, authentication and error alert, so the team can see which system sends what. For the first webhook setup step by step, read how to set up an n8n webhook. For the GoHighLevel side of the same question, see how GoHighLevel inbound webhooks work.
Related questions and services
- How do you set up an n8n webhook?
- What is a Zapier Catch Hook?
- Why is my GoHighLevel inbound webhook not firing?
- How GoHighLevel inbound webhooks work, step by step
- n8n automation service
- Zapier automation service
Sources and further reading
- n8n documentation: Webhook node (test and production URL behaviour, checked 2026-10-04)
n8n's interface and limits change between versions. Confirm on your instance before you rely on a specific label.