Skip to main content
Superwall sends trial, subscription, and purchase events to Datalyr through a webhook.
Connect Superwall or RevenueCat, never both. Superwall writes the same fourteen event names as RevenueCat for one store transaction, and we deduplicate inside a source rather than across them, so your mobile revenue doubles.

Connect

1

Open the source

Open Sources, find Superwall, and select connect.
2

Enter your Bundle ID

Paste the application bundle identifier, such as com.example.app.
3

Enter the webhook secret

Copy it from Superwall. It starts with whsec_.
Set this before you save. Deliveries return HTTP 503 until you store a whsec_ secret.
4

Copy the webhook URL

5

Add the webhook in Superwall

Paste the URL into Superwall’s webhook settings.
The Project ID field is optional. We store it and write it to event_data.projectId. Superwall signs with Standard Webhooks. We verify svix-id, svix-timestamp, and svix-signature over id.timestamp.body, with a 300-second tolerance. Skip this and you’ll still get the revenue, but nothing to credit it to.
Call it after both SDKs initialize. Call it again after the App Tracking Transparency prompt. Call it before you present a paywall. The helper returns a flat string map, and we drop every empty value. We resolve the visitor in this order, stopping at the first match. No match sets visitor_id to superwall_<originalAppUserId>, or to superwall_unknown.

Event mapping

Fourteen Superwall types produce fourteen Datalyr events. Two types split on a payload field. Unknown types return 200 and record nothing.
Superwall has no refund-by-cancellation rule. RevenueCat maps a support-granted refund onto refund, while Superwall sends cancellation for the same event. That becomes subscription_cancelled worth 0, so read cancellation counts alongside revenue.

Revenue

Five events carry revenue: subscription_started, trial_converted, subscription_renewed, purchase, refund. All others record 0, including trial_started. A negative price on any event type also makes it carry revenue. The event value is gross, before tax and store commission. Net is stored as event_data.net_revenue, and we prefer the store’s own figure:
commission_rate is commissionPercentage when Superwall sends it, otherwise 0.15 for a small-business account and 0.30 for every other account. Refunds are always negative.
Top-level currency is always USD, because Superwall converts before it sends. The original values stay available as event_data.original_currency and event_data.original_price, but build your conversion rules on the USD value.

Fields for conversion rules

We keep every other Superwall field in event_data unchanged.

Delivery behavior

Verify

  1. Set the Superwall attributes in your app.
  2. Complete one production purchase through a Superwall paywall.
  3. Open Events. Find the event.
  4. Confirm the event name, value, and event_data.product_id.
  5. Confirm visitor_id does not start with superwall_.
Sandbox purchases never appear. Test in the production environment.

When it does not work

Next, create a conversion rule so these purchases reach your ad platforms.