Subscription Analytics Events for Trials, Renewals, Refunds, and Billing Retries
Design subscription analytics events for trials, renewals, cancellations, refunds, grace periods, billing retries, and provider event ingestion.
Summary
A lifecycle event guide for subscription app teams that need revenue analytics beyond first purchase conversion.
First purchase is only one subscription event.
Provider webhooks are essential for renewals and refunds.
Trial and billing retry states should be first-class analytics events.
Why purchases are not the whole revenue story
Purchase.completed is important, but subscription analytics must also cover what happens after the first checkout. Trials start, trials convert, renewals succeed, billing retries happen, users cancel, and refunds reduce net revenue.
If the analytics stack only tracks the client purchase callback, the dashboard will miss renewals, refunds, and churn signals that occur while the app is closed. Provider events from RevenueCat, Adapty, Superwall, App Store Server Notifications, or Google Play capture those lifecycle changes.
Recommended lifecycle events
Start with Subscription.trialStarted, Subscription.trialConverted, Subscription.renewed, Subscription.cancelled, Subscription.refunded, Subscription.billingRetry, and Subscription.gracePeriod. These events give finance and product teams a shared view of subscription health.
Use provider, productId, plan, currency, country, appVersion, and paywallVariant as normalized fields where possible. Avoid user names, emails, and raw account identifiers.
- Trial events answer whether acquisition quality is improving.
- Renewal events show durability beyond first purchase.
- Refund and cancellation events prevent revenue dashboards from becoming vanity metrics.
Client events and provider events should complement each other
Client SDK events are fast and useful during setup. Provider webhooks are authoritative for lifecycle changes that happen outside the app session. The best architecture accepts both and labels their source clearly.
When both events exist, analytics should deduplicate them by provider transaction identifiers where available. AppMetricsKit does not currently merge provider and client records automatically, so use one source per transaction unless separate records are intentional.
FAQ
Common questions
Can a mobile SDK track renewals by itself?
Usually no. Renewals often occur outside an app session, so provider webhooks are the reliable source for renewal analytics.
What is the difference between gross revenue and net revenue?
Gross revenue counts purchase value before adjustments. Net revenue accounts for refunds, cancellations, and other negative revenue events.