Pushlane Cancel-Intent Push Notifications
Use cancel-intent push notifications only after an unresolved, observable subscription action, with truthful state checks, useful options and strict exits.
A cancel-intent push notification should follow an observable, unresolved subscription action. It should not label a quiet customer as "about to churn" or send a discount because someone opened account settings.
The immediate cancel moment usually belongs to the account interface, where the app can explain access, plan options and support without asking the user to leave and return. Push becomes useful only when the person leaves an unfinished process and a later reminder can provide a specific next step.
This guide separates intent, cancellation and expiration so a save attempt cannot turn into false account messaging.
Distinguish three different states
Cancel intent
The user takes a direct action that suggests they are evaluating a change. Examples include opening a cancellation help path, selecting a plan-change option, or explicitly requesting a cancellation link.
Intent is product data, not a RevenueCat billing state. Track a narrowly named event such as cancellation_help_requested or plan_change_started, with only the properties needed for the flow.
Cancellation
RevenueCat CANCELLATION commonly indicates that auto-renew was disabled while access may continue until expiration. Other causes can exist. Pushlane does not currently expose cancel_reason to flow branches, so a generic flow must remain cause-neutral.
Expiration
Access has ended. Only then does a former-subscriber win-back flow become appropriate.
RevenueCat's official webhook event reference defines cancellation and expiration. Never replace those verified states with a client-side guess.
Use explicit signals, not psychological labels
Strong cancel-intent signals are actions the person understands:
- requested help with cancellation;
- started but did not complete a plan change;
- opened a store-management destination from a cancel path;
- selected a support reason and asked for follow-up;
- left a save or pause option unfinished.
Weak signals include:
- one missed session;
- a paywall view;
- lower activity during a normal holiday;
- dismissing a notification;
- visiting general settings.
Do not create a hidden score from sensitive content and place a private inference in lock-screen copy. Name segments after observable criteria, such as "Cancellation help requested, no verified state change after 24 hours."
If the user completes the cancellation action, stop the intent flow. The verified cancellation event owns the next state.
Decide whether push is the right follow-up
Push is appropriate when all of these are true:
- The user explicitly started a relevant account task.
- The task remains unresolved after a reasonable delay.
- The next action works from a deep link.
- The device is authorized and the message is allowed by consent policy.
- No newer RevenueCat event supersedes the intent.
Do not use push to interrupt a person who is currently in the cancellation screen. Improve that screen first. Explain remaining access, available plan changes, support and store ownership in place.
Do not send a push if the only destination is the app home screen. A cancel-intent message should open the exact support, plan or store-management path it promises.
Build an unresolved-intent flow
A conservative Pushlane flow can look like this:
cancellation_help_requested
-> wait 24 hours
-> exit on cancellation, renewal, uncancellation or support resolution
-> branch: task still unresolved, eligible device, consent allowed
-> send one useful follow-up
-> exit on any account-state change
Choose the delay from the task. A technical support request may deserve faster help. A person browsing plan options may need no follow-up at all.
Useful copy focuses on the open task:
Your plan options are still available
Review access, billing and support before deciding what works for you.
Or, after an explicit support request:
Need help with your subscription?
Continue the support request and review your current access in the app.
Avoid:
- "We know you are going to leave";
- a countdown that does not come from a verified deadline;
- "Your subscription is cancelled" before cancellation;
- an automatic discount that was never offered in the account UI;
- guilt about lost progress.
Coordinate with the verified cancellation flow
When revenuecat.cancellation arrives, end the intent journey. The RevenueCat cancellation push guide covers the remaining-access state and its stop conditions.
Use neutral cancellation copy unless your own trusted system provides a reviewed cause:
Your plan settings changed
Review your current access and renewal details whenever you are ready.
Stop cancellation messaging on revenuecat.uncancellation. On revenuecat.expiration, transfer ownership to a win-back flow. On renewal or purchase, stop every save and recovery path.
This precedence prevents the most damaging contradiction: asking someone to finish cancelling after they restored renewal, or offering a return discount while they still have active access.
Offer real options without manufacturing urgency
A useful cancel path may include:
- a lower or different plan that actually exists;
- a pause mechanism supported by the relevant store and product;
- troubleshooting for a problem the user reported;
- a clear explanation of remaining access;
- data export or account support;
- a straightforward route to complete cancellation.
Do not advertise a pause, refund or price that the customer cannot complete. Store rules, product eligibility and offer availability can vary. Resolve those conditions before writing the notification.
If the product does not support an alternative, help the person reach the real management destination. Friction is not a retention feature.
Measure usefulness and customer safety
Choose an outcome that matches the message:
- support task completed;
- plan option reviewed;
- uncancellation after verified cancellation;
- continued product value during remaining access;
- fewer unresolved account requests.
Also track:
- pushes sent after a superseding RevenueCat event;
- explicit opt-outs following the flow;
- deep-link failures;
- users receiving both intent and cancellation messages;
- support complaints about pressure or incorrect state;
- offer eligibility failures.
Do not call every renewal after exposure "saved revenue." A user can renew without the message, and an intent event can select people who were already likely to stay. Use a stable eligible holdout when the cohort supports it.
The broader retention guide explains how to connect these outcomes to a lifecycle measurement model.
Help the user finish a choice
Cancel intent is a narrow service moment, not permission to launch a persuasion sequence. Trigger only from an explicit action, wait for unresolved state, provide one truthful option and exit on every verified change.
When the customer does cancel, respect the state. When access expires, use a separate win-back flow. Keeping those boundaries clear protects both retention analysis and the person making the decision.