ChatFlowGateUI
Open source · Svelte port of @n8n/chat

Open source, customizable chat UI for n8n chat webhooks

ChatFlowGateUI embeds a themeable, streaming-ready chat window on any site and routes every message straight to an n8n chat webhook. Tune it live, then paste in one snippet.

Features

Connects to any n8n webhook

Point webhookUrl at your Chat Trigger and every message routes straight into your workflow.

Window or fullscreen

Run it as a floating chat bubble or a dedicated fullscreen support page — one toggle.

Full copy control

Title, subtitle, greeting tooltip, input placeholder, and initial messages are all editable.

Optional intake form

Collect a name and email before the chat starts, with phone and message as opt-in fields.

Message actions & attachments

Let visitors repost or reuse messages, and upload files straight into the conversation.

Streaming & session control

Stream responses token-by-token and auto-expire idle sessions after a set number of minutes.

Custom branding

Primary color, avatar, and toggle button icon — match your product without touching CSS.

Live desktop & mobile preview

Tune every option in the playground and watch the widget update live on both breakpoints.

Embed code

Add to any page
<script src="https://ui.chatflowgate.com/loader.bundle.iife.js"></script>
<script>
  ChatflowGate.init({
    webhookUrl: 'https://your-n8n.example.com/webhook/chat',
  });
</script>

Paste this before </body> and point webhookUrl at your Chat Trigger.

Parameters

Everything ChatflowGate.init() accepts.

Required
ParameterTypeDefaultDescription
webhookUrlstringYour n8n Chat Trigger URL. Every message is sent here.
Connection
ParameterTypeDefaultDescription
widgetUrlstring'https://ui.chatflowgate.com/widget'Origin of the hosted /widget page. Only override for a self-hosted widget.
targetstring (CSS selector)'#n8n-chat'Where to mount the toggle bubble. Created automatically if missing.
webhookConfig.method'GET' | 'POST''POST'HTTP method used for the webhook call.
webhookConfig.headersRecord<string, string>{}Extra headers sent with every webhook request.
Display
ParameterTypeDefaultDescription
mode'window' | 'fullscreen''window'Floating bubble vs. a dedicated fullscreen page.
greetingMessagestringnoneProactive tooltip shown next to the closed toggle button.
greetingMessageDelaynumber (ms)1000Delay before the greeting tooltip appears.
Content
ParameterTypeDefaultDescription
initialMessagesstring[]built-in greetingBot messages shown before the visitor sends anything.
i18nRecord<lang, strings>built-in English copyPer-language title, subtitle, inputPlaceholder, closeButtonTooltip, and more.
Behavior
ParameterTypeDefaultDescription
intakeForm.enabledbooleanfalseAsk for a name and email before the chat starts.
intakeForm.askPhonebooleanfalseAdd a phone field to the intake form.
intakeForm.askMessagebooleanfalseAdd a first-message field to the intake form.
loadPreviousSessionbooleantrueResume a visitor's last conversation when they come back.
sessionTimeoutMinutesnumbernever expiresMinutes of inactivity before a stored session is dropped.
enableStreamingbooleantrueStream the bot's response token-by-token.
enableMessageActionsbooleanfalseLet visitors repost or reuse a message.
allowFileUploadsbooleanfalseLet visitors attach files to a message.
allowedFilesMimeTypesstringanyComma-separated MIME types accepted when uploads are on.
metadataRecord<string, unknown>noneExtra data sent along with every webhook call.
Appearance
ParameterTypeDefaultDescription
theme.primaryColorstring (CSS color)built-in brand colorAccent color for the toggle button and header.
theme.avatarUrlstring (image URL)noneBot avatar shown in the header and messages.
theme.toggleButtonIconUrlstring (image URL)chat iconIcon shown on the closed toggle button.
themePreset'default' | 'modern' | 'business' | 'classic' | 'retrofuturist' | 'glassmorphic' | 'paper' | 'neobrutalist''default'Named shape preset — radius, borders, shadows, fonts.

Powered by

ChatFlowGate

A custom 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.

Open source. Built on n8n and Svelte.