Chatnode · for n8n
Your n8n chat,
secured and multi-tenant.
A white-label chat frontend and security gateway for n8n Chat workflows. Keep the webhook server-side, rate limit every visitor, gate access with signed sessions, and hand clients a widget that embeds with one script tag.
- Works with n8n Cloud and self-hosted
- Your webhook never reaches the browser
- Chat content is never stored
Embed any bot
<script src="https://www.chatnode.app/embed.js" data-bot="BOT_ID" defer></script>Chatnode Support
Online
Hi! I'm the Chatnode demo. Ask me about pricing, security, or how this connects to your n8n workflow.
Protected by Chatnode
Live demo · a real bot through the real gateway
The problem
Why a raw n8n chat trigger is a liability in production
n8n is excellent at building the assistant. It was never meant to be the public front door for one. Put a raw trigger on a live site and three things are true on day one.
The webhook is in the page source
n8n's own chat widget puts your production webhook URL in client-side JavaScript. Anyone can open devtools, copy it, and post to your workflow all day from outside your site.
Nothing stops a bot spending your model budget
A raw trigger has no rate limit. One script can run your workflow thousands of times an hour, and every run bills you for whatever model sits behind it.
No access control, no tenancy
There is no origin check, no session, and no way to separate one client's bot from another's, which makes handing a chatbot to a customer awkward and risky.
How it works
One hop, and everything gets checked on the way through
1. Origin checked
The embed loader mints the session from your page, so the real parent origin is validated against the bot's domain allowlist.
2. Caller identified
An API key, a signed-in workspace member, or a visitor token bound to that one bot. Nothing else gets through.
3. Limits applied
IP bans, country rules, per-IP and per-session buckets, spam traps, and the message allowance, in that order.
4. Forwarded and streamed
Only then does the request reach your n8n webhook, and the reply streams back to the widget as it is written.
Built for agencies
Security and tenancy, not just a nicer chat box
Hidden webhook
The n8n URL is a server-side database field. The browser only ever talks to your Chatnode endpoint, so the workflow address is never exposed and cannot be scraped.
Token-bucket rate limiting
Per-session and per-IP buckets, tuned per bot, answering with 429 and Retry-After. The client IP is read from a trusted proxy hop, so a forged X-Forwarded-For cannot mint a fresh quota.
Signed, bot-bound sessions
Visitors chat with an HMAC-SHA256 token tied to one bot and expiring in 24 hours. It is issued only after the parent page origin is checked against that bot's domain allowlist.
SSRF protection
Webhook targets are DNS-resolved and refused if they point at loopback, private, link-local, or cloud metadata addresses. Redirects are never followed.
Abuse controls
Org-scoped IP bans enforced before any work, per-bot country allow and block lists, and hidden spam traps on the widget forms that a real visitor cannot see or tab to.
Multi-tenant workspaces
Bots, sessions, keys, bans, and members all belong to an organization, and every dashboard read and write is scoped to it. Org-scoped API keys cover server-to-server chat.
No chat content stored
Message text is never written down. Chatnode keeps one row per session with IP, coarse location, browser, and a message counter, which is what the analytics are built from.
White-label widget
One script tag. Per-bot colour, logo, greeting, prompts, RTL, consent screen, and custom CSS, with the Chatnode badge removable on any paid plan.
Pricing
Simple, predictable pricing
Every plan includes a monthly message allowance. Top-up credits cover anything past it and never expire.
3 paid tiers, billed monthly through Stripe. Cancel from the billing portal at any time.
FAQ
Frequently asked questions
How does Chatnode connect to my n8n workflow?
Paste your n8n Chat Trigger production webhook URL into the bot. Chatnode stores it server-side and forwards each message as a standard sendMessage payload with the session id and chat input, then streams the reply back to the widget.
Does it work with n8n Cloud and self-hosted n8n?
Both, as long as the instance is reachable over the public internet. A self-hosted n8n on localhost or a private LAN address will be refused on purpose: the SSRF guard blocks loopback, private, link-local, and metadata addresses.
Does the gateway slow replies down?
It adds one proxied hop. Streaming workflows are passed through as they produce text, so the time to the first word tracks your workflow and model rather than the proxy. Functions run in the same region as the database to keep that hop short.
Is my chat content stored anywhere?
No. Message text is never persisted. Chatnode records session metadata only: IP address, country, region and city from edge headers, parsed browser, OS and device, and a message count. In lead capture mode it also stores the contact details the visitor submitted.
What happens when someone abuses a bot?
They hit a 429 with Retry-After before the request reaches n8n. You can also ban an IP for the whole workspace, fence a bot to specific countries, and the hidden spam traps drop automated form and chat posts without spending a message.
Can I call it from my own backend?
Yes. Create an org-scoped API key and post to the chat endpoint with an X-API-Key header. Keys only reach bots inside the same organization.
Put a gateway in front of your workflow
Create a workspace, paste a webhook URL, and embed the widget. The free plan needs no card.