Audience targeting lets you decide which customers see a given cancel flow when they try to cancel. Instead of showing the same experience to everyone, you can route customers to different flows based on who they are — their plan, their monthly revenue, or other attributes. This article explains the three audience types, how to build conditions, and how churn.io chooses which flow to show at cancellation time.
Choosing who sees a flow
When you edit a flow, the Audience step asks Who sees this flow? You have three options:
Show to everyone — the flow is shown to all customers who reach the cancellation point. No conditions apply.
Show to specific audience — the flow is shown only to customers who match the conditions you define (for example, customers on a particular plan or above a certain monthly revenue).
Everyone else — a catch-all flow for customers who don't match any of your specific-audience flows. This option only becomes available once you've created at least one flow with a specific audience.
Pick the option that matches your intent, then move on to building conditions if you chose Show to specific audience.
Building conditions for a specific audience
When you select Show to specific audience, a condition builder appears. Each condition is a single rule made up of three parts: an attribute, an operator, and a value.
Available attributes
You can target on these attributes:
Customer data
Email — text matching on the customer's email address.
Plan — choose from your Stripe plans. Connect Stripe to use Plan targeting.
MRR ($) — the customer's monthly recurring revenue.
Subscription (via Stripe)
Billing interval — Monthly or Yearly.
Subscription age (months) — how long the customer has been subscribed.
Subscription status — Active, Trialing, Past due, or Canceled.
Trial days remaining — days left in the customer's trial.
⚠️ Subscription attributes need Stripe data
The four Subscription (via Stripe) attributes can only be matched when the relevant subscription data is supplied when the flow runs. If it isn't available, a rule using one of these attributes won't match, and the customer falls through to your next applicable flow. The Plan attribute likewise needs a connected Stripe account so your plans can load.
Operators and values
The operators depend on the attribute type:
Choice attributes (Plan, Billing interval, Subscription status): is / is not.
Text attributes (Email): equals, does not equal, contains, does not contain, starts with.
Number attributes (MRR, Subscription age, Trial days remaining): equals, does not equal, greater than, at least, less than, at most, and between (a two-value range).
Set the value (or two values for a between range). The builder highlights rules that are missing a value.
Combining conditions with AND and OR
Conditions sit in groups. Within a group the heading reads Match ALL of these — a customer must satisfy every rule in that group (AND logic). Use Add condition to add another rule to the current group.
To express alternatives, use Add condition group. Groups are joined with OR, so a customer matches if they satisfy any one group — for example "customers on the Pro plan, OR customers with MRR over $100."
💡 Watch for conflicting conditions
If two rules in the same group contradict each other — for example a choice attribute set to two different "is" values, or the same value with opposite operators — the builder shows a warning explaining that no customer could ever match the group. Adjust the rules so the group can actually match someone.
How churn.io picks which flow to show
When a customer reaches the cancellation point, churn.io looks at all of your Live flows of the matching type (widget or page) and chooses one in this order:
It checks your specific-audience flows first, in the order they were created, and selects the first one whose conditions the customer matches.
If no specific flow matches, it shows your Show to everyone flow.
If there's no "everyone" flow either, it falls back to your Everyone else flow.
If none of these apply, no flow is shown. Only flows that are set to Live are considered — drafts and paused flows are ignored.
⚠️ One catch-all per audience type
You can't take a second flow Live with the same audience type when one is already Live. If a Show to everyone flow is already Live, publishing another "everyone" flow is blocked until you pause the first. The same applies to Everyone else. You can, however, run several specific-audience flows side by side — they're matched in creation order.
When the flow appears
Audience targeting decides who sees a flow; the Trigger step decides when it appears. Today the supported trigger is Cancel button — the flow fires when a customer clicks the cancel-subscription button in your app. The Downgrade attempt trigger is marked Soon and isn't yet available.
💡 Test before going live
Use a preview to confirm the right flow shows for the customers you intend. A flow only participates in matching once its status is Live.
