Practical agency guide

How to deliver an n8n chatbot without exposing the workflow webhook.

A browser widget is public code. A production Chat Trigger URL should not become public configuration. The delivery layer between them should validate the website, bound the request, protect the destination, and give the client evidence that the service works.

1. Prepare the production n8n Chat Trigger workflow

Start with an active production workflow that accepts chat input and returns a supported response field such as output, text, or message. Test the workflow directly before adding a delivery layer. This separates workflow problems from website or relay problems.

Use the production webhook, not a temporary editor test URL. Keep that URL server-side.

2. Put a protected relay in front of the webhook

The website should call a public bot identifier on your relay. The relay should resolve that identifier to the protected destination only after validating the request. It should reject private, loopback, link-local, metadata, and unsafe redirect destinations so the configured webhook cannot become a server-side request forgery path.

Client websiteProtected relayPrivate n8n workflow

3. Allow exact website origins

Declare each approved origin with its full scheme and host, for example https://www.example.com. Do not use wildcard origins for client chat. Treat the origin check as one boundary, not as visitor authentication. Chat visitors do not need accounts.

4. Bound and test the public request

Set request-size limits, message-length limits, concurrency limits, timeouts, and rate limits before forwarding anything. Do not follow redirects to an unvalidated destination. Run a synthetic message through the same public path the website will use, then verify the response and timing.

5. Brand and embed the widget

Configure the title, greeting, placeholder, launcher, starter prompts, colors, position, and theme. Preview on desktop and mobile. Then add the generated script to the approved client website and repeat the synthetic test from that exact origin.

6. Give the client evidence, not admin access

Report conversation starts, successful messages, failures, and response time without exposing webhook configuration or owner controls. Use a revocable report link. Store message bodies only when the customer has deliberately enabled an appropriate retention window.

Where BotLatch fits

BotLatch packages this delivery boundary into one self-hosted agency installation: protected relay, exact origins, branded widget builder, synthetic test, aggregate usage, and revocable client reports. The customer's installed BotLatch host and configured downstream services carry chat traffic. BotLatch.com does not.

Purchasing does not create a centralized account. After installation, the buyer visits /setup on that installation to create its single local owner account. Additional registration then closes.

BotLatch is an independent product. It is not affiliated with or endorsed by n8n.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.