Integrations
Connect RevenueCat by webhook
RevenueCat tells Winback when a subscriber cancels, hits a billing problem, pauses or lets a subscription or trial expire. Winback reads those events only. It never changes a subscription, grants access or creates an offer in RevenueCat.
1. Get your endpoint
We issue each app its own webhook URL and Authorization header value. Ask through the setup form or email support@winbackhq.com. You get two things:
| What | Looks like |
|---|---|
| Webhook URL | https://winbackhq.com/hooks/revenuecat.php?t=your-endpoint-id |
| Authorization header value | wbrc_ followed by a long random string |
Keep the header value private. We store only a one-way hash of it, so we cannot show it to you again; if you lose it we issue a new one.
2. Add the webhook in RevenueCat
The steps follow RevenueCat's own guide, Webhooks.
- Open your project in the RevenueCat dashboard. In the left menu, under Integrations, choose Webhooks.
- Choose Add new configuration and name it Winback.
- Paste your Webhook URL from step 1.
- In the Authorization header value field, paste your Authorization header value from step 1, exactly as given. RevenueCat sends it with every request and Winback refuses any request without it.
- Environment: choose production purchases. Add sandbox only if you want to test with sandbox purchases.
- Apps: send events for the app you want win-backs for, or for all apps in the project.
- Event types: if you filter them, keep
CANCELLATION,BILLING_ISSUE,EXPIRATIONandSUBSCRIPTION_PAUSED, plusINITIAL_PURCHASE,RENEWALandUNCANCELLATIONso Winback can see who came back. If you leave every type on, Winback ignores the rest. - Save. If you send RevenueCat's
TESTevent, Winback answers200with "Test event received. Winback is connected."
What Winback keeps from each event
Field names are RevenueCat's (event types and fields).
| Event | Kept |
|---|---|
CANCELLATION, BILLING_ISSUE, EXPIRATION, SUBSCRIPTION_PAUSED | Always |
INITIAL_PURCHASE, RENEWAL, UNCANCELLATION | Only for a subscriber Winback already has from one of the events above, to record that they came back |
TEST | Only the time it arrived |
| Anything else | Nothing. Answered with 200 and dropped |
From a kept event Winback stores: event id and type, app_user_id, the subscriber's email (the reserved $email subscriber attribute, if you set it), product_id, period_type, cancel_reason, expiration_reason, expiration_at_ms, price, price_in_purchased_currency, currency, store, environment and the event time.
Not stored: names, other subscriber attributes, device or advertising ids, IP addresses and transaction ids. Emails and events are kept outside the public web folder, used only to send the win-back message you approved, never sold, and kept until you disconnect Winback or ask us to delete them. See privacy.
Who gets a message
A webhook only tells Winback that something happened. Winback writes one personal message per lost subscriber, and it is sent only to people you are allowed to contact: people who gave you their address or opted in to hear from you. You set the limits: who may get an offer, the largest discount, and how many messages anyone gets. You approve the first batch before anything goes out. Winback takes the address from the $email subscriber attribute you set in RevenueCat; a subscriber without one is not emailed.
Winback never adds fake timers or pressure tactics. See Apple-safe win-back and security.
Reliability and removal
- Winback answers within a second. RevenueCat counts anything other than 200 as a failure and retries up to five times over about 80 minutes, so a short outage on our side loses nothing.
- Delivery can repeat. Winback drops an event id it already has.
- To stop, delete the Winback configuration under Integrations, Webhooks in RevenueCat. To have stored events deleted, email support@winbackhq.com.
Pay only when someone comes back
No monthly fee: 15% of revenue from subscribers who come back, for 6 months. See pricing.