Developer documentation
Everything you need to embed Way2Chat on your site and connect it to your tools β the chat widget and outbound webhooks. You don't need an account to read these docs.
Introduction
Way2Chat is a multi-tenant live-chat platform. Each website you add in your dashboard gets a unique widget key that embeds a chat bubble for your visitors. Operators and agents reply from the dashboard, and paid plans can send new-chat events to your own tools with outbound webhooks.
- Base URL β
https://way2chat.com - Widget key β per website, found under Dashboard β Websites.
- Webhook URL β set under Settings β Integrations on paid plans.
Install the widget
Copy this snippet and paste it just before the closing </body> tag on every page of your site. Replace YOUR_WIDGET_KEY with the key from your Websites page.
<!-- Way2Chat live chat --> <script>window.Way2ChatConfig = { key: "YOUR_WIDGET_KEY" };</script> <script src="https://way2chat.com/widget/widget.js" async></script>
The chat bubble appears automatically. It's a single lightweight script β no framework required, and it loads asynchronously so it won't block your page.
Widget configuration
The look and behaviour of the widget (colour, greeting, support name, position, avatar, office hours) are configured per website in Dashboard β Chat Widget β no code changes needed; updates go live instantly.
The only required embed option is the key:
| Option | Type | Description |
|---|---|---|
key | string | Required. Your website's widget key. |
Visitor verification
Before a visitor can chat, they enter their email and confirm a 6-digit code sent to that address β no passwords, no account creation. The code is delivered using your own outgoing email (SMTP), configured per account or per website in Settings, so it arrives from your brand. Until SMTP is set, the widget can't send codes.
Authentication
REST API requests authenticate with an API key passed as a Bearer token. Keys are scoped to specific permissions (for example conversations, stats).
Authorization: Bearer YOUR_API_KEY
Example with cURL:
curl "https://way2chat.com/api/v1/stats.php" \ -H "Authorization: Bearer YOUR_API_KEY"
List conversations
GET Returns conversations across your websites. Requires the conversations permission.
Query parameters
| Param | Type | Description |
|---|---|---|
status | string | open, assigned, or closed. Omit for all. |
website_id | int | Only conversations for one website. |
since | datetime | ISO date β only conversations updated after this. |
limit | int | 1β100 (default 50). |
offset | int | For pagination (default 0). |
Example response
{
"success": true,
"limit": 50,
"conversations": [
{
"id": 1421,
"status": "open",
"satisfaction": null,
"website_name": "My Store",
"website_domain": "mystore.com",
"created_at": "2026-07-10 14:02:11",
"last_message_at": "2026-07-10 14:09:44"
}
]
}
Statistics
GET Aggregate conversation stats for a date range. Requires the stats permission.
| Param | Type | Description |
|---|---|---|
range | int | Number of days to summarise (default 30). |
Example response
{
"success": true,
"range_days": 30,
"generated": "2026-07-11T09:00:00+00:00",
"stats": {
"conversations_total": 312,
"conversations_open": 18,
"conversations_assigned": 7
}
}
Errors & limits
All responses are JSON. Success responses include "success": true; errors return an appropriate HTTP status with "success": false and an error message.
| Status | Meaning |
|---|---|
400 | Bad request β a parameter is missing or invalid. |
401 | Missing or invalid API key. |
403 | The key lacks the required permission. |
429 | Rate limited β slow down and retry. |
Send requests server-side. The API is read-only today (conversations and stats); write access is handled through the dashboard.
Outbound webhooks
Way2Chat can POST an event to a URL you control whenever a new chat starts β perfect for Slack notifications or a Zapier Catch Hook. Set your webhook URL in Settings β Integrations (available on paid plans).
The JSON payload works for both Slack (renders text) and automation tools (structured fields):
{
"text": "New chat on My Store from jane@example.com",
"event": "new_conversation",
"website_id": 12,
"timestamp": "2026-07-11T09:00:00+00:00"
}
It's a fire-and-forget POST β return any 2xx quickly. Leave the field blank in Settings to disable it.
Support
Questions about installing the widget or connecting webhooks? Use the chat on this page, or see Contact for the right team.