Once per customer
Each customer gets a campaign's email once. Sandbox purchases never count.
Feature
RevenueDot has two win-back tools. Win-back campaigns email customers whose subscription ended a button back to the store, once per customer, with click tracking and one-click unsubscribe. Apple's iOS 18 win-back offers work with the RevenueCat SDK unchanged, and RevenueDot records each offer on the purchase and in webhooks.
Free up to $10,000 a month in tracked revenue. Works with the RevenueCat SDK you already ship.
Each customer gets a campaign's email once. Sandbox purchases never count.
Click tracking, optional open tracking, one-click unsubscribe with RFC 8058 headers and a suppression list.
Customers who bought or started a trial within 30 days of the email, and their revenue.
offer_code and offer_type on every period, including win_back, in webhooks and exports.
Steps
Customers need an email address in the $email attribute, which you set with Purchases.shared.attribution.setEmail(_:) or the API. Set the Customer Center support email under Lifecycle, then Support, because replies go there.
Open Lifecycle, then Win-back, and select Create campaign.
Customers whose last subscription ended between N and M days ago and who have no active subscription. Narrow by products, stores or a saved audience. Preview shows who would get the email today.
Add a subject, heading, body and button label. The email goes out under your app's name with an unsubscribe link.
Send App Store customers to their subscriptions page, where Apple lists the win-back offers they can redeem, and Google Play customers to the Play Store page. Or send everyone to your own https link, such as a web checkout.
Active campaigns send once a day at the UTC hour you choose, to at most 500 customers a day. Send test emails you a sample, and Send now runs the campaign at once.
Every email has an unsubscribe link. When your server's public URL is https, the email also carries one-click List-Unsubscribe and List-Unsubscribe-Post headers (RFC 8058). An address that unsubscribes never gets another win-back email from the project. A project's campaigns together send at most 2,000 emails in 24 hours.
Win-back offers are discounted or free periods Apple shows to customers whose subscription lapsed, on iOS 18 and later. The RevenueCat SDK does the win-back work on the device, so your app code stays the same and the offer needs no signature from the server. RevenueDot grants access, records the offer and keeps Apple's eligibility list.
A win-back purchase arrives as a RENEWAL with the offer id in offer_code. A paid win-back period has period_type: NORMAL and a free one has TRIAL.
{
"api_version": "1.0",
"event": {
"type": "RENEWAL",
"app_user_id": "user_1",
"product_id": "pro_monthly",
"period_type": "NORMAL",
"transaction_id": "2000000007",
"original_transaction_id": "2000000001",
"price_in_purchased_currency": 4.99,
"offer_code": "comeback_50",
"store": "APP_STORE"
}
} RevenueDot stores Apple's list of win-back offers each time it reads the renewal info. offer_ids is Apple's list, best offer first, and is empty when Apple offers the customer nothing. Use it to send a lapsed customer the offer from your own email tool. This endpoint is a RevenueDot extension.
curl -s https://api.revenuedot.app/v2/projects/$PROJECT_ID/customers/user_1/win_back_offers \
-H "Authorization: Bearer $SECRET_KEY" FAQ
Create a win-back campaign in RevenueDot under Lifecycle, then Win-back. Choose customers whose subscription ended between two dates, write the email and pick where the button goes, such as the App Store subscriptions page. RevenueDot sends it daily at your chosen hour and counts who came back.
They are discounted or free periods that Apple shows to customers whose subscription lapsed, on iOS 18 and later. You create them in App Store Connect. The RevenueCat SDK handles them on the device, and RevenueDot records the offer on the resulting RENEWAL.
Yes. Each subscription period and transaction stores its offer type and the store's offer id. Webhooks carry the id in offer_code, and the transaction export has offer and offer_type columns that say win_back.
RevenueDot adds an unsubscribe link and one-click unsubscribe headers, honors unsubscribes for good and sends only to the address you saved on the customer. The rules for consent differ by country, so check them with your own counsel before you send.
You can email them. The button goes to the Play Store page of their subscription or to your own link. Google Play has no separate win-back offer type, so build the offer in Play Console as a developer-determined offer.
Get started
Start free on RevenueDot Cloud, free up to $10,000 a month in tracked revenue, or move an existing RevenueCat app with one line of code.
Already have an account? Sign in · Prefer your own servers? Self-host free