Chat Health
How we score the health of a chat and how it relates to your line's standing.
Every chat carries a health_status — the field you can check before
sending to decide what to do with the next outbound on that conversation.
While there isn’t a direct link between deliverability and chat health, it is a prediction and analysis of messaging behavior.
You’ll see it on every chat-related webhook event and on every chat read. Treat it as a pre-send gate, not as much a report.
Engagement is a strong signal
Section titled “Engagement is a strong signal”If you take one thing from this page: two-way engagement is among the
strongest signals we use, and it rolls directly
into your line’s reputation. Continuing to send messages into silence is
one of the most common reasons a conversation — and its line — slides to AT_RISK or even
CRITICAL.
So:
- Send messages built to get a reply. Lead with a question or a clear, relevant prompt.
- Let replies set your pace, and back off when they stop. See How many messages should I send? for the cadence and back-off ladder.
How to use it
Section titled “How to use it”We recommend you do whatever is best for your messaging use case, but one example could be to cache the most recent health_status.status from your webhook stream and
check it as a pre-flight before queueing each outbound:
switch (chat.health_status.status) { case 'HEALTHY': send(message); break; case 'AT_RISK': checkReplyRate(); break; case 'CRITICAL': pause(chat); break; case 'OPTED_OUT': skip(chat); // terminal — never resume sending}Acting on the status before each send is what turns the signal into delivery improvement — ultimately leading to a healthier line.
Statuses
Section titled “Statuses”status | What it means | What to do |
|---|---|---|
HEALTHY | Healthy conversation. | Send normally. |
AT_RISK | Poor engagement signals, which may lead to worsening health if current messaging patterns continue. | Slow outbound on this chat and check your reply rate. |
CRITICAL | Strong signals that messages aren’t landing well. | Pause messaging on this chat until healthy. |
OPTED_OUT | The recipient asked you to stop. | Terminal. Immediately stop messaging this chat. |
HEALTHY
Section titled “HEALTHY”The chat looks like a normal conversation. Replies are landing, delivery signals look good, and no opt-out language has been detected. No action needed.
AT_RISK
Section titled “AT_RISK”One or more soft signals suggest this chat is heading in the wrong direction. Common drivers:
- Low engagement. The ratio of recipient replies to your sends is low.
AT_RISK is a warning, not a hard stop. What to do:
- Slow outbound and vary your content. Reduce send frequency; repeated near-identical messages amplify negative signal.
- Back off if replies have stopped. Don’t hold the same cadence into silence — see How many messages should I send?.
Watch for the chat moving back to HEALTHY (good) or down to CRITICAL
(act fast).
CRITICAL
Section titled “CRITICAL”Strong signals that messages on this chat aren’t reaching the recipient the way you expect. Continuing to send is unlikely to help and may make the situation worse for the broader line.
Recommended action: Pause this chat. Re-engage only after chat becomes healthy again.
OPTED_OUT
Section titled “OPTED_OUT”The recipient sent an opt-out keyword on this chat. This is terminal: regardless of any other signals, do not send further outbound messages on this chat.
The full set of opt-out keywords:
STOP, UNSUBSCRIBE, OPTOUT, CANCEL, END, QUIT
Currently, matching is exact and case-sensitive against the inbound message.
If the recipient later sends the opt-in keyword OPTIN (same matching
rules), the opt-out clears and the chat moves back to whichever health bucket
current signals indicate.
Chat health and phone reputation
Section titled “Chat health and phone reputation”Chat health is a leading signal for your line’s reputation:
the health of the conversations on a line rolls up into the line’s overall
reputation. Many AT_RISK or CRITICAL chats on a single line
increase the chance that the line will be flagged by our systems or
carriers.
That said, chat health is not the only thing that affects line reputation. We are continuously improving our models to create a healthy ecosystem. See the Phone Reputation guide for the line-level view.
- New chats start as
HEALTHYand move toAT_RISK,CRITICAL, orOPTED_OUTas signals warrant. updated_attells you when the status last changed; use it to detect rapid status drops in your dashboards.- Switch on
health_statusaccording to the use cases above.
How many messages should I send to keep a chat healthy?
Let replies set the pace. A back-and-forth conversation can sustain a normal cadence; a one-sided one can’t. As a rule of thumb, keep at least 2–3 recipient replies flowing for the volume you send, and don’t send many messages a week into a chat that isn’t replying.
When a recipient goes quiet, slow down and eventually stop — sending harder into
silence is one of the fastest ways to push a chat to AT_RISK or CRITICAL.
Use an escalating back-off:
- No reply? Wait about a day, then send one follow-up.
- Still no reply? Wait a few days, then send one more.
- Still nothing? Send a final message that gives the recipient an easy way out — for example, asking whether they’d like to stop receiving messages — then halt all outbound to that recipient.
- Wait for a reply before sending again. When they respond, read it carefully: a clear “stop” (or an opt-out keyword) means you’re done; genuine interest means you can resume at a normal, reply-paced cadence.
Does chat health read message content or store any PII?
No. Evaluating health status runs on anonymous, aggregate signals — message volume, sends
vs. receives, response cadence, and similar metadata. Inbound text is scanned
at runtime (JIT) to detect opt-out language for OPTED_OUT signals, but
message content is never collected, stored, or retained. No PII is persisted.