The 30-second version
| Item | Detail |
|---|---|
| What a webhook is | An external service notifies you, so you never have to keep asking |
| What you need | A publicly reachable HTTPS URL |
| Why managed hosting helps | A dedicated subdomain and automatic SSL, and the URL never changes |
| Test vs Production | Two different URLs; production must use the latter |
| Most common sticking point | Using the Test URL, or forgetting to activate the workflow |
What is a webhook, and why does it matter
A webhook is an event notification mechanism: when a specific event happens in an external service, that service sends an HTTP request to a URL you specify, and your system handles it the moment it arrives. Compared with polling — “ask every few minutes whether there is new data” — a webhook is real-time and received passively, which is both faster to react and lighter on resources.
In n8n, a Webhook node generates a publicly reachable HTTPS URL for you. You paste that URL into an external service (a website form, Stripe, GitHub, LINE), and when the event happens that service calls the URL and your workflow fires immediately.
The key point: a webhook needs a public HTTPS URL that outside services can reach. This is exactly where RoamerHost helps — every n8n instance comes with its own subdomain and automatic SSL, so webhook URLs work out of the box and you never have to deal with domains and certificates yourself.
Step 1: create a Webhook trigger and get the public URL
- Create a new workflow, click “Add first step”, then search for and select the “Webhook” node as the trigger.
- Set the HTTP method. Form submissions normally use POST; a plain trigger can use GET.
- Set the Path, for example
new-order, which becomes part of the URL. - n8n gives you two URLs: a Test URL (for testing) and a Production URL (for live use).
Your production URL will look like this:
https://your-name.roamerhost.com/webhook/new-order
While testing, use the Test URL and click “Listen for test event” in n8n. The system waits for one external call and shows you the data it received, so you can adjust as you test. Once you go live, switch to the Production URL and remember to set the workflow to Active.
Step 2: connect the URL to the external service
Once you have the webhook URL, paste it into the external service you want to connect. The location differs from service to service; here are the usual ones:
| External service | Where to set it |
|---|---|
| Website / form tool | The “notification URL after submit / Webhook URL” field in the form settings |
| Stripe | Developers → Webhooks → Add endpoint |
| GitHub | Repository → Settings → Webhooks |
| LINE / Telegram | The Webhook URL field in the bot settings |
Once configured, trigger a real event (submit a test form, for example) and go back to n8n to see whether the Webhook node received the data. What came in appears in the node’s output panel, so you can see which fields are available downstream.
Step 3: work with the data the webhook received
Webhook data is usually JSON, and you can reference those fields directly in later nodes:
- Add action nodes after the Webhook node (writing to a database, sending a notification).
- In a field setting, click the variable button to reference data from the webhook, for example
{{ $json.body.email }}. - If the data needs evaluating or transforming, add an IF node (conditional branching) or a Set / Edit Fields node (tidying up fields).
- When you need custom logic, use a Code node and write the handling yourself in JavaScript.
A security note: a webhook URL is a door facing outwards. Use a hard-to-guess string in the Path, or enable authentication in the node settings (Header Auth, for example), so it cannot be called maliciously.
Step 4: set up and manage credentials properly
When connecting third-party services, credentials are what give n8n permission to access the account on the other side. The essentials:
- In a node that requires authorization, click “Create New Credential”.
- Pick the authorization type for that service: most large services use OAuth2 (redirect and log in to authorize), while some use an API Key or Access Token.
- For OAuth2, follow the screen to log in to the service and approve access; for an API key, generate it in that service’s admin area and paste it into n8n.
- Name it clearly (“Company Gmail”, for example) so you can tell accounts apart when you have several.
All your credentials are stored encrypted on a dedicated persistent volume, so a container restart does not lose them, and the same credential can be reused across many nodes and workflows without setting it up again.
Step 5: run things on a schedule
Not every flow needs an external trigger — some jobs need to “run themselves on a timer”, and that is what the Schedule Trigger is for:
- When creating a workflow, choose “Schedule Trigger” as the trigger.
- Set how often it runs — hourly, at a particular time each day, or with a cron expression for finer scheduling.
- Attach the action nodes that follow (fetch data every morning, compile it and send a report, for example).
- Set the workflow to Active, and n8n runs it on schedule 24/7 on RoamerHost.
| Scenario | Recommended trigger |
|---|---|
| Real-time trigger from an external event | Webhook |
| Runs regularly at fixed times | Schedule Trigger |
| Manual testing | Manual Trigger |
Step 6: install community nodes
If the 400+ built-in nodes are not enough, n8n supports installing community nodes, built by the community and covering more obscure or regional services:
- In the bottom left of the n8n editor, go to Settings → Community Nodes.
- Click “Install a community node”.
- Enter that node’s npm package name (for example
n8n-nodes-xxxxx) and confirm to install it. - Once installed, you can search for and use the new node in the node list.
Tip: community nodes are maintained by third parties and vary in quality, so check a package’s download count and how recently it was updated before installing. Because your n8n runs in its own isolated container on RoamerHost, installing community nodes cannot affect anyone else’s instance.
Troubleshooting
- Webhook not firing? Check that the workflow is set to Active and that the external service is using the Production URL, not the Test URL.
- Data arrives but the fields are empty? Check the HTTP method is right (POST/GET) and whether the data is in the body or the query string.
- Credential authorization failing? Authorize again and confirm the API permission scope on the other service is sufficient.
- Schedule not running on time? Check the time zone setting and that the workflow is active.
Your n8n has automatic restart, so even if the container has a problem it recovers by itself and schedules and webhooks are not interrupted. If something still cannot be resolved, get in touch with Support or check your instance status in the dashboard.
Summary
Once you have webhooks, credentials, schedules and community nodes under your belt, you can take n8n from “a small internal tool” to “the automation hub connecting your entire working ecosystem”. With RoamerHost’s public HTTPS URLs, automatic SSL and 24/7 operation, you can run all kinds of real-time and scheduled automation reliably without running a server. Ready? Head to the dashboard and build your next workflow.
FAQ
Q: What is the difference between the Test URL and the Production URL?
The Test URL only works while you have clicked “Listen for test event”, and it is for inspecting data as you test. Going live always means switching to the Production URL and setting the workflow to active. This is the most common cause of failure.
Q: Does the URL change after I restart the instance?
No. The dedicated subdomain is fixed, and that is the key difference between managed hosting and a tunnelling tool — with the free tier of the latter, the URL changes on every restart and the other side can no longer reach you.
Q: The other service says it cannot reach me. How do I check?
Work through it in order: is the workflow Active, are they using the Production URL, is the HTTP method right (GET/POST), and does the other side require a particular response format? Call the URL yourself with a tool first — if that works, the problem is in their configuration.
Q: Do I need to verify the sender?
A public URL means anyone can call it. If you are handling important data you should verify — the usual approaches are checking the signature the sender includes, or putting a hard-to-guess string in the URL path. An unverified webhook is an entry point anyone can trigger.
Q: Can I use this for a LINE bot?
Yes, that is a very common use. Note that LINE has a response timeout for webhooks, so processing that is too slow is treated as a failure. There is a full explanation in where to host a LINE bot.
Sources and further reading
n8n’s nodes and pricing change often; these are the primary sources to verify against:
- n8n official documentation
- n8n official pricing — cloud plans and allowances
- n8n source code and release history — the authority on license terms
Further reading
- RoamerHost managed Cal.com scheduling
- n8n AI Agent tutorial: building automation that uses tools by itself
- n8n plus NocoDB: keeping your automation data in your own hands
- Cal.com plus n8n: three things that happen automatically after a booking
- Where to host a LINE bot: the webhook cannot go offline
Want someone to build it for you?
If you would rather not put all of this together yourself, or the project is big enough that you want someone to help plan it, Roamer Tech (RoamerHost’s parent company) takes on contract work for business process automation and AI agents: