What happens on an inbound
Every inbound message runs through a small decision tree before it appears in the inbox + triggers automation. Knowing this order helps you debug why a flow / AI / OOH reply did (or didn’t) fire.
Layer 1 — Always
For every message, regardless of type:
- The message arrives from the channel provider (Meta, Telegram, your webchat widget).
- It’s saved into the conversation thread.
- If it’s from a new contact, a contact profile is created.
- The dashboard is updated in real time — no refresh needed.
Layer 2 — Active flow
If the conversation has an active flow waiting for input, the runtime tries to advance it. Which reply advances depends on what the previous block asked for:
| Block that asked the question | What advances it |
|---|---|
| Reply Buttons block | A button tap → wired socket target |
| WhatsApp List block | A row tap → the row’s wired target |
| Template message (QUICK_REPLY buttons) | A button tap → wired target |
| Address message / Native flow | The submitted form |
| Location request | The customer’s pinned location |
| User Input block (text) | Any text reply → saved to contact, advances on “On answer” socket |
| Booking — offer slots | The picked slot |
| Booking — cancel picker | The picked booking |
| Image / video / audio / document | Currently not handled — flow doesn’t advance |
Media replies (image, video, doc, audio) currently don’t advance a flow. If the customer sends a screenshot while a User Input block is waiting, the flow stays parked.
Layer 3 — Keyword rules
For TEXT inbounds, every active keyword rule on the agency / client is checked:
- Match modes —
contains,exact,starts_with - Actions — start a flow, send a template, send text, add a tag, mark opted-out, transfer to an agent, change status, and more
- Trigger frequency — every inbound (default) / first match per contact / once per conversation
- Active window — always / business hours only / outside business hours only
A built-in compliance pack (STOP, UNSUBSCRIBE, OPT-OUT) is offered as a
one-click install so opt-out keywords are wired up by default — contacts who reply
with these are excluded from future broadcasts and drips.
Layer 4 — Chat AI
If Chat AI is enabled for this conversation and its mode is set to AI, the AI generates a reply using your configured persona, business description, FAQ knowledge, and guardrails.
- Replies below the confidence threshold get suppressed; the conversation flips to Human mode so an agent can pick it up.
- Configured auto-handover phrases (e.g. “talk to human”, “agent please”) flip to Human mode regardless of confidence.
- Reply delay is randomised within a configured range so the AI doesn’t feel instant-bot-fast.
Chat modes per conversation:
- Human — agent replies manually; AI silent
- AI — every inbound triggers an AI reply
- Flow — an active flow handles the conversation
- Hybrid — AI drafts, agent reviews + sends
Layer 5 — Fallbacks
If none of the above produced a reply:
- Outside business hours — if the message arrived outside the configured business hours, your outside-hours setting fires: silent, send a configured text, or have the AI respond.
- Channel default reply — each channel can have a default reply (text, AI, or none). This is the last automatic response.
- Silent — the message sits in the inbox waiting for a manual reply.
Putting it together
The shortest path: customer types “Hi” → message saved (Layer 1) → no active flow (Layer 2) → keyword “Hi” matches → starts the Welcome flow (Layer 3) → flow sends the welcome template → customer sees it.