- OPTION 1 - Use the Branch SDK to manage all calls to SKAdNetwork
- OPTION 2 - Integrate directly with SKAdNetwork to fully control what's sent to Apple
Server-to-Server and TUNE SDK integrations
Any mobile app that uses a server-to-server integration or uses the TUNE SDK, must use OPTION 2 or leverage another 3rd party SDK to send events to SKAdNetwork
- App is registered in the Branch dashboard
- Account is enabled with Branch Universal Ads
- App is available in the Apple App Store
Branch SKAdNetwork Dashboard UI Coming Soon!
The Branch SKAdNetwork dashboard UI is going through some final QA before being made available to all users. This should not delay your app integration planning, as that can be coordinated independently of dashboard setup.
We pull your ID from the iOS app store redirect set in the Configuration page of the Branch Dashboard
SKAdNetwork Config section of the Branch dashboard, select the
YES radio button to have the Branch SDK handle all calls to SKAdNetwork.
Do NOT opt-in if you decide to:
- Integrate directly with SKAdNetwork and call the SKAdNetwork functions natively.
- Use another 3rd party library to handle your app's interactions with SKAdNetwork.
- In the
SKAdNetwork Configsection of the Branch dashboard, select all app events you want Branch to send to Apple for attribution.
- Assign unique values to each event (Apple accepts any number from 0 to 63) that represent their level of importance to you, where 63 is the highest priority and 0 is the lowest priority. Apple will always use the event with the highest priority, regardless if an event with a lower priority was tracked afterwards.
Event mapping must use the top-level event names
For Branch events that use customer_event_alias, the Branch SDK's automated event mapping will not map to those values, so conversion values must be mapped to the top-level event name
- This integration can only accommodate networks & publishers that have registered to support SKAdNetwork with Apple.
- For SKAdNetwork data to appear in the branch dashboard, the networks running your ads must also be setup to pass attribution data to Branch. The list of networks that do so today are here.
The Branch SDK versions below automatically handle SKAdNetwork in-app functionality. If you do not integrate Branch in the platforms below, please integrate directly with SKAdNetwork instead.
- iOS v0.35
- tvOS v0.35
- React Native v.5.0.0
- Segment iOS v.0.1.23
- mParticle iOS v.8.0.0
- Adobe Launch iOS v.1.3.0
- Cordova v.4.2.0
- Capacitor v.2.0.0
- Xamarin v.7.0.6
- Unity v.0.6.6
- Flutter v.1.1.0
- Update the Branch SDK to a version that supports SKAdNetwork
- Import Apple's StoreKit framework into your iOS build
- Confirm the Branch SDK initializes when the app opens. If the SDK is not initializing, have your mobile developer complete the basic Branch mobile integration. Behind the scenes, the Branch SDK will call registerAppForAdNetworkAttribution to ensure Apple attributes the install to an ad network supporting SKAdNetwork.
- Confirm app events are tracked by the Branch SDK. If you want to add new conversion events, you will need to update the app to track those events with the Branch SDK.
Changing Conversion Values
Whenever the Branch SDK tracks an event, it will call updateConversionValue and use the values mapped in the Branch dashboard. If you change the values in the dashboard, the Branch SDK will start using those new values instead.
Tracking different events between SKAdNetwork and the Branch SDK
Based on your SKAdNetwork strategy, it may not always make sense to have the Branch SDK automate the SKAdNetwork in-app integration. Because of Apple's restrictions on conversion values (64 total values, no metadata, etc.), using the existing events you track with the Branch SDK may not be as effective as tracking custom values by integrating directly with SKAdNetwork. For example, if revenue is your most important metric, you can use conversion values to represent differences in revenue "basket size".
Use this approach if you want to manage SKAdNetwork directly, rather than through the Branch SDK.
- Opt-out from having the Branch SDK manage SKAdNetwork in the dashboard setup, and complete the remainder of the dashboard setup
- Import Apple's StoreKit framework into your iOS build
- The first time the app opens (i.e., your "Install" session), call registerAppForAdNetworkAttribution() from the SKAdNetwork class
registerAppForAdNetworkAttribution() only needs to be called once
Subsequent calls to this method have no effect.
- Call updateConversionValue() from SKAdNetwork for every app event you want to send to Apple, and use the same values for each event in the Branch dashboard.
- 72 hours after INSTALL, stop calling updateConversionValue() to align with Branch's tracking methodology. Every time updateConversionValue() is called with a value greater than previous, this delays Apple's attribution of the original Install event by a rolling 24 hour timer.
Updating values in updateConversionValue()
If you change the conversion value for an event, there will be a transition period where users on the latest version of the app will report conversions with the new value, while users on older app versions will continue to report conversions with the older value (until they update their app).
Please also remember to update the values mapped in the Branch dashboard, to ensure reporting is aligned in Branch.
Apple does not have a server-side API to report conversions
SKAdNetwork prevents the ability to connect users to conversions, so integrations that track events server-side must still tell the app to report the conversion to SKAdNetwork. Because the first conversion must occur within 24 hours of install, there will be a chance the event is tracked server-side but the user does not re-open the app within the 24 hour window for it to be reported to Apple.
To mitigate this risk, always track a series of events in-app that typically lead up to the server-side event (i.e., an "add-to-cart" is an event that typically occurs before a "purchase"). These don't replace your server-side event, but can serve as an effective proxy when evaluating ad campaign performance; and can also delay Apple's 24 hour timer to increase the chance of the user reopening the app in time after your server-side event is tracked.
Updated 16 days ago