At a glance: Integrate your Google Ads account with AppsFlyer to display attribution data from all of your campaigns.
Set up the Google Ads integration in AppsFlyer to measure and attribute installs and in-app events from your Google Ads campaigns. In AppsFlyer, this integration is named googleadwords_int, and attribution results are reported under the media source googleadwords_int.
Google Ads Attribution Flow with Advanced Data Sharing
- AppsFlyer sends install events to Google, as usual. If Advanced Data Sharing is ON, installs are sent with or without a device ID. If it's OFF, installs are sent only when a device ID is present.
- Google attempts to claim the install either via a deterministic claim (ID match, using the device ID if available) or a non-deterministic claim (when device ID is not available), using probabilistic modeling.
- In both cases, Google responds to AppsFlyer with a claim—either deterministic or non-deterministic.
- AppsFlyer validates the non-deterministic claim using its own probabilistic modeling. Only validated claims are accepted.
- After validation, the Google claim (if accepted) enters the attribution decision step, where AppsFlyer compares it against other potential attribution candidates (e.g., other SRNs, click-based networks, organic). The install is attributed to the winning source based on AppsFlyer’s attribution logic and priority rules.
- If the claim is accepted and selected as the winning candidate, the install is attributed to Google. In raw data reports, deterministic claims will show a match_type of
srn, while non-deterministic claims will show a match type of “probabilistic”.
Configuring Google Ads attribution for advertisers
To start attributing Google Ads campaigns with AppsFlyer, follow these steps:
Step 1: Verify ICM prerequisites
Make sure the requirements below are met to support Google PMOD install claims on iOS via AppsFlyer. This is necessary for enabling Google’s On-Device Measurement (ODM). No SDK update is needed for Android.
- Update AppsFlyer’s iOS SDK to v6.17.7 or higher (no additional SDK configuration is required).
- For Google SDK update, one of the following:
- Google’s Firebase iOS SDK v11.14.0 or higher. For more information, see the Google documentation. OR
- Google ODM standalone SDK. For more information, see the Firebase documentation.
Make sure that IDFV is sent to AppsFlyer with every app open or in-App event.
Make sure the IP address is sent to AppsFlyer with every app open event. When IP masking is configured for the app, ICM might not work.
Step 2: Create the Google Ads Link ID (mandatory)
Creating a link ID requires Google administrative access to the account. Follow the steps below or the Google documentation.
- Log in to your Google Ads admin account.
- From the top menu, click Tools and settings.
- Under the Setup menu, select Data manager and click + Connect Product.
- In the Data sources search bar, type "Third-party app analytics", select it, and click Continue.
- Click Create link ID.
- Select AppsFlyer as your app analytics provider.
- Select the platform, Android or iOS.
- Find your app and select it.
- Click Create link ID.
Step 3: Set up Google Ads on AppsFlyer (mandatory)
(Any member in AppsFlyer's account)
- In AppsFlyer, from the side menu, select Collaborate > Partner Marketplace.
- Search for Google Ads and select it.
- Click Set up integration. You’re directed to the integration setup page.
- From the Integration tab, turn on Activate partner.
Note: The toggle must stay on (activated) for as long as you work with the partner. - Paste the Link ID you copied in the previous step.
- Decide whether or not to turn on Non EU users.
-
Turn Advanced data sharing ON or OFF. When ON Google Ads receives postbacks and events with device-level identifiers for all devices, including devices that have not made their Advertising ID (IDFA or Google advertising ID) available.
Furthermore, when Advanced Data Sharing is ON, AppsFlyer attributes these events. When OFF, only postbacks and events from devices with an IDFA are sent and attributed.
- Configuring Install attribution:
-
Set the Install click-through lookback window.
Select the lookback window units (hours or days) and set the slider to the desired value. We recommend setting the lookback window to 30 days to match with Google Ads.Note
Due to Google Ads' limitations, engaged views and engaged clicks are reported as clicks on iOS.
- [Optional] If you run pre-registration campaigns for Android apps, set the Pre-registration campaign lookback window (default is 90 days). This slider determines the lookback window for attributing installs to pre-registration campaigns.
-
Enable Install view-through attribution.
Note
Due to Google Ads' limitations, view-through attribution is not supported on iOS.
-
Select the lookback window units (hours or days) and set the slider to the desired value. We recommend setting the view-through lookback window to 1 day to match with Google Ads.
Note: Google doesn't send claims for iOS app impressions. The install view-through attribution toggle and the lookback window slider are no longer relevant for iOS apps.
-
-
The Reinstall attribution toggle is turned on by default for new integrations. Reinstall attribution lets you measure users who reinstall your app during their re-attribution window.
No separate lookback window configuration is needed, as reinstall attribution uses the values from your install attribution settings. For more information, see Measure reinstalls.
Important!
A reinstall conversion data is presented as a session_start on Google Ads dashboard. In AppsFlyer, it is attributed and seen as a re-attribution.
- Configure Re-engagement attribution:
- Enable retargeting in App Settings.
- Enable re-engagement attribution in Google Ads integration settings
- Set the Re-engagement click-through lookback window, which is the period of time, starting from an ad click, during which the app must be launched for the click to be recorded as a re-engagement. Select a lookback window in hours or days and set the slider to the desired value.
- Enable Re-engagement view-through attribution.
Note: Google doesn't send claims for iOS app impressions. The install view-through attribution toggle and the lookback window slider are no longer relevant for iOS apps. - Set the Re-engagement view-through lookback window, which is the period of time, starting from an ad impression, during which the app must be launched for the impression to be recorded as a re-engagement. Select a lookback window in hours or days and set the slider to the desired value.
- Set the Re-engagement window. This is the period when the user's in-app events are attributed to the retargeting media source, following either a click or an impression. You can set the value in days (1-90), hours (up to 23), or even lifetime. The default is 30 days.
- If you have a Google Ads iOS app asset (formerly known as app extension):
To get attributions from the ad link, go to the Attribution link tab, create an AppsFlyer single-platform attribution link, and insert it into the Google Ads app asset.
Note: Make sure to add a static campaign name (mandatory). - Go to the Cost tab.
- Turn on Get cost, clicks and impressions data.
- Click the Connect Google Ads button, and log into your Google account to get all your Google Ads campaign costs on AppsFlyer. More details here.
- Click Save.
Stop!
- To view AppsFlyer attributions for installs and re-engagements in Google Ads, make sure to import the following AppsFlyer events:
- "First open" (for installs)
- "Session start" (for re-engagements)
- You MUST go through step 4 to see Google Ads installs in AppsFlyer. If you also need to map your in-app events to Google Ads, go through step 5 first.
Step 4: Import your app conversions (mandatory)
Important!
For Google Ads to register your new conversions, you must launch your app and perform your mapped in-app events at least once. To test iOS apps, you must collect IDFA to see the event. It may take up to 6 hours until the event conversions are added to the queue. Once they are added you can import them, and the new conversions change status from “No recent conversion” to “recording conversion".
This step requires Google administrative access to the account to create a link ID.
Follow the steps described in the Google Ads Help documentation. Take note of the following:
- Set the first_open event as a conversion event for all your apps (required for install measurement).
- Set the session_start event as a conversion event if you plan to measure re-engagements with Google.
-
Repeat this process for each in-app event you wish to measure with Google.
Note
If the Partner Event identifier in Google Ads has been changed or is labeled as CUSTOM, while the corresponding event name has been modified in AppsFlyer, you will need to re-import the data.
- After finishing the process, you can see your third-party conversion events on the Conversions > Summary page. If an event doesn't appear in the list, or it has been removed from the Google Ads conversion list
- Click View all conversion actions. The Status filter appears.
- Click Status and select All to see all events, including disabled and removed events.
- Ensure your "include in conversions" setup is aligned with your campaign goals in Google Ads. For more information, consult with your Google representative or refer to the Google documentation here.
Congratulations! You're now measuring Google Ads mobile campaigns with AppsFlyer!
Step 5: Map your in-app events (recommended)
(Any member attached to the AppsFlyer's account)
-
Go to the Integration tab and scroll down to the In-app event postbacks section.
Note
When enabling the Google Ads in-app events mapping for an app for the first time:
- The af_app_opened event is automatically defined and mapped to session_start (if not, add it manually).
- Under for users from, you must select All media sources, including organic for each event to enable Google Ads to receive these events. After the integration was set successfully, you are able to change this selection for any event.
- Turn on In-app event postbacks.
- Click Add event to add an SDK or server-to-server event to the list.
-
Complete the following parameters:
Parameter Name Description AppsFlyer event The name of the event, as received by AppsFlyer either from the SDK integrated into your app or from server-to-server events.
Tip: Don't see the event you are looking for?- Make sure to activate the event on a device with a non-organic installation and recheck.
- Type it in AppsFlyer event, then click Create custom. Read more about custom event mapping.
mapped to partner event The unique name or ID of each event, as defined in Google Ads. Select the most suitable pre-defined AppsFlyer event from the drop-down box. for users from Select the sending option for the event:
- This partner only: Send postbacks only when this event is attributed to Google Ads.
- All media sources, including organic: Send postbacks for events attributed to any partner and organic events.
including - No data (default): Send only the event itself without the event value.
- Values and revenue: Send all the event parameters, including the revenue value (if exists in the event).
- Values without revenue: Send all the parameters excluding the revenue value.
- Click Save integration.
- After saving the integration, while remaining on the configuration page, you can integrate more of your apps with the partner.
- From the top-left corner, under the partner name, click the app name to open the list of apps.
- Select a different app from the drop-down list.
- Repeat the integration steps for the selected app.
Tip
The Google Ads API integration automatically includes the Google Ads remarketing feature. By completing this integration and sending events to Google Ads you are able to create remarketing audience lists in Google Ads without any additional integrations.
Granting permissions to Google Ads team members
You can grant Google Ads permissions to access certain data in your account. You can do this in the Google Ads configuration page under the Permission tab for each one of your apps.
To be able to get these permissions and access your app, your Google Ads representative should be a team member of Google Ads’ partner account on Appsflyer.
Because of Google’s privacy requirements, Google can add new team members to its AppsFlyer partner account only when it’s explicitly requested by an advertiser.
In order to grant a Google Ads team member access to your app, do the following:
- Fill out and submit this form to request your account manager to be added to Google’s partner account on AppsFlyer.
- Wait for the confirmation from Google Ads that your GA account manager has been added.
- Go to Configuration > Active Integrations > Google Ads > Permissions, and add your account manager email to the list of team members.
- Activate the permissions you wish to grant your Google Ads account manager.
Read more about providing permissions to Ad networks.
Enabling Google Ads attribution for agencies
AppsFlyer supports agency configurations with Google Ads. It is essential that the advertiser and the agency have separate Google Ads accounts to enable AppsFlyer to correctly attribute the data. For details, click here.
Running with multiple Google Ads accounts
AppsFlyer supports working with multiple Google Ads accounts for the same app. This is performed through sharing the Link ID in Google Ads and importing the events into each Google Ads account.
For further details on how to share your Google Ads Link ID, click here.
iOS App Campaigns
Note: This section applies to app campaigns for installs and not app campaigns for engagement.
On January 27, 2021, Google announced policy updates to accommodate iOS 14 release.
Since ATT enforcement began, Google iOS apps do not prompt for ATT, and therefore Google Ads products stopped using device identifiers (IDFA) that fall under ATT, except for the YouTube app which supports the ATT prompt.
To preserve reporting and campaign optimization, Google expanded modeled conversions to iOS 14+ traffic.
Since modeled conversions are not reliant on device IDs, starting with the iOS14.5 release, the iOS install app campaign inventory logic employed by Google is as follows:
iOS ACI Search inventory is not attributed by device ID. This follows Google’s January 24, 2020 policy.
iOS ACI Display inventory can be attributed when a device ID is present, provided that both the advertiser app and the publisher app have user consent.
Any iOS ACI campaign can be attributed through ICM. This applies when the device ID is unavailable in the advertiser app, the publisher app, or both.
Google currently claims only clicks on iOS. It does not claim impressions.
Using deferred deep linking in App campaigns
What is a deep link and how does it work?
When a potential user clicks on a feed, they are redirected to the app page. After the user installs the app and launches it, the SDK supplies the specific product details (e.g. running shoes) with deferred deep linking. The app developer uses this data to deliver the relevant user experience within the app.
Deferred deep linking in Google
Google feeds in App campaigns or ad group deferred deep linking enables you to create a smooth content-specific experience for new mobile users. Google enables deep links to be set either in the feed or the ad group—and AppsFlyer supports both cases for deferred deep linking.
To enable deferred deep linking with Google Ads:
- Make sure to use GCD to receive the
af_dpparameter in the AppsFlyer SDK. - In Google, set up feeds or set ad group level deferred deep linking.
- In AppsFlyer, Go to Configuration > Active Integrations. Select Google Ads (Adwords).
- In the Integration tab, turn on Deferred deep linking with Google Ads.
- Click Save integration.
Google Ads parameter mapping
The following table describes the parameter mapping between Google Ads and AppsFlyer. Note that advertisers can't add personalized parameters to any Google Ads campaigns.
| Network type | Search | Display | YouTube |
|---|---|---|---|
Channel (af_channel) |
See table below, How to populate the Channel parameter | ||
Campaign (c) |
Yes | Yes | Yes |
Campaign ID (af_c_id) |
Yes | Yes | Yes |
Adset (af_adset)Populated by the ad_group_name parameter.If this parameter is null, AF populates af_adset with ad_group_id. |
Yes | Yes | Yes |
Adset ID (af_adset_id) populated by Google ad_group_id parameter |
Yes | Yes | Yes |
Ad (af_ad). |
N/A | N/A | N/A |
Ad ID (af_ad_id)Populated by Google's creative_id parameter. |
Yes | Yes | Yes |
Ad Type (af_ad_type) |
Yes* | Yes* | Yes* |
Site ID (af_siteid) |
GoogleSearch/ SearchPartners |
N/A | YouTubeVideos/ VideoPartners |
| Keywords | N/A | N/A | N/A |
How to populate the Channel parameter
Google Ads doesn't send the Channel(af_channel) parameter. AppsFlyer determines how to populate this parameter for campaign types received from Google Ads, according to the following rules:
| Campaign type AND Network type logic: | Channel parameter | Example | |
|---|---|---|---|
| campaign_type | network_type | ||
| ACI, ACE, ACPRE, Shopping, or Hotel | All network types | campaign_type_network_type | channel = ACI_Search |
|
Not: ACI, ACE, ACPRE, Shopping, or Hotel |
Display | network_subtype | channel = mGDN |
|
Not: ACI, ACE, ACPRE, Shopping, or Hotel |
Not: Display |
network_type | channel = Search |
For more information on what ad types are available in Google's response, see here.
Note
When Google attributes an install through probabilistic attribution (ICM), Google doesn’t share the network_type with AppsFlyer. As a result, the network type is missing, and the channel value is ACI_ (without a suffix).
Campaign type: app campaigns
Changes to campaign names by Google Ads
| Until February 15, 2021 | Starting February 23, 2021 |
|---|---|
| UAC | ACI |
| UACE | ACE |
| UACPre | ACPRE |
Note: Campaign name type is set according to the click or impression date, not the install date.
Engaged view parameter in raw data reports
An engaged view is a user impression of a video ad that lasted more than 10 seconds. It has the same attribution priority as a click. For Android, engaged views are displayed in raw data reports as engaged_view under the Engagement Type and Sub Param 5 parameters.
Engaged views are counted if they occur within the defined click lookback window in AppsFlyer, with a maximum limit of 3 days.
Important!
- Google is an SRN (Self Reporting Network). For more information about how the attribution flow works for these networks, click here.
- AppsFlyer can present any campaign information that is provided by Google. The campaign type (Search, Video, Display) and associated information is determined by Google. For more information, click here.
Optimize Google Ads campaigns for conversions without device ID
Beginning with iOS14.5+ and Android 12+, Google Ads introduced several identifiers. These identifiers are used for deterministic attribution of conversions without device IDs:
| Identifier | Available from | Source | Operating system | Used for | Data granularity |
|---|---|---|---|---|---|
| gclid | December 2021 | Google Play referrer | Android | Installs/ re-installs | User-level |
| gclid | December 2021 | Deep link URL | Android + iOS | Re-engagements | User-level |
| gbraid | March 2021 | Deep link URL | iOS | Re-engagements | Aggregate |
| odm_info | November 2025 | AppsFlyer SDK / S2S | iOS | Installs / re-installs | Aggregate |
In Google Ads and AppsFlyer, advertisers can receive campaign-level data for traffic without device IDs for re-engagement, installs, and re-attribution activity. However, ad-set and ad-level data are not shared by Google.
No action is needed from the advertiser to enable receiving these parameters.
Data visibility by operating system
Android apps:
In AppsFlyer and Google Ads, advertisers can receive full campaign data for traffic without device IDs – both for installs and re-engagements.
iOS apps:
In Google Ads and AppsFlyer, advertisers can receive full campaign data for traffic without device IDs for their re-engagement activity.
Advertising without the Firebase SDK
When advertising with Google Ads without the Firebase SDK implemented, the following limitations apply.
| Limitation | Details |
|---|---|
| tROAS not supported | tROAS (target return on ad spend) optimization is only available when using Firebase SDK revenue events. AppsFlyer revenue events, and those from all other MMPs, are not eligible for this optimization. |
| Audience exclusion not supported | Advertisers can only exclude users from App campaigns when the campaign is optimized toward Firebase SDK events, not MMP events. |
Google probabilistic attribution (ICM) traits and limitations
| Adavanced data sharing Limitation | Details |
|---|---|
| Campaign type supported | Supports App Campaigns for Installs (ACI) only |
| Attribution scope | Supported for installs and re-attribution only; does not support re-engagements. |
| Claim data included |
Google claims include:
Does not include ad set, or ad information. |
| Channel field | No network type or sub-type provided; the Channel field will contain a partial value: ACI_For more information about “Channel” logic, see How to populate the Channel parameter. |
| iOS ODM regional support | Not supported in the EU, UK and Switzerland |
| Aggregated Advance Privacy (AAP) | When the AAP (Aggregated Advanced Privacy) toggle is turned ON in the iOS app settings, Google-attributed data in the raw data reports is shown as restricted. To view Google non-consented data, make sure the AAP toggle is OFF. |
| Attributed touch time | Google probabilistic claims timestamp is rounded to 15-minute intervals (00:00, 00:15, 00:30, etc.) |
See also
- For iOS 14-related considerations, see Google Ads SKAdNetwork interoperability with AppsFlyer.