Google Ad Manager
Google Ad Manager is a comprehensive ad management platform that helps publishers sell, deliver, and optimize ads across web, app, and video content.
Setup
Troubleshooting
Overview
Google Ad Manager (GAM) is Google’s comprehensive ad serving platform that helps publishers manage their advertising inventory and maximize revenue. Our integration with Google Ad Manager (GAM) primarily enables you to target your advertising campaigns with Permutive cohorts. Additionally, this integration can be used to ingest ad impressions and clicks into Permutive. This integration is both a Source and Destination:- Source: Permutive is able to ingest ad impressions and clicks.
- Destination: Permutive is able to activate your cohorts in GAM.
- Send Permutive cohorts to your ad server so that they can be used for decisioning and targeting in real-time.
- Track ad impressions and clicks in Permutive, for insights, retargeting or modeling.
- (Advanced) Ad Logs: Capture every ad click in Permutive through Ad Logs in GAM 360.
- (Advanced) Campaign Optimization: Optimize your GAM campaigns with Permutive’s AI.
Environment Compatibility
Prerequisites
- Network Code - You must provide your Network Code, which is displayed in your GAM dashboard.
- Permissions - You must grant Permutive permission to create targeting keys and values in your GAM account. This allows Permutive to programmatically create targeting key-values when you configure cohorts for activation into GAM. To do this, assign dfp@permutive.com a custom role with the following permissions:
- View ad units, placements and key-values
- Edit ad units, placements and key-values
- Edit key-values values
- Access to Inventory tab
Setup
- Primary Setup Steps
- Web
- iOS
- Android
- API Direct
1
Enable in Permutive Dashboard
You must enable the Google Ad Manager integration in the Permutive dashboard, if this has not already be done. Please ensure you’ve already granted permissions in GAM appropriately (see prerequisites).
In the Permutive dashboard, navigate to your workspace’s integrations page. Click Add Integration and select Google Ad Manager.
You will be asked to enter your Network Code at this stage.
2
Check Key-Values in GAM
In your GAM dashboard, head to “Inventory” => Key-Values and search for
permutive. You should find that a targeting key has been created for permutive, with the Reportable attribute set to On. If the Reportable attribute is Off, click on permutive and select include values in reporting. Hit Save. If you cannot find the targeting key-value, please reach out to Permutive Support.3
Verify Setup
In the Permutive Dashboard, navigate to one of your cohorts. Check that the Google Ad Manager activation sync is visible. You can try toggling this to On. After doing this, in your GAM dashboard you should see a new targeting value created under the permutive targeting key, with the value corresponding your cohort’s ID. This verifies your integration setup is successful.
Usage
- Activate Contextual Cohorts in GAM — target ads based on page content without the Permutive SDK
- Optimize your campaigns with Campaign Optimization
Data Types
With your GAM integration setup, you’ll see the following additional event types collected in Permutive:SlotViewable
SlotViewable
Tracks for every ad impression that becomes viewable. Based on Google Publisher Tag’s ImpressionViewableEvent.
number
The Advertiser ID for this impression, from GAM.
number
The Line Item ID for this impression, from GAM.
number
The Campaign ID for this impression, from GAM.
number
The Creative ID for this impression, from GAM.
string
The service name, from GAM.
string
The ad unit path, from GAM.
string
The slot element ID, from GAM.
SlotClicked
SlotClicked
Tracks a subset of your ad clicks.
number
The Advertiser ID for this impression, from GAM.
number
The Line Item ID for this impression, from GAM.
number
The Campaign ID for this impression, from GAM.
number
The Creative ID for this impression, from GAM.
string
The service name, from GAM.
string
The ad unit path, from GAM.
string
The slot element ID, from GAM.
boolean
Indicates whether an empty creative was served.
number
The width of the creative served.
number
The height of the creative served.
Troubleshooting
Unable to enable Google Ad Manager integration in Permutive Dashboard
Unable to enable Google Ad Manager integration in Permutive Dashboard
If you see an error when enabling the Google Ad Manager integration, check that you have granted the correct permissions to dfp@permutive.com (see Prerequisites).
The `permutive` targeting key was not created
The `permutive` targeting key was not created
Double check that you have granted the correct permissions to dfp@permutive.com (see Prerequisites).
In rare cases, you may have reached GAMs limit of 200 active targeting keys. In this case, you must remove an old/inactive key to enable Permutive.
Permutive targeting values not appearing in ad requests
Permutive targeting values not appearing in ad requests
If Permutive cohorts are not being passed to GAM, check the following:
- Timing Issue: Open your browser console and append
?googfcto your site URL to access the GAM console. Look for the “permutive” targeting key in the Page Request tab. If Permutive values appear after “Calling fillslot”, the targeting is being set too late. To fix this, ensure the Permutive tag loads as early as possible in the page<head>, ideally beforegoogletag.enableServices()is called. - Missing Cached Segments: Deploy the GAM-specific JavaScript snippet (shown in the Web setup tab) to ensure cached cohorts from previous sessions are always available for targeting.
- First Pageview Targeting: If first-pageview targeting is critical, consider implementing a timeout that waits for Permutive to load before enabling GAM services.
Mobile app not passing Permutive segments to GAM
Mobile app not passing Permutive segments to GAM
For iOS and Android apps, verify the following:
- iOS: Confirm you’re calling
Permutive.shared.googleCustomTargeting()and passing the result to yourGAMRequest.customTargetingproperty. If using a PageTracker, pass it as a parameter to include theprmtvvidfield. - Android: Ensure you’ve added the
com.permutive.android:google-adsdependency and are using.addPermutiveTargeting(permutive)or.buildWithPermutiveTargeting(permutive)on yourAdManagerAdRequest.Builder. - AAID/IDFA: Use a proxy tool (like mitmproxy) to verify the Permutive SDK is tracking the AAID (Android) or IDFA (iOS) identifier. On Android, this requires explicit implementation as outlined in the developer documentation.
- Event Validation: Check that Permutive events are being accepted (HTTP 200 response) and not rejected (4xx response). Enable debug mode on Android with
setDeveloperMode(true)to see detailed logs.
Low targetable impression volume
Low targetable impression volume
If your targetable impression volume is lower than expected:
- Ensure the Permutive tag loads early in the page lifecycle, preferably in the
<head>tag rather than through a tag manager. - Implement the GAM-specific JavaScript snippet to read cached cohorts from local storage, ensuring returning visitors are immediately targetable.
- Review the timing of when
googletag.enableServices()is called relative to Permutive initialization. Consider adding a configurable timeout (e.g., 2 seconds) to wait for Permutive before enabling GAM services.
Changelog
June 2025
- Enhanced support for activating Contextual Cohorts via GAM
For detailed changelog information, visit our Changelog.