Skip to content

AppsFlyer MMP Setup

PlayOps delegates mobile measurement partner (MMP) attribution to AppsFlyer. Your game embeds the official AppsFlyer Unity SDK, initializes it with a dev key provided by your Tactile integration contact, and optionally forwards a small set of analytics events so they can be attributed in the AppsFlyer dashboard.

Install the AppsFlyer SDK

Follow AppsFlyer’s official Unity installation guide:

AppsFlyer Unity SDK — Installation

The PlayOps SDK does not bundle the AppsFlyer SDK. Use the version and installation method recommended by AppsFlyer (Unity Package Manager, .unitypackage, or OpenUPM) so you get their latest attribution and privacy fixes.

Get your dev key

Your AppsFlyer dev key is issued by Tactile, not by AppsFlyer directly. Request it from your Tactile integration contact — the same person who onboards you to PlayOps. The dev key is shared across iOS and Android builds of a single title.

Initialize AppsFlyer

Initialize the AppsFlyer SDK according to their documentation, passing the dev key from Tactile and your platform-specific app IDs. A minimal Unity setup looks like:

using AppsFlyerSDK;
using UnityEngine;
public class AppsFlyerBootstrap : MonoBehaviour
{
[SerializeField] private string devKey; // provided by Tactile
[SerializeField] private string appleAppId; // iOS App Store ID
private void Start()
{
AppsFlyer.initSDK(devKey, appleAppId, this);
AppsFlyer.startSDK();
}
}

Refer to the AppsFlyer installation docs for the full initialization flow, including ATT (App Tracking Transparency) handling on iOS and consent signals on Android.

Forwarding PlayOps events to AppsFlyer (optional)

If you want user-acquisition campaigns to optimize against in-game behaviour, forward a small set of events to AppsFlyer in addition to logging them through PlayOps analytics.

The following event names are used by the Tactile analytics team:

Event nameWhen to fireNotes
first_purchaseThe player’s first successful in-app purchase.Sends product_id as the event parameter.
in_app_purchaseEvery in-app purchase.Do not send manually — AppsFlyer’s PurchaseConnector tracks and validates iOS/Android IAPs automatically.
ad_revenueAn ad impression that produced revenue.Uses logAdRevenue with ad unit, ad type, placement, and revenue.

in_app_purchase

AppsFlyer’s PurchaseConnector library validates and reports iOS and Android IAP revenue automatically, so the game side does not need to send this event. Enable PurchaseConnector as part of the AppsFlyer SDK setup and purchases will flow through without additional integration work. (Amazon builds are the exception — there, the unvalidated transaction is reported explicitly.)

first_purchase

Fire this event once, the first time a given player completes a purchase. It is forwarded to AppsFlyer with the purchased product identifier:

product_id: <store product identifier>

Use it as a conversion signal for UA campaigns that target paying users.

ad_revenue

Fire this event for every ad impression that generated revenue. It is mapped to AppsFlyer’s logAdRevenue API with the following parameters:

ParameterSource
af_ad_unitAd unit ID
af_ad_typeAd format (rewarded, interstitial, banner, …)
af_placementPlacement name in your game
RevenueRevenue amount in the reported currency
CurrencyISO currency code
NetworkAd network name
MediationMediation network (from config)

Reporting ad revenue lets AppsFlyer compute ROAS (return on ad spend) for UA campaigns that rely on ad-monetized cohorts.