Rheo documentation
Developer Guide

AppsFlyer attribution

Merge install and deep-link payloads from AppsFlyer into SDK session attributes for decision nodes (plan-gated).

Purpose

When your workspace plan includes attribution and the app has AppsFlyer turned on under App settings → Integrations, channel resolve advertises AppsFlyer as enabled. The React Native SDK may then subscribe to react-native-appsflyer when your app installs it (not an SDK peer), normalize install and deep link payloads, and merge the result into sdkAttributes for decision nodes.

How to

  1. Install and configure AppsFlyer in your host app per AppsFlyer docs (dev keys, app id, ATT prompts on iOS as required).

  2. Install react-native-appsflyer in your host app (>=6) so the SDK can register listeners after a successful resolve.

  3. In Rheo, open App settings → Integrations and enable AppsFlyer, then save.

  4. Ensure the workspace is on a plan that exposes attribution (Grow or above); otherwise resolve keeps the flag off regardless of the toggle.

  5. In the flow builder, use decision nodes that read sdk.* attributes; the normalized snapshot keys appear alongside other session traits.

SwiftUI (coming soon)

Flutter (coming soon)

Normalized attribute keys

Install and deep-link payloads map to universal keys your decision nodes can read:

PrefixExamples
acquisition.*Install campaign, media source, ad set
link.*Deep link path, referral parameters
attribution.*Provider metadata and observation timestamps

Values merge on top of host sdkAttributes. A 24-hour device cache fills gaps when a cold open delivers no MMP payload; live callbacks always override the cache.

Behaviour and limits

  • Provider-agnostic pipeline — The attribution runtime registers the built-in AppsFlyer adapter by default; advanced hosts can adjust provider lists via SDK options.
  • Caching — Attribution context is cached on the client (typically 24 hours) to avoid hammering the MMP while keeping experiments and decisions reasonably fresh between sessions.
  • No server-side AppsFlyer secret — Rheo does not replace your AppsFlyer SDK; we consume events your app already receives.

Troubleshooting

  • Decisions never see MMP fields: confirm plan entitlements, integration toggle, react-native-appsflyer installed, and that resolve indicates AppsFlyer is enabled for the app.
  • iOS review / privacy: align ATT timing with Apple guidelines; the builder warns when flows mix attribution-sensitive steps with incomplete guidance.