Skip to main content
A chat widget puts a chat agent in front of the people already on your site or inside your app. The visitor reads a message, taps one of your buttons or types, and moves through a conversation you designed — and if the bot cannot finish the job, a person on your team takes over in the same window.

Open Widgets in the dashboard

Everything on this page starts here.

The Three Modes In One Flow

A chat widget is not one bot style. You mix three, card by card, in the same conversation:

Scripted

Buttons, questions, branches. The visitor walks exactly the paths you drew. Nothing is improvised, so nothing goes off-script.

AI

An AI assistant card hands the conversation to a model for as long as it takes — with your prompt, your functions and your data.

Human

A handoff card gives the conversation to a teammate, who replies from Contacts in the same window.
A typical flow is a scripted menu that routes most people to self-serve answers, an AI card for “something else”, and a handoff for the cases only a person can close.
This is not the same thing as a WhatsApp or Instagram chat agent, which is prompt-driven end to end. A chat widget uses an agent in flow mode, and flow mode is only supported on the widget channel.

What We Support


What The Visitor Gets

The panel opens on a home screen with your greeting, your knowledge base, and two things to do:

Chat with us

Starts a new conversation, or picks up the one they left.

Conversations

Their own past conversations, readable in full.
Everything else — the messages, the buttons, the images, when a human appears — comes from the flow you built. A New Chat button sits in the header throughout, so nobody is ever stuck. A visitor is remembered across conversations even if you never tell us who they are. If your app does know who they are, pass a uid — see Variables and identity.

How It Works

1

Build a chat agent in flow mode

Create a chat agent on the widget channel with mode Flow, then draw the conversation on the canvas. Chat agents →
2

Publish it

A flow only goes live when you publish the version. The builder blocks publishing while anything is unwired, so a half-built flow cannot reach a visitor.
3

Create a chat widget

In Widgets, create a widget of type Chat pointing at that agent. You get a widget id. Widgets →
4

Put it in your site or app

One URL, one script tag, or a few lines of Swift, Kotlin or JS. Install →
5

Watch it in Contacts

Every conversation becomes a contact with a full transcript, and a teammate can reply from there. Contacts →

Where Conversations Appear

Everything a chat widget produces lands in Contacts, not Call History.
  • A contact row is created for every conversation, even an anonymous one. Filter the channel to Widget to see only these.
  • Opening a contact shows the full transcript, the variables the flow collected, any functions the AI card ran, and — if a human is involved — who it is assigned to.
  • A teammate can reply straight into that transcript and the visitor sees it immediately, without refreshing.
  • The timeline also carries private notes and lifecycle events (transferred, ticket raised, chat ended) that the visitor never sees.
The flow’s variables are shown alongside the transcript. If your flow asked for an order id, you can read it there without scrolling the conversation.

Limits Worth Designing Around

There is no idle timer: nothing is ever sent to a visitor unprompted, so there is no “still there?” nudge and no auto-close.

Next Steps

Create a chat widget

Agent, flow, publish, widget

Card types

All fourteen cards and every field

The AI card

Prompt, model, functions, attachments, billing

Variables and identity

Templating, uid, vars, contact keys

Appearance and hours

Branding, business-hours notice, rich text

Human handoff

Availability, replying, notes, voice notes

Chat routing

Hours, away, no-reply, end-of-chat

Raise a ticket

Your own Python, run when nobody is free

Install in your app

Web, iOS, Android, React Native, Flutter

Build a flow with Claude

Describe the bot, import the JSON

Troubleshooting

When it will not load, or will not reply