RetainKit Start free

Apple Retention Messaging

Ship a retention offer this afternoon, not next release.

When a subscriber taps cancel, Apple calls one URL and waits ~700ms for an answer. RetainKit is that URL — and the place your marketer writes the rule, in a sentence, with no deploy and no SDK.

Start free Look around the demo

Free forever tier · no Apple key needed to explore · Apple approval needed for production

RetainKit flow builder: a retention rule written as a sentence, beside a live iOS cancel-sheet preview

The whole configuration surface: one sentence, one preview.

Runtime

Cloudflare Workers

Edge p50

78ms globally

Setup

One .p8 + one URL

How it works

Four hops, none of them yours.

01

Subscriber taps cancel

Inside Apple's subscription settings — nothing in your app.

02

Apple POSTs your URL

The realtime retention callback, registered for you at setup.

03 · RetainKit

We pick the rule and sign

Your published flow decides, the offer signature is generated at the edge.

04

Offer shows in ~80ms

Well inside Apple's response window, from the nearest edge.

RetainKit runtime page: the hosted endpoint Apple calls, recent call latencies, and the signed JWS response

Runtime · the endpoint, the last calls, and the exact response Apple got.

Outcomes

Save rate and revenue retained. Not impressions.

Every offer served gets polled against Apple's Subscription Status API until it settles, so the number you report is what actually happened to the subscription.

Per flow, per offer, per A/B arm — with 30-day trend.

Significance testing with a p-value and a winner call.

Polling runs itself every five minutes; data accrues while you sleep.

RetainKit outcome dashboard: offers served, save rate, redemption, revenue retained, daily trend and an A/B result with p-value

Why this instead of building it

Three reasons, and they're all about time.

Nothing to integrate

We host the callback and register it with Apple from your .p8. Server-to-server, so no app release and no SDK. Point it at your own backend later if you'd rather.

A marketer can run it

Rules read as sentences, priority is drag order, and one Publish ships it. The iOS sheet previews live as you type, so nobody has to imagine it.

Measured, then decided

Two-arm or multi-variant tests with real significance stats, and an estimate of how many more events you need before the result means anything.

In production

How RetainKit runs.

The callback path is kept small, isolated, and independent from live App Store Connect reads.

Runtime

Cloudflare Workers, with DDoS protection, WAF, and rate limiting at the edge.

Published config

Runtime requests evaluate a controlled published config, not a live dashboard draft.

Environment isolation

Sandbox and production use separate runtime configurations and storage.

Sensitive data

App Store Connect keys are encrypted; transaction identifiers are hashed in runtime logs.

One prerequisite

Retention Messaging is new, and Apple asks developers to request access before using it in production. You can build and test your flows in sandbox today while that's pending — we'll walk you through the request.

Request API accessdeveloper.apple.com/contact/request Apple's documentationdeveloper.apple.com/documentation

Pricing

Start free. Pay when it pays for itself.

Free

$0

forever

Apps1
Events / mo100
Active flows1
A/B testing
SupportCommunity
Get started free

Unlimited sandbox testing

Launch

MOST TEAMS

$49/mo

14-day trial

Apps1
Events / mo5,000
Active flows3
A/B testingTwo-arm + stats
SupportEmail
Start 14-day trial

Trial starts once Apple access is approved

Growth

$149/mo

targeting by subscriber state

Apps5
Events / mo50,000
Active flowsUnlimited
A/B testingMulti-variant
SupportPriority
Start Growth

Months subscribed, lifetime spend, renewal date

Implementation notes

What we learned wiring this up.

All 8 articles
01Apple Retention Messaging API guide 02How to configure Apple's realtime retention URL 03How to run the sandbox performance test 04How promotionalOfferSignatureV2 works 05How to upload Retention Messaging messages 06Why messages stay PENDING 07Apple Retention Messaging vs RevenueCat 08Apple Retention Messaging without SDK integration

Your next cancellation is a few minutes away.

Build your first flow in sandbox today, publish it the day Apple approves your access.

Start free Look around the demo

Free forever tier · no credit card · no Apple key to explore