CHURN ANALYSISCRISP

How to catch churn signals in Crisp chats

Catch churn signals in Crisp live chat: segments, Automatic Triage, workflows, shortcuts, 1-5 star ratings, people data and webhooks, step by step.

Published 5 min read

Live chat is where churn signals are fastest and easiest to miss. A customer opens the chat widget, types “is there a way to export everything before I go?”, gets an answer in two minutes, and the conversation is resolved. Nobody marks it as a warning. A month later the subscription is cancelled.

This guide shows how to catch those moments in Crisp while they happen and keep them countable afterwards: labelling chats with segments, automating that with Automatic Triage and workflows, giving agents the right context with people data, and reading ratings. It relies on Crisp’s own help center and developer docs: segments, Automatic Triage, workflows, message shortcuts, custom data, ratings, Analytics, Hugo topic detection and the web hooks reference (all accessed November 2026).

Why chat needs its own approach

Compared with email tickets, chats are short, informal and often anonymous until the visitor is identified. Three consequences:

  1. The signal is often one sentence. “Do you have a cheaper plan?” in the middle of a chat about something else.
  2. Agents need context during the chat, not after. Knowing the visitor is a paying customer on the annual plan, renewing next week, changes how you answer.
  3. Chats close quickly. If nothing is labelled before the conversation is resolved, it is lost in the history.

So the setup below does two things: it gives agents context in the conversation, and it labels churn-related chats as they come in.

Give agents context with people data

Crisp separates conversation (session) data from contact (people) data (custom data). Session data belongs to one conversation; people data stays on the contact profile across conversations.

  • From your website, the chatbox JavaScript SDK sets session data with $crisp.push(["set", "session:data", ...]). Crisp advises never putting secrets, access tokens or sensitive account data in frontend session data.
  • From your backend, the REST API updates people data. Crisp distinguishes Update People Data, which merges keys into the existing data, from Save People Data, which replaces the whole object.

For churn work, a handful of people data keys is enough: plan, billing_interval, renewal_date, signup_date and customer_id. Push them from your backend when the subscription changes. Do not push card details or anything you would not want an agent to read.

Label churn signals with segments

Crisp segments are simple labels you can attach to conversations or contacts. Crisp recommends them for simple classification and custom data for richer key/value details. They can be set manually by agents, from your website with the JavaScript SDK, through the REST API, or by workflows and Automatic Triage.

A small set of conversation segments for churn:

Segment Use it when the customer…
churn-cancel asks how to cancel or says they are cancelling
churn-price asks for a discount or a cheaper plan, or says it is too expensive
churn-export asks to export data or delete their account
churn-competitor mentions comparing or moving to another tool
churn-bug reports a blocking problem for the second time or more

Conversation segments can be used in Inbox custom filters, which Crisp says are available on all plans. Contact segments feed advanced contact filters, which Crisp lists for the Essentials and Plus plans. Crisp Analytics also counts segments added to conversations.

Automate the labelling

Automatic Triage

Crisp’s Automatic Triage applies rules when a conversation enters the Inbox. Each rule pairs filters with an action, such as adding segments or writing custom data, and rules run in an order you control. Crisp lists it on all plans, under Settings > Inbox Settings > Automatic Triage.

A first rule set:

  1. If the message contains “cancel”, “unsubscribe” or “close my account”, add churn-cancel.
  2. If it contains “too expensive”, “cheaper” or “discount”, add churn-price.
  3. If it contains “export” together with “account” or “data”, add churn-export.

These are filter-based rules, so they will make mistakes in both directions. Agents should correct segments during the chat; that is part of the job, not an extra.

Workflows

Crisp workflows can set conversation segments as an action and react to a Segments Updated event. That lets you, for example, start a workflow when churn-cancel is set, to give the customer the direct link to cancel in your app. Make the cancel link the first thing the customer sees, not something behind questions.

Crisp’s workflow guide marks the older MagicReply AI block as deprecated; current docs point to Hugo, Crisp’s AI Agent. Hugo has a topic detection feature (AI Agent > Automate > Topic detection) that classifies what conversations are about. If you use Hugo, compare its topics with your segments now and then: they answer the same question from different directions.

Answer consistently with shortcuts

Crisp message shortcuts are saved replies that agents insert by typing ! in the composer. They are created under Settings > Inbox Settings > Message Shortcuts, can include placeholders such as custom data with fallback values, and are available from the Mini plan. Useful shortcuts for churn moments:

  • !cancel: the exact steps or direct link to cancel, and when access ends.
  • !export: how to export data. Answer this fully, even if it suggests the customer is leaving. Making it hard is not a retention strategy.
  • !pause: what a pause is and how to request one, for customers who mention a break.
  • !plans: the smaller plans, for customers who say the price is the problem.

Keep promises out of shortcuts unless your billing system can keep them.

Read ratings, then close the loop

Crisp ratings go from 1 to 5 stars (Analytics). According to the ratings article, when ratings are enabled Crisp emails a rating request one hour after a chat ends, a new rating on the same conversation replaces the previous one, and you can filter contacts by rating to follow up. Analytics shows an overall average, an average for conversations handled only by automation or AI, a trend, and a list with comments and assigned agents.

For real-time follow-up, Crisp’s web hooks include a session:sync:rating event (Crisp lists it from the Essentials plan). A small integration can post every rating of 1 or 2 on a conversation with a churn- segment to your team channel.

A weekly review

  1. Filter the Inbox on each churn- segment for the past week.
  2. Read the low-rated chats and their comments.
  3. Export or pull the conversations through the API, with the contact’s email and your customer_id.
  4. Match them to your billing data: who cancelled, downgraded or had a failed payment afterwards.
  5. Once a month, check which segments actually came before cancellations. Drop the ones that never do. Our guide on finding what predicts churn covers the method.

Doing this with NoChurn

NoChurn’s Crisp connector is read-only: it reads conversations and never sends messages, sets segments or changes contacts in Crisp. Conversations are matched to your customers by email; doubtful matches are suggested for you to confirm and never merged automatically. Matched chats feed the churn score (0 to 100) and the churn drivers view, and are kept as dated, verbatim evidence for chargeback responses on Stripe and Braintree, which NoChurn drafts with AI and sends only after you review them. Segments, triage rules, workflows, shortcuts and ratings stay in Crisp. See NoChurn + Crisp.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Stop leaking revenue.

  • Free until $300 MRR
  • No card needed
  • Live in 10 minutes
  • Never a cut of what we recover