View as Markdownllms.txt

Integrations

Integrations

AppRefer attributes each install to the ad that brought it, sends your conversions back to that network from the server, and imports ad spend so you can see cost and ROAS next to revenue.

Choosing between AppRefer and a separate attribution tool? Read our AppsFlyer alternative comparison.

Ad networks

Each network is set up per app, in the dashboard under Settings → Integrations, with the REST API (PATCH /api/v1/apps/{appId}/integrations/{network}, scope integrations:write) or with the MCP tool configure_integration. Credentials are encrypted at rest and masked on every read.

NetworkAttribution signalConversions sentSpend syncGuide
Metafbclid on /api/c/ links, plus the browser fbc/fbpConversions API (dataset), for app and website eventsYes, per ad account, in the account's currencyMeta
Google Adsgclid on the /g/ landing page or Google Play Install ReferrerData Manager API, one conversion action per eventYes, per Customer IDGoogle Ads
TikTokttclid on /api/c/ linksEvents API (pixel)Yes, per advertiser, in the advertiser's currencyTikTok
ChatGPT Ads (beta)oppref on the /o/ landing pageOpenAI Conversions APIYes, USD ad accounts only, for listed campaign IDsChatGPT Ads
X Adstwclid on the /x/ link (website funnels only)Web Conversion API, verified website receipts only. Off until you enable itNoX Ads
Apple AdsApple AdServices token, sent by the iOS SDK on first launchNone (Apple has no conversions API)Yes, from the Apple Search Ads APIApple Ads
SKAdNetwork / AdAttributionKitAnonymous postbacks from AppleConversion values, set on the device by the SDKNoSKAdNetwork

Purchases and support

IntegrationWhat it doesGuide
AppRefer BillingApp Store, Google Play and Stripe subscriptions verified by AppRefer itself. Every purchase, trial and renewal is attributed and forwarded like any other conversion.Billing setup
RevenueCat (legacy)Purchase webhooks for apps that still use RevenueCat. New apps should use AppRefer Billing.RevenueCat
Superwall (legacy)Purchase webhooks for apps that still use Superwall (network superwall, field webhookSecret).
Support deliveryPush (APNs, FCM) and email settings for AppRefer Support replies live on the support integration, not on an ad network.Support

How forwarding works

  1. The install is attributed to one network, or to organic. See Attribution.
  2. A conversion arrives: an install or an event from the SDK, a purchase or trial from AppRefer Billing (or a legacy RevenueCat or Superwall webhook), or a verified receipt from your payment backend (website payments).
  3. Tracking consent is checked on every send. An install whose user denied tracking is never forwarded. While the user hasn't answered the iOS prompt yet, conversions are held for about 6.5 hours and sent if they allow it. See Privacy.
  4. The event is routed. An attributed install only ever reaches its own network. Organic and unattributed conversions go to every connected Meta, TikTok and ChatGPT Ads integration, and to Google only when a gclid is known, so each network's optimisation sees the full picture. X and Apple Ads never receive organic events.
  5. The event name is mapped to the network's own event. Meta and TikTok only receive events with a default or custom mapping, or that already use one of their standard event names; other in-app events (app_opened, paywall_viewed…) are dropped. Google only receives events mapped to a conversion action, and X only events mapped to an X event ID.
  6. It is sent from the server with a stable event ID and the original click ID. Failures are retried automatically with the same event ID, so the network can deduplicate, and every attempt is logged.

Test data is never forwarded

Events sent with a pk_test_ key and App Store or Google Play sandbox purchases are recorded for debugging but never sent to an ad network.

Test a connection

In Settings → Integrations, pick Meta, Google Ads, TikTok or ChatGPT Ads and click Test Connection. Google and ChatGPT Ads run a validate-only request that records nothing. Meta and TikTok send one test event: set a Test Event Code first so it lands in the network's Test Events view, otherwise it counts as a real event.