Skip to content

GuidesRetention and churn

How to win back churned SaaS customers (and which ones to let go)

Which churned merchants are worth a win-back, what the message says, when to send it, what Shopify's rules allow after an uninstall, and how to measure it.

By Geetansh Saini8 min read

In short: Win back the churned merchants whose reason for leaving has since changed: their season is back, the feature they wanted has shipped, the bug they hit is fixed. Send one message from a named person that says exactly what changed, timed to the change, and let the rest go. For a Shopify app, Shopify asks you to erase a store's data 48 hours after an uninstall and its Partner Program Agreement limits merchant data to providing your service, so the win-back list has to come from consent the merchant gave you, not from the shop email you pulled through the API.

Which churned customers are worth winning back?

The question to ask about every churned merchant is not "how much were they paying" but "has the reason they left stopped being true". A win-back campaign sent to everyone is a discount campaign with a sad subject line. A win-back sent to the merchants whose reason has changed is a product update to people who asked for it.

Your cancel flow gives you the reason if it asks for one, and I cover how to build that in the guide on cancellation flows. For uninstalls, Shopify's updated uninstall reasons, in effect since April 2026, require merchants to pick one of eight before removing an app, and the reasons are visible in your Partner Dashboard. Either way, sort by reason first.

Reason they left Worth a win-back? Only if
Not using it right now, left before a quiet season Yes The season is about to start again
Missing a feature Yes, the best list you have You shipped that feature, not something near it
Something was broken Yes The bug is fixed and verified on a real store
Too expensive Only sometimes Your pricing changed, with a smaller tier or usage-based pricing that fits them
Not satisfied with support Rarely Support changed in a way you can state, such as live chat hours
Testing multiple apps One message at most They picked another app, and nothing you say will reverse a decision made in a week
Switching to another tool No They have decided. Keep the name of the tool for competitive research
Store closing No There is nothing to win back

The pattern in the table is that a win-back is justified by a change on your side, or in their calendar, that answers the reason. If nothing changed, the only thing you can offer is money off, and a merchant won back with a discount leaves again when the discount ends, this time with a lower opinion of the price.

Two more filters. The store has to be live, which you can check from the storefront URL without any API access. And the merchant has to have used the app past setup. A merchant who installed, never connected the embed and uninstalled a week later is an onboarding problem, covered in the guide on reducing Shopify app uninstalls, not a win-back candidate.

What should a win-back message say?

Three things, in this order: the specific thing that changed, why it matters to this merchant in particular, and one link. From a named person, with replies going to that person.

For a shipped feature: "Hi Priya, you cancelled in March because we did not support tiered commission rates for your top affiliates. That shipped last week. Here is the settings page, and I can set it up for you if you send me the two rates." The subject line names the feature, not the app.

For a fixed bug: "The order sync problem you hit on your theme in June is fixed. The cause was a change in the theme's checkout markup, and we now handle it. If you reinstall, your settings and affiliate list are still here until the end of September."

For a seasonal merchant: "Last year your affiliate programme started picking up in mid October. If you want it running before then, reinstalling takes two minutes and your links still work."

What is not in any of these: a discount, a "we miss you", a list of everything you shipped this year when only one thing on it was theirs, or a sequence. One message, one follow-up two weeks later if there was no reply, then stop. A merchant who did not answer two specific messages has told you something.

Route replies to the support queue, not a marketing inbox, because most of them are questions.

When should you send it?

The timing is set by the change, not by the calendar of a drip tool.

  • Feature shipped. The day it ships, to the list of merchants who left over that feature. This is the one win-back email I would send without hesitation, and the list for it comes from the free text in the cancel flow. The guide on turning feature requests into a roadmap covers how to keep that list attached to each request.
  • Bug fixed. Within the week of the fix going live, after you have confirmed it on a real store, not a staging one.
  • Season returning. Three to four weeks before the point last year when their orders started climbing, if you still hold that data. For a merchant who said in the cancel flow that they were pausing for the season, the better move is a pause option so they never have to leave, covered in the guide on the pause option.
  • Pricing changed. When the new tier is live, to the "too expensive" list, with the new price in the subject line.

No change means no message. A quarterly "what is new" email to every churned merchant is a newsletter to people who unsubscribed with their feet.

What does Shopify allow after a merchant uninstalls?

This is where generic SaaS win-back advice breaks for Shopify apps. I am not a lawyer, so read the rules and ask one.

Shopify's privacy law compliance documentation says that "48 hours after a store owner uninstalls your app, Shopify sends a payload on the shop/redact topic", that the payload gives the store's identifiers "so that you can erase data for that store from your database", and that you must complete the action within 30 days of receiving the request. The only exception the page gives is when you are legally required to retain data.

Shopify's Partner Program Agreement, last updated February 27, 2026, says in section A-9.14.2 that partners "will only use or store such information for the purpose of providing the Partner's services to the Merchant", where the information is Merchant Data and Customer Data. (The agreement's rule against contacting Customers is about the merchant's shoppers, not the merchant, so it does not settle this question.) Shopify's App Store requirements say, in the rule about listing subtitles, "Don't use personal merchant information without consent from the merchant." That is a listing rule, but it shows the principle Shopify applies.

My reading of those two, as a product person and not a lawyer: the shop owner email you obtained through the API exists to run the app for that merchant. Once they uninstall you are not providing a service, and within 48 hours you are asked to erase what you hold. A win-back email to that address a month later is on thin ground.

What that means in practice is that the win-back list is built on consent, inside your own product, before the merchant leaves:

  • A checkbox in the cancel flow, unticked by default, that says "Email me when this feature ships" or "Remind me before next season", with the merchant confirming the address they want used.
  • Merchants who signed up to your product updates separately, through your own site, with their own consent.
  • Merchants who replied to a support conversation and asked to be told.

Keep that consent record separate from the store data you erase on shop/redact, honour the retention window you promised, and say in the message why they are hearing from you. "You asked us to tell you when this shipped" is both the honest line and the strongest opening you have.

One billing detail matters. Shopify's free trial documentation says that Shopify App Pricing "tracks trial days over a 180-day period to prevent users from repeatedly reinstalling apps", with the example of a merchant who used 12 of 15 trial days keeping 3 on reinstall 90 days later. So "come back for another free trial" is not an offer the platform makes for you. The same page says you can extend trial periods for individual merchants through your Partner Dashboard, which is how to give a returning merchant two weeks to see the fixed feature before paying.

How do you measure a win-back campaign?

Measure it per reason, against a baseline, and over 90 days rather than at the reinstall.

  1. Baseline reinstall rate. Some churned merchants come back unasked. Measure what share of last year's churned merchants reinstalled within 90 days on their own. That is the number to beat.
  2. Hold back a slice. Keep 20% of each reason list out of the send. The gap between contacted and uncontacted is the effect, and without it you will credit the campaign for merchants who were coming back anyway.
  3. Reinstall rate by reason. Report shipped-feature, fixed-bug and seasonal lists separately. They will differ by a lot, and the blended number hides which list is worth maintaining.
  4. Still paying at day 90. A reinstall that cancels again in month two is a cost, not a win. Count it when the merchant has paid a second invoice.
  5. Replies and complaints. Count replies as a positive signal and unsubscribes or "stop emailing me" as the cost. If the second number is not close to zero, the list was wrong.

I do not have a win-back benchmark I would trust, and I would be wary of any vendor number that does not state the reason mix of its list. Compare your own lists with each other and with the holdout.

Where to start

  1. Pull the last twelve months of cancel reasons and uninstall reasons, and sort them into the table above. Count the shipped-feature and fixed-bug lists.
  2. Add the consent checkbox to your cancel flow this sprint, with a plain statement of what the merchant will receive and when.
  3. Match the shipped-feature list against your changelog for the last two quarters, and write the one message for the largest match.
  4. Measure the organic reinstall rate for last year's churned merchants before sending anything.
  5. Send to 80% of the first list, hold back 20%, and book the 90-day review now.

Frequently asked questions

Is it worth trying to win back churned customers?

For the ones whose reason has changed, yes, and they are the cheapest customers you will acquire because they already know the product. For the ones whose reason has not changed, no. A win-back that depends on a discount brings back merchants who will leave again at full price.

How long after they churn should you contact a lost customer?

When the thing they left over has changed, and not before. For a shipped feature that is the day it ships. For a seasonal merchant it is a few weeks before their season. There is no fixed interval that works, because the interval is not what changed their mind.

Can a Shopify app email merchants who have uninstalled it?

Shopify sends a shop/redact request 48 hours after an uninstall asking you to erase that store's data, and its Partner Program Agreement limits merchant data to providing your service. My reading, as someone who is not a lawyer, is that you need consent the merchant gave you directly, such as a checkbox in your cancel flow, rather than the shop email from the API. Check the rules and ask a lawyer before you build a list.

Should a win-back offer include a discount?

Not in the first message. Lead with the change that answers their reason. If you offer anything, make it time to see the change rather than money off, such as a trial extension for a returning merchant, which Shopify lets you grant per merchant from the Partner Dashboard.

Got a complicated product?
Let’s make it feel simple.

I’m looking for a product design role on a team that ships. Email is the fastest way to reach me.

Get in touchwww.geetanshsaini@gmail.com

LinkedIn (opens in a new tab)