Integration · Attribution and ads measurement

Report in-app subscription revenue to AppsFlyer from your server

RevenueDot reports purchases, trial starts, conversions, renewals and refunds to AppsFlyer's server-to-server in-app events API with the customer's $appsflyerId. Each event uses RevenueCat's names, such as rc_renewal_event, and an eventValue with af_revenue, af_price, af_content_id, renewal and af_currency. Refunds carry negative revenue.

What teams do with it

  • Credit subscription revenue to the campaign or media source that drove the install.
  • Optimize ad campaigns for trial starts and paid conversions, not just installs.
  • Report renewals months after install, when the app is not open.
  • Send web funnel events to AppsFlyer's web S2S API as well.

What RevenueDot sends

  • Events named rc_initial_purchase_event, rc_trial_started_event, rc_trial_converted_event, rc_renewal_event, rc_cancellation_event and so on. Rename them under Event names.
  • eventValue holds af_revenue, af_price, renewal, af_content_id (the product id) and af_currency (USD). Refunds carry negative revenue.
  • The customer must have the $appsflyerId attribute. Without it, RevenueDot skips the event and says why in the delivery log.
  • Device ids come from the attributes $idfa, $idfv, $gpsAdId, $amazonAdId and $ip. $appsflyerSharingFilter becomes sharing_filter.
  • Sandbox events are sent only with a Sandbox developer key. Web funnel events need the Web app ID and Web S2S token.

Setup

How to connect AppsFlyer to RevenueDot

  1. 01

    Copy the keys

    In AppsFlyer, copy the dev key (or an S2S token) and your app IDs: id123456789 for iOS and the package name for Android.

  2. 02

    Set the AppsFlyer id

    In your app, set $appsflyerId with the AppsFlyer SDK's id and call collectDeviceIdentifiers() before the first purchase.

  3. 03

    Open the integration

    In RevenueDot, open Integrations in the project sidebar and choose AppsFlyer.

  4. 04

    Enter keys and app IDs

    Fill Developer key, iOS app ID and Android app ID. Tick The key is an S2S token if it is one, and add Sandbox developer key for sandbox events.

  5. 05

    Connect and test

    Pick Sales reporting, click Connect AppsFlyer, then Send test event for a customer who has $appsflyerId.

The AppsFlyer integration page in the RevenueDot dashboard, with its settings form
Captured from the RevenueDot dashboard with demo data.

How RevenueDot delivers events to AppsFlyer

  • Timeouts, rate limits (HTTP 429) and server errors (5xx) from AppsFlyer retry on the webhook schedule: after 5, 10, 20, 40 and 80 minutes.
  • Any other 4xx answer fails at once, because sending the same request again cannot work. Fix the setting, then click Replay failed.
  • The delivery log keeps each request with every secret replaced by [redacted], the answer, the time taken and, for skipped events, the reason.
  • Credentials are sealed with AES-256-GCM on the server. After you save a key, the dashboard shows only its last four characters.
  • Turn off purchase tracking in the AppsFlyer SDK, so the same purchase is not counted twice.

FAQ

AppsFlyer and RevenueDot

Does the AppsFlyer integration work with the RevenueCat SDK?

Yes. RevenueDot speaks the RevenueCat SDK protocol, so your app keeps the RevenueCat SDK and only the server address changes. Set $appsflyerId and call collectDeviceIdentifiers() in the app, because AppsFlyer cannot attribute an event without the id.

Is it the same as RevenueCat's AppsFlyer integration?

It reads the same $appsflyerId and device-id attributes. RevenueCat does not publish AppsFlyer's default event names, so RevenueDot uses its usual rc_*_event names, and you can rename any of them. RevenueCat's version has years of production use behind it. RevenueDot's is newer, so run Send test event and check AppsFlyer before you rely on it.

Why is an event skipped?

Most often the customer has no $appsflyerId. Once the app sends it, click Retry on the skipped delivery.

Does it send web funnel events?

Yes, opt-in. Add the funnel event types and fill Web app ID and Web S2S token. They go to AppsFlyer's Web S2S API as rd_funnel_viewed, rd_funnel_step_completed and rd_funnel_purchase.

Sources: AppsFlyer · AppsFlyer S2S events API · RevenueCat AppsFlyer integration. AppsFlyer is a trademark of its owner, used to describe compatibility. RevenueDot is not affiliated with or endorsed by it.

Get started

Send AppsFlyer every subscription event.

Start free on RevenueDot Cloud, free up to $10,000 a month in tracked revenue. Integrations are included on every plan.

Already have an account? Sign in · Prefer your own servers? Self-host free