RevenueCat webhooks
The billing spine for store purchases: paste one URL into RevenueCat and every App Store and Play Store event flows in.
This is the simplest connection in the product — there's no OAuth and no API key. Your app's unique webhook URL is shown when the app is created and permanently on Dashboard → Setup. Paste it into RevenueCat (Project settings → Integrations → Webhooks) and you're done; the URL's own token is the credential.
What each event becomes
| RevenueCat event | Fictura reads it as |
|---|---|
INITIAL_PURCHASE | trial_started when the period is a trial, subscription_started otherwise |
RENEWAL | subscription_renewed — and a trial's first paid renewal is recognized as a conversion |
CANCELLATION | subscription_cancelled — access continues until expiry |
UNCANCELLATION | auto-renew back on; a pending cancel survey is withdrawn |
EXPIRATION | subscription_expired — the only event that ends access |
BILLING_ISSUE | billing_issue — the user enters their grace period |
Deliveries are idempotent — each event's id is recorded, so RevenueCat's retries can never double-count revenue. Every event feeds four things at once: the entitlement verdict, net-revenue accounting (after your store commission and tax settings), churn states, and — when a trial cancels — the in-app cancel survey.
Keep your own webhook too
RevenueCat fans out to multiple webhook consumers, so adding Fictura doesn't touch the handler you already run. And Fictura re-emits everything uniformly — Stripe and store events in one shape — through its own outgoing webhook.