Skip to main content
We read revenue from the platform that creates the charge. Exactly one platform owns each transaction, so pick the owner first.

Pick the owner

SDK values

Revenue comes from payment sources and your server, not from the browser or app SDK. A value on any other SDK event, such as add_to_cart or a custom event, is never revenue. The switch happens when the first event with a value arrives from a payment source or your server, at any time in the workspace’s history:
  • Connecting a payment source alone does not switch it. The first valued event does.
  • After the switch, no SDK purchase or subscribe event is revenue, including the ones sent before it.
  • Disconnecting the source later does not switch it back.
SDK purchase events still attribute revenue to the visit, count as events, and fire your conversion rules and ad-platform postbacks.
A payment source that stops sending shows as a revenue gap, not as SDK revenue. Reconnect it. Once a source has at least 7 days of revenue history and has been silent for at least 72 hours and well past its usual gap, Health marks it No revenue.

Endpoint and auth

WORKSPACE_PUBLIC_ID is the workspace public ID that the connection dialog fills into the URL. The retired route https://webhooks.datalyr.com/stripe/WORKSPACE_PUBLIC_ID returns HTTP 410 and records nothing.

The identity field

Skip this field and you’ll still get the revenue, but nothing to credit it to. Each source falls back to the customer email, then to a synthetic ID that matches no campaign.

Gross and net revenue

Every source writes the event value as gross, before tax, store commission, and processor fees.
Connect RevenueCat or Superwall, never both. Each writes the same fourteen event names for one store transaction, and we deduplicate inside a source rather than across them, so your mobile revenue doubles.
Shopify and Checkout Champ need no such care. We classify every Shopify order and drop the Shopify copy of an order that Checkout Champ created.

Verify any source

  1. Open your site in a private window with a ?utm_source=doctest parameter.
  2. Open Events. Confirm a pageview row exists.
  3. Create one test transaction in the source platform.
  4. Open Events. Confirm the transaction row carries the right value and currency.
  5. Confirm visitor_id does not start with the source name.
A visitor_id such as stripe_cus_123 or shopify_456 means the identity field never arrived.

Next

Ecommerce revenue

Which Shopify metric answers which question.

Subscription revenue

Trials, renewals, and the metrics that exist today.

Refunds

Sign, reporting period, and per-source coverage.

Profit

Shopify gross profit, POAS, and their limits.