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 reconciliation.
Explain which subscription lifecycle events mobile apps and providers should send.
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 overstate retention and miss churn signals. Provider events from RevenueCat, Adapty, Superwall, App Store Server Notifications, or Google Play should eventually reconcile lifecycle changes.
Recommended lifecycle events
Start with Subscription.trialStarted, Subscription.trialConverted, Subscription.renewed, Subscription.cancelled, Subscription.refunded, Subscription.billingRetry, and Subscription.gracePeriodStarted. 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 or reconcile them by provider transaction identifiers where available. That keeps dashboards useful without hiding latency or webhook delivery issues.
Implementation checklist
How to apply this subscription analytics events guide
Treat this article as an instrumentation brief before adding or changing analytics code. The goal is not to send more events. The goal is to make every event answer a specific product, revenue, privacy, or debugging question for your app team.
Define the decision first
Write down the decision this revenue work should support. Good examples are whether onboarding is leaking users, whether a paywall variant changes purchase intent, or whether a provider webhook is missing subscription lifecycle events.
Map the smallest event set
Choose the fewest event names and payload fields that answer the decision. Prefer stable names such as App.launch, Paywall.viewed, Purchase.completed, Subscription.renewed, and Error.occurred over ad hoc labels that only one release understands.
Verify in test mode
Send events from a debug build first, inspect the live event stream, and confirm that environment, platform, app version, product ID, paywall variant, and revenue fields appear where expected before counting the data in production dashboards.
Run a privacy pass
Review every payload key before launch. Remove email addresses, names, advertising IDs, phone numbers, precise location, free-form user text, raw payment tokens, and other fields that make analytics harder to defend during an app privacy review.
In AppMetricsKit, the safest workflow is to create an ingest key, install the iOS or Android SDK in test mode, send the first event, review Live Events, then promote the same taxonomy to production. After events are stable, connect RevenueCat, Adapty, Superwall, or server-side sources so subscription changes that happen outside the app are reconciled with client events.
Revisit this checklist whenever a new paywall, onboarding step, plan, trial offer, release channel, or data export is introduced. Most analytics quality problems come from small schema changes that were never reviewed, not from the dashboard itself.
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.