> For the complete documentation index, see [llms.txt](https://docs.roadmap.so/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roadmap.so/subscriptions/subscriptions-klaviyo-integration/klaviyo-win-back-flow-for-cancelled-subscriptions.md).

# Klaviyo win-back flow for cancelled subscriptions

Build a Klaviyo win-back flow for cancelled subscribers using Roadmap events, cancellation tags, Shopify Flow, and loyalty incentives.

Use this flow when you want to win back customers after they cancel.

Roadmap gives you both the event and the reason.

That means you can time the flow correctly and tailor the message.

### What Roadmap provides

When a customer completes the cancellation flow, Roadmap sends data you can use in Klaviyo and Shopify.

You get:

* the Klaviyo metric `Roadmap: Subscription canceled`
* the cancellation reason slug and label
* any free text entered under **Other**
* a Shopify customer tag in the form `{prefix}:{reason-slug}`

If you keep the default prefix, tags look like `cancelled:too-expensive` or `cancelled:too-much-product`.

This works best alongside [Churn prevention: cancellation and pause flows](/subscriptions/managing-subscriptions/churn-prevention-cancellation-and-pause-flows.md).

{% hint style="info" %}
The event tells you **when** the customer cancelled.

The tag tells you **who** they are after the event has passed.
{% endhint %}

### Before you build the flow

Make sure these are already done:

* Churn Prevention is live and capturing cancellation reasons
* Klaviyo is connected and metrics are synced
* your cancellation reasons are short and stable
* your tag prefix is final before launch

If you change reason slugs later, your old Shopify tags stay as they were.

For the Klaviyo connection steps, see [How to integrate Roadmap with Klaviyo](/reviews/integrations/klaviyo-review-integration/how-to-integrate-roadmap-with-klaviyo.md).

### Recommended base flow

{% stepper %}
{% step %}

#### Trigger the flow on the cancel event

Use `Roadmap: Subscription canceled` as the Klaviyo flow trigger.

This ensures the customer enters the flow the moment the cancellation completes.
{% endstep %}

{% step %}

#### Email 1 — send immediately

Acknowledge the cancellation.

Reflect the reason they gave.

Offer one clear next step.

Good options:

* reactivate with a small incentive
* switch to a lower-friction product
  {% endstep %}

{% step %}

#### Wait 3 to 5 days

Give the customer a short break.

Then branch the flow by cancellation reason.
{% endstep %}

{% step %}

#### Email 2: match the message to the reason

Use a conditional split based on the event data or the customer tag.

Examples:

* `too-expensive` → lead with value, bundle savings, or a targeted offer
* `too-much-product` → lead with lower frequency, smaller pack size, or alternate SKU
* `not-seeing-results` → lead with education, usage tips, or a longer trial window
  {% endstep %}

{% step %}

#### Wait 7 to 10 days

If they still have not returned, send one final win-back email.

Keep this one softer.

Focus on the best reason to come back now.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Three emails is usually enough.

Long win-back sequences often train customers to wait for the biggest offer.
{% endhint %}

### Structure the flow for better win-back with tags

Tags let you add a second layer beyond the cancellation reason.

That is where the best win-back flows get smarter.

#### Use reason tags for message fit

The base layer is the cancellation tag itself.

Examples:

* `cancelled:too-expensive`
* `cancelled:too-much-product`
* `cancelled:not-seeing-results`

These are ideal for:

* reason-specific copy
* reason-specific discounts
* suppression from unrelated campaigns

#### Use subscription milestone tags for customer value

If you already use [Subscription auto-tagging](/subscriptions/getting-started/subscription-auto-tagging.md), add that tag logic into the flow for better segmentation on the value of the potential returning customer.

Examples:

* `subscriber`
* `loyal-subscriber`
* `vip-subscriber`

This helps you avoid offering the same win-back to every cancelled customer and allows you to give a discount based on the value of the customer. If someone has purchased 10 times as opposed to 1 time, you may want to be more generous on the win-back offer.

A customer who cancelled after `12` subscription orders often deserves a different path from someone who cancelled after `1`.

#### Use loyalty or VIP tags to protect margin

High-value customers may need a stronger offer.

Low-value or one-order customers may need a lighter one.

A simple split is often enough:

* VIP or high-value tag present → stronger save offer
* no high-value tag present → standard win-back path

#### Keep reward tags separate from reporting tags

Do not overload one tag for every job.

A clean setup is easier to maintain.

For example:

* reporting tag: `cancelled:too-expensive`
* promo tag: `winback-offer-too-expensive`
* reward tag: `winback-points-500`

### Shopify Flow scenarios to pair with the Klaviyo flow

Shopify Flow is useful when you want tags to evolve after the cancellation.

Here are three strong patterns.

#### 1. Mark customers who should qualify for a win-back discount

When a customer receives `cancelled:too-expensive`, Shopify Flow can add a second tag such as `winback-discount`.

Then build a Roadmap discount that applies only to customers with that tag.

See [Use tags for discount eligibility](/discounts-and-gwp/using-gwp-and-discounts/use-tags-for-discount-eligibility.md).

#### 2. Escalate the offer if the customer still has not returned

After a wait period in Shopify Flow, check whether the customer still matches your cancelled-customer conditions.

If they do, add a new tag such as `winback-last-chance`.

Use that tag to send a final email or unlock a stronger offer.

#### 3. Clean up win-back tags after the customer returns

When the customer creates a new subscription or reaches your return condition, remove temporary tags such as:

* `winback-discount`
* `winback-last-chance`
* `winback-offer`

This keeps future segmentation clean.

{% hint style="info" %}
Temporary campaign tags should be easy to remove.

Keep them short, specific, and separate from long-term customer tags.
{% endhint %}

### Add loyalty incentives for returning customers

If you want to reward the return, use Roadmap's **Customer Tag** loyalty earning rule.

This is one of the cleanest ways to connect Shopify Flow and loyalty.

### Recommended reward pattern

Award the points after the customer returns.

Do not award them at the moment of cancellation.

That protects margin and keeps the incentive outcome-based.

{% stepper %}
{% step %}

#### Create a loyalty earning rule for a customer tag

In **Loyalty Program** → **Points**, add a **Customer Tag** earning rule.

Use a dedicated tag such as `winback-returned` or `winback-points-500`.
{% endstep %}

{% step %}

#### Decide whether the reward should be one-time or repeatable

For most win-back campaigns, one-time is the safer setup.

Use repeatable only if you intentionally want to reward the same customer more than once.
{% endstep %}

{% step %}

#### Use Shopify Flow to apply the reward tag after the return action

Good return actions include:

* the customer starts a new subscription
* the customer places a qualifying comeback order
* the customer reaches their first successful renewal after reactivating
  {% endstep %}

{% step %}

#### Tell the customer what they earned

Your Klaviyo email can confirm the reward after the tag is applied and the points are granted.

This works well as a post-return confirmation message.
{% endstep %}
{% endstepper %}

### Loyalty incentive ideas

A few patterns work especially well:

#### Return-and-earn points

If the customer comes back within your campaign window, Shopify Flow adds `winback-returned`.

Roadmap awards the points automatically.

#### Reward the first successful renewal

If you want a stronger retention signal, delay the reward until the first recurring order succeeds.

This avoids rewarding customers who reactivate and cancel again straight away.

#### Tiered win-back rewards

Use different reward tags for different customer groups.

Examples:

* `winback-points-250`
* `winback-points-500`
* `winback-points-1000`

Pair those with subscriber-value tags so your best former subscribers get the strongest offer.

### Best practices

* keep cancellation reasons short
* keep reward tags separate from reason tags
* make temporary win-back tags easy to remove
* use one-time tag rewards unless you need repeatable behavior
* test with a real customer profile before launch

### Related guides

* [Churn prevention: cancellation and pause flows](/subscriptions/managing-subscriptions/churn-prevention-cancellation-and-pause-flows.md)
* [Klaviyo pre-resume flow for paused subscriptions](/subscriptions/subscriptions-klaviyo-integration/klaviyo-pre-resume-flow-for-paused-subscriptions.md)
* [How to integrate Roadmap with Klaviyo](/reviews/integrations/klaviyo-review-integration/how-to-integrate-roadmap-with-klaviyo.md)
* [Subscription auto-tagging](/subscriptions/getting-started/subscription-auto-tagging.md)
* [Use tags for discount eligibility](/discounts-and-gwp/using-gwp-and-discounts/use-tags-for-discount-eligibility.md)
* [Loyalty points × subscriptions](/subscriptions/storefront-and-accounts/loyalty-points-subscriptions.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.roadmap.so/subscriptions/subscriptions-klaviyo-integration/klaviyo-win-back-flow-for-cancelled-subscriptions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
