Self-reporting networks (SRNs)

At a glance: Learn about self-reporting networks (SRNs)—attribution, deep linking, iOS implications, and FAQ. 

SRNs integrated with AppsFlyer

SRN Logo
Apple Search Ads
Google Ads
Google Marketing Platform
Meta ads
Snapchat—Advanced SRN snapchat_logo.png
Tencent Social Ads blobid0.jpg
TikTok for Business—Advanced SRN TTFB_logo__4C_horizontal_black.png
X Ads X Ads logo.png
Yahoo (Oath: Ad Platforms / Yahoo Gemini) verizonmedia.png
Yahoo! Search Ads

Note: SRNs have user-level data use and retention restrictions.


Unlike non-SRNs (ad networks), which use attribution links to report events to AppsFlyer, SRNs self-attribute using the device ID when notified of an install by AppsFlyer. For iOS apps, SKAN and the Aggregated Advanced Privacy framework are used for attribution.

AppsFlyer attribution for both SRNs and non-SRNs is based on: 

  • Last-touch and multi-touch methodologies.
  • AppsFlyer standard attribution logic to sequence the relevant impression and click data. 

How does attribution work with SRNs?

SRNs report events, such as new installs and in-app events, to AppsFlyer in the following way: 

  • Using APIs to communicate with attribution and measurement providers.
  • When third-party attribution providers detect an install, they query the network using the advertising ID.
  • Reporting details of any relevant ad clicks or impressions.

After AppsFlyer performs the attribution, in-app postbacks are sent to the SRN for the duration of the partner data retention period.

How does attribution work with Advanced—SRNs?

Advanced SRNs attribute the same way as SRNs. However, advanced SRNs can also attribute engagements when there’s no device ID (IDFA)—using the Aggregated Advanced Privacy framework and using ID matching and probabilistic modeling through the attribution link.

Install attribution

Potential app users see and interact with multiple ads before they install an app. In general, attribution providers offer advertisers last-touch attribution—this attributes an install to the last click made before the actual install.

When an app is first launched:

  • AppsFlyer checks that: 
    • The app is set to receive traffic from SRNs.
    • The user has an advertising ID.
  • If both conditions are true, AppsFlyer queries SRNs using the advertising ID. 
  • AppsFlyer performs attribution after considering SRN claims.

Install attribution examples

Example A: Assisted attribution


Monday: Network A reports a user click.

Tuesday: Network B reports a video engagement.

Wednesday: Network C reports a click on a playable ad and, 30 minutes later, there is an install.

AppsFlyer attributes the install to Network C and gives Networks A and B credit for assisting with the install.

AppsFlyer gives advertisers assist data (unattributed engagements that occur before an install). This lets advertisers customize their multi-touch or fractional attribution models. For more information, see Assisted installs explained.

Example B: Last click attribution


Network D (SRN) reports a click a few minutes before Network C.

Network C uses standard attribution integration.

AppsFlyer attributes the install to Network C as they had the last click.

Attribution windows

Attribution windows include lookback and view-through. Some SRNs charge advertisers for an install based on Cost per Impression (CPM) and Cost per Action (CPA)—these are based on clicks or impressions that occur within a 1-28 day period.

AppsFlyer attributes install, activity, Effective Cost per Install (eCPI), and Effective Cost per Action (eCPA) based on an advertiser’s preferred attribution methodology and lookback windows.

Advertisers may have to pay for installs based on SRN attribution lookback windows and view-through models.

  • Advertisers expect the AppsFlyer third-party universal attribution methodology to optimize and allocate their ad spend.
  • Why? Because AppsFlyer reports actual eCPI and eCPA based on advertiser-defined terms.
  • SRNs may benefit in the short term as they often define their own payment terms. But, advertisers correct this by using third-party attribution providers.

Deep linking with SRNs

For users to open your app when the link is clicked, you just need to set up App Links/Universal Links/URI scheme. However, to perform deep or deferred deep linking to a specific page or activity in your app, SRNs use their own methods—without involving AppsFlyer's deep linking method. 

So how can you deep link your users and get the relevant data from SRNs?

Direct deep linking

When a user device performs deep linking, direct deep linking with SRNs is done without calling the AppsFlyer deep linking method. In the example below, existing users clicking an ad are redirected to the activity directly using Facebook's methods, while new users get the same experience using AppsFlyer's conversion data. Learn how Meta ads uses OneLink for deep linking


Jill, the mobile marketer of "greatapp", decides to run a deep linking campaign on Meta ads, targeted at general audiences. The campaign redirects any clicking users to a "bonus" activity.
Jack, the mobile developer, adds this logic after getting the conversion data:

  1. Is it Facebook-originated ("is_fb=true")?
  2. If true, get the value of the ad group parameter.
  3. If the value contains the word "bonus", send the user to the "bonus" activity.

Deferred deep linking

In contrast to deep linking, deferred deep linking with SRNs is possible using the AppsFlyer GCD API.  AppsFlyer receives the conversion data and makes it available to the app on the first launch.Using the conversion data, new users who install after clicking on a deep linking/retargeting campaign on an SRN can be redirected within the app upon launch.

Deferred deep linking is supported for Google Ads, Snapchat, and TikTok for Business using the actual deep link value, which can be queried via GCD using the af_dp field. In the case of TikTok for Business, this value can also be accessed from the deep_link_value field. However, with other SRNs, the regular AppsFlyer deep linking parameters aren't present as part of the deep link data. To use this data within the app, the developer needs to employ further logic based on available parameters, such as campaign, ad set, or single ad names.

Note: For Meta ads, deferred deep linking via GCD is available for Android apps using the Google Install Referrer mechanism. It isn't available for iOS apps.

iOS implications

Most SRNs support SKAdNetwork and have the necessary integration with AppsFlyer. 

iOS 14.5 SRN attribution

Starting iOS 14.5, when users give ATT consent in both the advertiser and publisher apps (dual consent), SRN installs, which are recorded in the SKAdNetwork dashboard, are also shown in the traditional dashboards.


  • The traditional dashboard shows a reduction in installs attributed to SRNs. When considering SRN performance, use the SKAdNetwork dashboard. Overall expect a decrease in SRN attributions of installs, with a matching increase in organic installs. However, for advanced SRNs, the impact is lower since they also attribute engagements when there’s no device ID.
  • The SKAdNetwork dashboard updates with a lag of 48-72 hours after installs.
  • Installs brought by Apple Search Ads (ASA) aren't attributed in the SKAdNetwork dashboard.

Sending event postbacks to SRNs

SRNs receiving event postbacks rely on including the device ID in the postback. This enables SRNs to self-attribute reported user actions. Many iOS 14 users are non-consenting, meaning they don't allow access to their device ID (IDFA). In this case, you should expect:

  • A decrease in the number of event postbacks sent to SRNs
  • Discrepancies in the number of event postbacks between SRNs and AppsFlyer—who log all events.


  • If there's no IDFA, postbacks for installs, app opens, or in-app events aren't sent to SRNs (except for this scenario in Google ads). However, some advanced SRNs get aggregated postbacks also when there's no IDFA. 
  • Click ad networks are not affected, as they use their own transaction IDs, and not device IDs, to self-attribute event postback information.


How does retargeting work with SRNs?

Retargeting clicks from non-SRNs are easily identifiable by the existence of the is_retargeting=true parameter in the retargeting attribution link.
With SRNs, there is no similar indication. Instead, to enable attributing re-engagements from SRNs, AppsFlyer uses another logic:

  • Pre-requisites:
    • On the App Settings page, turn on Enable retargeting. 
    • In the Active Integrations page, select the SRN, and turn on Retargeting.
  • With each app launch, AppsFlyer queries the SRN about recent engagements of the device ID with campaign ads for the app.
    • If the SRN responds back with engagement details, AppsFlyer validates the engagement is within the lookback window and beyond the minimum time between re-engagements.
    • Validated engagements are recorded as re-engagements and attributed to the SRN.

What is SRN mistargeting?

SRN campaigns should target a specific audience, but this doesn't always happen: Non-users in user-acquisition campaigns and existing users in retargeting campaigns. 

If one SRN is used to run both user acquisition and retargeting campaigns, this can lead to user mistargeting. As a result, you pay for unintended traffic.

Scenario: An SRN in the AppsFlyer platform is enabled for a user-acquisition campaign.

  • After each app launch, AppsFlyer queries the SRN to check if the advertising ID (user) had a recent engagement.
  • If yes,
    • SRN replies with the campaign name.
    • AppsFlyer determines if it was the first launch (or not) and attributes accordingly:
      First launch: A new install is attributed to the campaign.
      Second or later launch: A retargeting event is attributed to the campaign.

Conclusion: It is wasteful to get retargeting events from a user acquisition campaign.

Is mistargeting a problem?

AppsFlyer data analysts checked Meta ads user acquisition campaigns during a given month.

  • Retargeting was enabled.
  • In 30% of campaigns, at least 15% of targeted users were existing app users.
  • In 5% of campaigns, at least 40% were existing app users.
  • Conclusion: In SRN user-acquisition campaigns, 1 in 10 targeted users is already an existing user. 


Solving the mistargeting problem

Basic solution: Don't include existing app users in a user acquisition campaign.

  • SRN will only target potential new users.
  • Maximizes new user acquisition results for the same budget.
  • Periodically (and manually) update the campaign, for example, once a month.
  • However, time gaps mean that existing users may be targeted in user-acquisition campaigns during the first month after they install an app.

Audiences, an AppsFlyer premium feature, lets you automatically send, on a daily basis, any segment of your user base to dozens of ad networks.

AppsFlyer research shows that solving mistargeting can have a dramatic impact on your marketing and user acquisition efforts.

Why is the Original URL field empty in raw data reports?

Click is performed in the SRN environment but without an AppsFlyer attribution link. Therefore, the click's associated Original URL data is not available to AppsFlyer. 

Dashboard doesn't show SRN clicks and impressions

Click is performed in the SRN environment but without an AppsFlyer attribution link. Therefore, some SRNs don't give click and impression data to AppsFlyer.

Meta ads and Google give some aggregate data to AppsFlyer.

Can agencies configure SRN campaigns?

Does AppsFlyer send postbacks for missing advertising IDs (IDFA/GAID)?

When advertising IDs contain an empty string (“”) or show the value ‘00000000-0000-0000-0000-000000000000’ (zeroed IDFAs), AppsFlyer doesn't send postbacks for installs, app opens or in-app events, except for the following scenarios:
  • As part of the integration for remarketing measurement with Google Ads, when a non-consented iOS user opens the app or performs an in-app event, AppsFlyer sends the gbraid and event info to Google Ads (for the additional_data_json event).
  • On Android, when there’s no device ID but the referrer value contains a gclid (for installs) or a re-engagement event contains a deep link with the gclid parameter, AppsFlyer sends the gclid and event info to Google Ads.
Google Ads gbraid parameter: An aggregated identifier generated by Google that identifies a group of devices and is referenced by the deep link. 
Google Click ID (gclid parameter): A parameter passed in the URL with ad clicks, that identifies the campaign and other click attributes that are associated with the ad. This is used for ad tracking and campaign attribution.