Skip to content
← Processes

Catch churn signals and answer them

Usage falling away shows up in analytics before anyone notices on a call, and the drop is read against the account's history into one reactivation email.

Churn is visible in the product months before it is visible in a conversation. An account stops running the weekly export, then stops inviting new users, then renews out of inertia once and not twice. None of that reaches the team whose job it is to notice, because noticing means someone opening an analytics dashboard for every account every week and comparing it to what they remember.

The data is complete and already collected. What is missing is the comparison, and the discipline to run it against a baseline that does not fire every summer.

What you get

A weekly list of accounts whose usage is genuinely falling, each with the reason visible in the data and one email written about what they specifically stopped doing.

The part worth getting right

The comparison window is the entire difference between a list people act on and a list people mute. Thirty days against the previous thirty means every account with a European August looks like it is churning, and the first week of September produces sixty alerts that all resolve themselves. Thirty days against the preceding ninety absorbs the holiday and still catches a genuine three-month slide, which is the shape actual churn has.

Measuring breadth of features separately from volume catches the case volume hides. An account whose event count is stable but which has narrowed from six features to one is in more trouble than an account that is down twenty percent across the board, because it has quietly become dependent on a single thing it could replace. Averaged into one health score, that account looks fine.

Name the specific behaviour. "You have not used the weekly export since March" invites either "we switched to doing it in the warehouse" or "it broke and we gave up", and both are worth knowing. "Your usage has declined" invites nothing, because there is no question in it, and it tells the recipient that somebody ran a report instead of looking at their account.

The prompt

The real prompt behind the steps above — detailed enough that an agent with a people-search tool, email/phone enrichment, and CRM access can run it as written.

# Catch churn signals and answer them

You have access to product analytics, a CRM, and email. Run this
weekly across **[active paying accounts]**.

## 0. Set up (skip if you're already connected)

If you don't already have live tool access for this, connect it
first. This prompt is only as real as the tools behind it:

1. Create a free account at app.tulina.ai.
2. Add Tulina's MCP server to your assistant: https://mcp.tulina.ai/mcp
3. In Tulina, connect your own API keys for the tools this
   prompt uses: your product analytics, your CRM, and your email.

Once connected, your assistant has real tool access and the rest of
this prompt runs as written.

## 0b. Already on Tulina? Three things around the run

An account and the MCP server are not the whole setup. Two of these come
before the run below and one after it, and together they turn this from a
one-off answer into a process your workspace keeps:

1. **Activate this process's connectors first.** Call
   `oto_connector(op="list")`, match it against the tools named in step 3
   above, and `oto_connector(op="select", name="...")` every one that
   isn't active yet. Selecting a connector does not mount its tools in the
   conversation you're already in — reach them through `oto_call` for this
   run, or open a fresh conversation once they're all on.
2. **Attach the work to an existing project.** `oto_project(op="list")`
   shows your active org's projects: pick the one this work belongs to
   rather than opening another, and keep its id. The project is where this
   process, the tables it writes to and the connectors it uses hang
   together.
3. **When the run is done, save it as a process — with its graph.** Write
   the body with `oto_procedure(op="set", ...)`, then attach it with
   `oto_project(op="link", project_id=..., target_type="procedure",
   target_ref="<your slug>")`. The body has to carry a drawing: read
   `oto_guide(op="read", slug="procedure-flowchart")` and follow it
   exactly — ONE untagged fenced block in that grammar, opening with the
   trigger and a quoted example of what you'd type to start a run. Tulina
   parses that drawing back into the graph it renders as the process's
   default view, which is what makes it come out in the same style as
   every other process in the app; a drawing the grammar can't read falls
   back to raw characters instead. Saving a process needs org-admin
   rights — without them, hand the finished body to someone who has them.

The hard part is not detecting a drop. It is distinguishing a drop
that means something from the ordinary noise of a business that takes
holidays.

## 1. Measure the decline properly

For each account, compare the last 30 days of activity against the
preceding 90, not against the previous 30. A month-on-month comparison
turns every August and every Christmas into a churn alert, and after
two of those nobody reads the list.

Measure three things separately, because they mean different things:

- Active users. A fall here is an adoption problem.
- Events per active user. A fall here means the people still using it
  are doing less with it, which is usually worse.
- Breadth of features used. Narrowing to a single feature is the
  clearest early signal there is.

Flag an account when any of the three has fallen by more than 30% and
the account has more than a trivial baseline. Under that baseline the
percentages are noise.

## 2. Rule out the boring explanations

Before treating a drop as a signal, check the explanations that are
not churn:

- Seasonality. Compare against the same period last year where you
  have it.
- A known outage or a release that changed how events are recorded. A
  renamed event looks exactly like abandonment.
- Seat changes. Fewer users because they removed seats is a
  contraction, which is a different conversation from disengagement.

Anything explained here is dropped and counted, not emailed.

## 3. Read the account's history

Pull the record: plan, renewal date, owner, support tickets, and the
last contact of any kind. Two things change what happens next.

If the renewal is inside ninety days, this is not an email. Flag it
for the account owner to call, and say why.

If they raised a support ticket that went unresolved shortly before
the decline started, that is very likely the cause. Say so plainly in
the handover; do not write a reactivation email that ignores the
complaint that caused the problem.

## 4. Write one email about what they stopped doing

One email, to the person who was most active before the decline rather
than to the billing contact.

It has to name the specific behaviour. "We noticed you have not used
the weekly export since March" is a sentence only someone reading the
data could write. "We noticed you have been less active" is a sentence
anyone could write about anyone, and it reads as automated because it
is.

Then one question about what changed, with a low cost to answering. No
discount, no feature pitch, no calendar link. The email is a question,
not a save attempt.

Draft it. Nothing sends to a paying customer without a person reading
it first.

## Output

Report: accounts measured, accounts flagged, how many were explained
away and by what, how many were escalated to a call because of an
imminent renewal, how many had an unresolved ticket preceding the
decline, and drafts written.

Questions about this process

The comparison is the last 30 days against the preceding 90, not against the previous 30, and seasonal patterns are checked against the same period a year earlier. A rolling baseline absorbs holiday dips that a month-on-month comparison turns into alerts.

That is checked before anything is written, and when the timing lines up it is stated plainly in the handover. Sending a cheerful reactivation email to a customer whose unresolved complaint caused the decline makes the situation worse.

Because the person who stopped doing something is the one who can say why. The billing contact frequently has no view of daily usage and will forward the question, which adds a week and loses the specifics.

No. Every email is drafted and held. These are paying customers, and the cost of one badly judged automated message to an account already drifting is higher than the cost of a person spending a minute reading it.

Related processes

  • Prepare for a customer call

    Before the call, the last conversations, the account's state, how the product is actually being used, and where their requested features stand, in one brief.

  • Brief every cold call before it starts

    Every account on the call list gets a note before anyone dials, carrying the signals found on it, what the lead has said publicly, and one opener grounded in both.

  • Build a target list from a sentence

    Describe the companies you want in one sentence, and get them sourced, scored on dated signals, enriched, deduplicated against your CRM, and staged as a campaign.

Experience Tulina for 14 days.

By continuing, you agree to our Terms of Use and Privacy policy.