Blog
RevenueBy Marwan AkhandafJune 19, 20261 min read

RevenueCat, Adapty, and Superwall Webhooks: How to Normalize Revenue Events

Normalize RevenueCat, Adapty, and Superwall webhooks into subscription analytics events for revenue, renewals, refunds, cancellations, and paywall variants.

Summary

A guide for connecting subscription provider webhooks to mobile analytics without mixing provider-specific payloads into dashboards.

Provider webhooks make revenue lifecycle reporting reliable.

Normalize provider names into canonical subscription events.

Store provider secrets per app and verify webhook signatures or auth headers.

Why provider webhooks matter

SDK events are immediate, but subscription lifecycle events often happen outside the app session. Renewals, refunds, cancellations, billing retries, and grace periods may never pass through the mobile client.

Provider webhooks close that gap. RevenueCat, Adapty, and Superwall each have their own payload shapes, but analytics dashboards should normalize them into a shared lifecycle model.

Normalize before dashboarding

A useful normalized event includes provider, eventName, productId, currency, revenue amount, environment, country, appVersion, and paywallVariant where available. This lets product and revenue dashboards work across providers.

Do not force every provider field into analytics. Keep the raw provider payload out of user-facing dashboards unless it has been reviewed and sanitized.

Webhook security basics

Each app should have its own provider webhook configuration and secret. RevenueCat and Adapty can use an authorization header you generate. Superwall commonly uses a signing secret from its webhook settings.

Verify the secret before writing events, record idempotency keys where available, and keep a delivery log so teams can diagnose missing revenue events.

FAQ

Common questions

Do users configure provider secrets or does the SaaS owner?

Each customer should configure secrets for their own provider project inside the SaaS. The platform owner only needs deployment secrets for encrypting and syncing configuration.

Why not rely only on SDK purchase events?

SDK purchase events are useful for setup and first purchase, but provider webhooks are more reliable for renewals, refunds, cancellations, and billing states.