Google’s Performance Max (PMax) campaigns have transformed how paid media teams scale their search, shopping, display, and video advertising. By using machine learning to allocate budget across Google’s entire ad network, PMax often delivers a higher volume of conversions at a lower cost. However, this automation comes with a significant drawback: search cannibalization. Because PMax has permission to bid on search queries across the entire funnel, it frequently intercepts traffic that is already captured by your standard search campaigns. This overlap leads to inflated bids, skewed conversion data, and budget inefficiencies.
The most common victim of this overlap is your brand traffic. If left unmanaged, PMax will naturally gravitate toward your branded search queries because they convert at the highest rate. This action makes the campaign’s return on ad spend (ROAS) look exceptional, but in reality, it is simply stealing low-cost conversions that your dedicated brand search campaigns would have captured anyway. To prevent this, you must implement a strategy of asset group isolation and structural campaign constraints. This guide details how to build a PMax structure that respects your search campaigns and prevents budget waste.
Understanding the Mechanics of PMax Search Cannibalization
To prevent PMax from taking over your search campaigns, you must understand how Google prioritizes ads when there is an overlap. Google uses specific rules to decide whether to show an ad from a standard Search campaign or a Performance Max campaign for a given search query.
If a user’s query matches an exact keyword in your Search campaign, Google will prioritize the Search campaign ad over PMax. This rule applies to both exact match keywords and keywords that resolve to exact matches through close variants. However, if the query matches a phrase or broad match keyword in your Search campaign, Google’s algorithm evaluates both campaigns. It then selects the ad with the higher Ad Rank. Because PMax has access to dynamic assets, video placements, and broader user signals, its calculated Ad Rank is often higher, allowing it to win the placement and bypass your Search campaign.
This dynamic creates a major problem for advertisers. When PMax wins a search query that was targeted by your broad match Search campaigns, it splits your data. You lose the ability to manage bid adjustments, write tailored ad copy, and control landing page destinations for those specific terms. To regain control, you must enforce search isolation.
The Priority Rules: Search vs. Performance Max
To help you visualize how Google allocates queries between your campaigns, review the prioritization rules below:
| User Query Type | Search Campaign Keyword | Winning Campaign | Priority Reason |
|---|---|---|---|
| Identical Match (Exact Query) | Exact Match (e.g., [hiking boots]) | Search Campaign | Google rules prioritize identical exact keywords over PMax. |
| Broad/Phrase Variation | Phrase or Broad Match (e.g., “hiking boots”) | Highest Ad Rank (Search or PMax) | Shared priority; Google selects whichever campaign has the higher Ad Rank. |
| Brand Search Query | No keyword, or Phrase Match | Performance Max (Usually) | PMax bids aggressively on brand terms due to high conversion probability. |
What is Asset Group Isolation?
Asset group isolation is a structural design pattern for Performance Max campaigns. Instead of dumping all your assets, products, and audiences into a single asset group, you create highly segmented asset groups. Each group is dedicated to a specific product category, theme, or audience intent. This structure ensures that Google’s algorithm does not mix creative assets and target queries inappropriately.
For example, if you sell footwear, you should not mix running shoes and dress shoes in the same asset group. Doing so allows Google’s AI to show running shoe images alongside dress shoe headlines, resulting in a poor user experience. By isolating these categories into separate asset groups, you ensure that the creative assets, search themes, and audience signals remain perfectly aligned.
More importantly, asset group isolation allows you to control which search queries trigger specific products. By pairing isolated asset groups with custom search themes and specific landing page exclusions, you prevent PMax from matching queries across categories. This structure keeps your campaign organized and easy to manage.
Step 1: Implementing Brand Exclusions
The first step to preventing cannibalization is protecting your branded queries. You can do this by applying a brand list exclusion to your Performance Max campaign. This feature tells Google’s AI to completely ignore searches that contain your brand name or variations of it.
To implement this, navigate to your PMax campaign settings in Google Ads. Under the additional settings dropdown, locate the brand exclusions option. If you have not created a brand list, you can create one directly by entering your brand name and selecting it from the verified brands directory. Once applied, all search queries matching your brand name will bypass PMax. They will go directly to your dedicated brand search campaigns, where you can control the bids and ad copy.
This exclusion forces your PMax campaign to focus on generic, non-branded search terms. It will look for new customers rather than converting users who are already searching for your brand. While your PMax ROAS may decrease initially, your overall account profitability and new customer acquisition will increase.
Step 2: Building an Account-Level Negative Keyword List
While brand exclusions protect your brand name, they do not protect your generic search terms. To prevent PMax from bidding on high-volume generic terms that you already target in your Search campaigns, you must use negative keywords.
Historically, you had to contact Google Support to apply negative keywords to a PMax campaign. Today, you can apply negative keywords directly at the account level. Go to the account settings panel in your Google Ads account, locate the negative keywords section, and add the terms you want to exclude. These negatives will apply to all campaigns in the account, including Performance Max.
If you only want to exclude keywords from PMax while keeping them active in Search, you must use a campaign-level negative keyword list. To do this, create a negative keyword list under the shared library. Then, use Google Ads Editor or contact Google support to link that list specifically to your Performance Max campaign. This setup ensures that your Search campaigns can target those terms while PMax is excluded.
Step 3: Managing URL Expansion and Final URL Exclusion Rules
By default, Performance Max campaigns have Final URL Expansion turned on. This feature allows Google’s AI to send traffic to any page on your website that it deems relevant to the searcher’s query. While this helps find new search volume, it is a primary driver of search cannibalization. It allows PMax to create dynamic search ads that overlap with your existing Landing pages.
To control this, you have two options. First, you can turn off Final URL Expansion entirely in your campaign settings. This action forces PMax to only send traffic to the specific landing pages you have listed in your asset groups. This is the recommended setting if you have a structured website with highly targeted search campaigns.
Second, if you want to keep URL Expansion on, you must use final URL exclusion rules. You can exclude specific sections of your website, such as your blog, about page, or contact page, from receiving PMax traffic. Most importantly, you should exclude the specific landing pages used in your Search campaigns. This exclusion prevents PMax from matching queries to those landing pages and cannibalizing your Search campaigns.
Step 4: Structuring Asset Groups by Search Themes
To align your asset groups with your search strategy, you must utilize search themes. Search themes allow you to provide Google’s AI with direct indicators of which search queries are relevant to each asset group. This feature bridges the gap between keyword targeting and asset optimization.
When you build an isolated asset group, add up to 25 search themes that define the product category. For example, if you have an asset group for “leather boots,” your search themes should include “men’s leather boots,” “durable work boots,” and “waterproof leather footwear.” This guidance helps the AI understand the intent of the asset group.
Pair these search themes with highly specific assets. Write headlines and descriptions that focus exclusively on the theme. Upload images and videos that display the exact products. This alignment ensures that when Google’s AI matches a query to your search themes, it serves a highly relevant ad experience rather than a generic banner.
A Python Workflow to Audit Search Cannibalization
To identify whether your Performance Max campaign is cannibalizing your Search campaigns, you must analyze your search term data. Below is a Python script using pandas that compares search terms from your Search campaigns against your PMax search terms to identify overlaps and recommend negative keyword additions.
import pandas as pd
# Load Search Campaign search term report
# Required columns: Search term, Campaign, Impressions, Clicks, Conversions
search_df = pd.read_csv('search_terms_report.csv')
# Load PMax Search Category report (exported from Google Ads Insights tab)
# Required columns: Search category, Campaign, Impressions, Conversions
pmax_df = pd.read_csv('pmax_insights_report.csv')
# Clean and normalize search terms
search_df['search_term_clean'] = search_df['Search term'].str.lower().str.strip()
pmax_df['category_clean'] = pmax_df['Search category'].str.lower().str.strip()
# Identify direct overlaps
# We check if the PMax search category matches any keywords in active Search campaigns
overlaps = []
for index, pmax_row in pmax_df.iterrows():
pmax_cat = pmax_row['category_clean']
# Find matching terms in Search campaigns
matching_terms = search_df[search_df['search_term_clean'].str.contains(pmax_cat, na=False)]
if not matching_terms.empty:
total_search_impressions = matching_terms['Impressions'].sum()
total_search_conversions = matching_terms['Conversions'].sum()
overlaps.append({
'PMax Search Category': pmax_row['Search category'],
'PMax Conversions': pmax_row['Conversions'],
'Matching Search Term': ', '.join(matching_terms['Search term'].unique()[:3]),
'Search Campaign Impressions': total_search_impressions,
'Search Campaign Conversions': total_search_conversions
})
overlap_df = pd.DataFrame(overlaps)
# Sort by PMax conversions to highlight the highest-threat cannibalizations
if not overlap_df.empty:
overlap_df = overlap_df.sort_values(by='PMax Conversions', ascending=False)
overlap_df.to_csv('pmax_search_cannibalization_audit.csv', index=False)
print("Audit complete. Cannibalization risks exported to pmax_search_cannibalization_audit.csv")
else:
print("No direct search term overlaps detected between PMax and Search campaigns.")
Campaign Isolation Audit Checklist
Use this checklist to audit your Google Ads account and ensure your Performance Max campaigns are not cannibalizing your active Search campaigns.
Brand Traffic Protection
- Verify that a brand list exclusion is applied to all active Performance Max campaigns.
- Check that your dedicated brand Search campaigns maintain an Impression Share near ninety percent, indicating that PMax is not stealing branded queries.
- Ensure that your brand terms are added as negative keywords in your generic search campaigns to prevent internal overlap.
Asset Group Segmentation
- Confirm that different product categories are separated into dedicated asset groups rather than being mixed in a single group.
- Check that each asset group contains unique images, videos, and headlines that align with the specific search themes.
- Verify that audience signals are customized for each asset group to guide the machine learning algorithm to the correct buyer persona.
URL and Search Theme Settings
- Review the Final URL Expansion settings. If it is turned on, confirm that URL exclusion rules are applied to all Search campaign landing pages.
- Ensure that search themes are populated for each asset group and directly match the product theme.
- Check that no search themes overlap between different asset groups, which would cause internal bidding competition.
Conclusion
Performance Max is a powerful tool for driving volume, but it requires boundaries to operate efficiently. By applying brand exclusions, account-level negatives, and URL rules, you set the parameters. By isolating your asset groups and pairing them with specific search themes, you ensure that the machine serves highly relevant ads. This structural discipline prevents search cannibalization, protects your margins, and allows your Search and PMax campaigns to work together to drive growth.
Frequently Asked Questions
Why does Performance Max target my brand keywords?
PMax targets brand keywords because they have a high conversion rate. The machine learning algorithm optimizes for conversions, and brand terms are the easiest way to hit conversion goals, even if it cannibalizes your existing Search campaigns.
What is the difference between brand exclusions and negative keywords?
Brand exclusions are settings in PMax that exclude traffic related to specific brand entities. Negative keywords are list-based exclusions that prevent ads from showing for specific search term matches at the campaign or account level.
Should I turn off Final URL Expansion in PMax?
Yes. If you have highly targeted Search campaigns and want to control exactly where users land, turn off Final URL Expansion. If you keep it on, make sure to exclude your Search campaign landing pages.
How many search themes can I add to a PMax asset group?
You can add up to 25 search themes per asset group. These themes act as signals to help Google’s AI understand what search queries are relevant to your creative assets.





Leave a Reply