Webhook Chat
WordPress chat plugin powered by n8n webhooks
Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/fphxgallery/n8n-webhook-chat/archive/refs/heads/main.zipA WordPress plugin that embeds a fully customizable chat widget connected to any webhook endpoint — built for n8n AI agent workflows, but compatible with any HTTP backend.
Features
- Floating launcher — a corner button that opens a popup chat window
- Inline iframe mode — embed a self-contained chat window anywhere via shortcode
- Connects to any webhook — point it at an n8n webhook, a custom API, or any HTTP endpoint
- Session IDs — auto-generated per-conversation session IDs, passable as
{session_id}in request body fields - Dot-notation response parsing — read nested JSON replies like
data.message.text - Markdown & URL linkification — bot replies support
[label](url)links and bare URLs - Typing indicator — animated dots while waiting for a response
- Per-page visibility rules — restrict the widget to specific URL paths
- Fully styled from the admin panel — colors, fonts, size, position, avatar, and more
- No external dependencies — no npm, no build step, vanilla JS + PHP
Requirements
- WordPress 5.8+
- PHP 7.4+
- An HTTP webhook endpoint (e.g. an n8n workflow with a Webhook node)
Installation
- Clone or download this repo into
wp-content/plugins/webhook-chat/ - Activate the plugin in Plugins → Installed Plugins
- Go to Settings → Webhook Chat and enter your webhook URL
n8n Setup
- In n8n, create a new workflow and add a Webhook node
- Set the method to POST and note the webhook URL
- Add your AI agent logic (e.g. OpenAI, Anthropic, or a custom chain)
- Return a JSON response with a reply field, e.g.:
{ "reply": "Hello! How can I help you?" } - Paste the webhook URL into Settings → Webhook Chat → Webhook URL
n8n Session Tracking
To maintain conversation context across messages, pass the session ID through to your n8n workflow. In Extra Body Fields, add:
action=sendMessage
sessionId={session_id}
Then use sessionId in your n8n workflow to look up or store conversation history.
Configuration
Navigate to Settings → Webhook Chat in the WordPress admin. Settings are organized into four tabs:
Webhook
| Setting | Default | Description |
|---|---|---|
| Webhook URL | (empty) | The endpoint that receives chat messages |
| HTTP Method | POST |
POST or GET |
| Timeout | 60 |
Seconds to wait for a response (10–300) |
| Extra Headers | (empty) | One per line: Header-Name: value (e.g. Authorization: Bearer token123) |
| Request Field | chatInput |
JSON key used to send the user's message |
| Response Field | reply |
JSON key to read the bot reply from. Supports dot notation: data.text |
| Extra Body Fields | (empty) | Additional key=value pairs sent with every request. Use {session_id} as a placeholder |
Appearance
Colors (primary, user bubble, bot bubble), font size, border radius, window width/height, and position (bottom-right, bottom-left, bottom-center).
Content
Chat title, subtitle, welcome message, input placeholder, send button label, launcher icon (chat, support, or bot), optional launcher label, and bot avatar URL.
Behaviour
| Setting | Default | Description |
|---|---|---|
| Display Mode | launcher |
launcher = floating button; iframe = always-open embed via shortcode |
| Iframe Height | 600 |
Height in px when using iframe mode |
| Open on Page Load | off | Auto-open the chat window on arrival (launcher mode only) |
| Show Timestamps | on | Show time below each message |
| Show Avatar | on | Show bot avatar beside messages |
| Typing Indicator | on | Show animated dots while waiting for a response |
| Restrict to Pages | (empty) | One URL path per line (e.g. /contact/). Leave blank to show on all pages |
Shortcode
Use [webhook_chat] to embed the chat widget inline on any page or post.
In iframe display mode, this renders a self-contained `
Releases
2 releases.
These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.