Custom rules notify you of violations to best practices before posting changes. These notifications can appear as warnings or errors. There’s a set of built-in, recommended rules set as warnings, and you can edit these to meet your needs.
Built-in custom rules
These rules are built-in by default, but you can customize or disable any of them. Custom rules apply to all campaigns, including all enabled, paused, pending, or draft campaigns. Custom rules don’t apply to removed or finished campaigns.
Description | Alerting condition | Rationale |
---|---|---|
Text ad needs a second description line and a third headline |
If your expanded text ad doesn’t include a second description and a third headline, you’ll be reminded to enter them. Note: Refer to detailed explanation. |
More text means more room to convey your message, and can improve your click-through rate (CTR). Learn more |
Tracking template uses HTTP instead of HTTPS |
If your tracking template uses the HTTP protocol (instead of HTTPS), you’ll be reminded to update it. Using HTTP in the tracking template can disrupt your click measurement and redirect systems. Note: Refer to detailed explanation. |
Using HTTP in the tracking template can disrupt your click measurement and redirect systems. Learn more |
Sitelinks with no descriptions |
Warn if you try to add or edit sitelink feed items that don’t have description text associated with them. Note: Refer to detailed explanation. |
Sitelink assets with description text can improve your CTR. Learn more |
Fewer than 4 sitelink assets |
Warn if there aren’t at least 4 sitelinks at the account level, Search campaign level, or at least one sitelink for each ad group within the campaign. Note: Refer to detailed explanation. |
Use at least 4 sitelink assets to make your ads more prominent, which can increase CTR. Learn more |
Fewer than 4 callout assets |
Warn if there aren’t at least 4 callouts at the account level, Search campaign level, or at least one callout for each ad group within the campaign. Note: Refer to detailed explanation. |
Use at least 4 callout assets to make your ads more prominent, which can increase CTR. Learn more |
Campaign has no ad groups |
Warn if a campaign has been created but doesn’t contain any active ad groups. Note: Refer to detailed explanation. |
Your campaign can’t serve because it contains no active ad groups. Create a new ad group or change the status of an existing ad group to "Enabled". Learn more |
Ad group has no ads |
Warn if an ad group has been created but doesn’t contain any active ads. Note: Refer to detailed explanation. |
Your ad group contains no active ads. Create a new ad or change the status of an existing ad to "Enabled". Learn more |
Non-serving Search ads |
Warn if a Search ad doesn’t contain any targeting information. Note: Refer to detailed explanation. |
Your ads can’t serve from this ad group because it has no active keywords or dynamic ad targets added to it. Learn more |
Non-serving Shopping ads |
Warn if the Shopping ad group has no product group. Note: Refer to detailed explanation. |
Your ads can’t serve from this ad group because it has no product groups added to it. Create a product group. Learn more |
No structured snippet assets |
Warn if a Search campaign has been created but doesn’t contain structured snippet assets. Note: Refer to detailed explanation. |
Use at least 1 structured snippet asset to make your ads more prominent, which can increase CTR. Learn more |
Not targeting Search Partners |
Warn if a campaign isn’t targeting Search Partners. Note: Refer to detailed explanation. |
Showing your ads on partner sites can help increase your ads’ reach and traffic. Clickthrough rates on search partners don't affect Quality Scores on Google Search. Learn more |
Manual bidding |
Warn if a campaign is using manual bidding. Note: Refer to detailed explanation. |
Use Enhanced CPC or an automated bidding strategy to bid more efficiently. Learn more |
No optimized ad rotation |
Warn if a Search campaign is not using optimized ad rotation. Note: Refer to detailed explanation. |
Use the "Optimize: Prefer best performing ads" setting to show your best ads. Learn more |
Accelerated delivery |
Warn if a campaign is using accelerated delivery. Note: Refer to detailed explanation. |
Accelerated delivery is likely to use up your campaign's limited daily budget early in the day. Use standard delivery so that the delivery of your ads is spread more evenly throughout the day. Learn more |
No Search audiences |
Warn if a campaign is not using remarketing lists for search ads, customer match, or audiences. Note: Refer to detailed explanation. |
Attach an audience list to get a better return on investment. Learn more |
Fewer than 3 ads (applied to ad groups) |
Warn if there’s only 1 or 2 ads in an ad group and optimized ad rotation is enabled for the Search campaign. Note: Refer to detailed explanation. |
Use at least 3 variations of your ads in your ad groups to let optimized ad rotation show the best performing one, which may improve CTR or CVR. Learn more |
Conversion tracking not set up |
Warn if the account doesn’t have conversion tracking enabled. Note: Refer to detailed explanation. |
Enable conversion tracking to unlock helpful features, like better reporting and automated bidding. Learn more |
Image ads but no responsive ads (applied to ad groups) |
Warn if a Display ad group has image ads but not responsive ads. Note: Refer to detailed explanation. |
You have image ads but no responsive ads in your Display ad group. Use responsive ads to get many more conversions at a similar CPA. Learn more |
Campaign flexible reach set to “Targeting" |
Warn if biddable audiences are added to a Search or Shopping campaign set as “Targeting.” Note: Refer to detailed explanation |
You have Search or Shopping interests and remarketing targeting set to “Targeting” which restricts traffic to just the users in your audience. Use “Observation” to target all users and adjust bids for the ones in your audience. Learn more |
Ad group flexible reach set to "Targeting" |
Warn if biddable audiences are added to a Search or Shopping ad group set as “Targeting." Note: Refer to detailed explanation |
You have Search or Shopping interests and remarketing targeting set to “Targeting,” which restricts traffic to just the users in your audience. Use “Observation” to target all users and adjust bids for the ones in your audience. Learn more |
Targeting optimization disabled (applied to ad groups) |
Warn if an ad group in display campaign has targeting optimization set to disabled. Note: Refer to detailed explanation |
You have targeting optimization disabled. Enable conservative targeting to optimize your targeting to reach people your targeting wouldn’t otherwise reach, at around the same cost per person, automatically. Learn more |
Inactive Search audience targeted (applied to audiences) |
Warn if an audience has fewer than 1,000 active users and is targeted by a Search campaign or ad group. Note: Refer to detailed explanation |
Your audience has fewer than 1,000 active users and is targeted by a Search campaign or ad group. Your ads won’t serve against this list until more active users are added to it. Learn more |
Inactive Display audience targeted (applied to audiences) |
Warn if an audience has fewer than 100 active users and is targeted by a Display ad group. Note: Refer to detailed explanation |
Your audience has fewer than 100 active users and is targeted by a Display ad group. Your ads won’t serve against this list until more active users are added to it. Learn more |
No responsive Search ads (applied to ad groups) |
Warn if there is no responsive Search ad in an ad group within a Search Network campaign that already contains at least one enabled expanded text ad. |
Your Search Network ad group has expanded text ads, but doesn’t currently include a responsive search ad. Improve your ad group performance, by adding a responsive search ad. |
Not targeting Google video partners | Warn if a video campaign that isn’t a TrueView for action campaign isn’t targeting Google Video Partners. | Your video campaign has Google Video Partners turned off. Turn it on to reach more customers beyond YouTube at a more efficient cost. |
Video discovery ad group targeting keyword or topic (applied to ad groups) |
Warn if a video for a discovery ad group is targeting a keyword or topic. | Your video discovery ad group is targeting a keyword or topic, which opts you out of TrueView video discovery ads. Increase your reach by removing keyword and topic targeting. |
TrueView campaign needs discovery ad or different targeting | Warn if the TrueView campaign is targeting only YouTube with only TrueView in-stream video ads. | Your TrueView campaign is targeting only YouTube with only TrueView in-stream video ads. To get your ads running, add a TrueView video discovery ad or target the Google Video Partners or YouTube. |
Budget type mismatch | Warn if the video campaign has start and end dates, but is using an average daily budget. |
Your video campaign has a start date and an end date, but is using an average daily budget. Set your campaign's total budget to automatically pace your budget spending. |
Note: Youtube Search and YouTube Videos networks are now one network called YouTube. You need to update Editor to view the changes in your account, otherwise you may notice an error message if you try to opt out of YouTube Video networks.
Instructions
Editing custom rules
To edit built-in custom rules:
- In the sidebar below the type list, click Custom rules.
- In the data view, select the rule you want to edit.
- In the edit panel, make your changes. You can click Comments to add notes about the rule.
- Above the data view, click Apply rule changes.
To remove built-in custom rules:
- In the sidebar below the type list, click Custom rules.
- In the data view, select the rule you want to remove.
- In the data view, click Remove.
- Above the data view, click Apply rule changes.
To restore the default settings for built-in custom rules:
- In the sidebar below the type list, click Custom rules.
- In the data view, click Restore defaults.
- Above the data view, click Apply rule changes.
To reshow rule violations that you’ve ignored:
- In the sidebar below the type list, click Custom rules.
- In the data view, click Reshow ignored violations.
- Above the data view, click Apply rule changes.
Creating new custom rules
To create your own custom rules:
- In the sidebar below the type list, click Custom rules.
- Click Add custom rule.
- In the edit panel, fill out all the required fields.
- Click Edit below “Applies to” in the edit panel to select what the rule should apply to, such as keywords or text ads.
- Under "Violation criteria," select or enter the conditions that will violate a rule when these conditions are met. All criteria are AND-ed together. In other words, they must all be met for the item to violate the rule.
- Under “Severity,” select whether you’d like the rule to only notify you of violations or prevent changes that violate the rule from being posted.
- Above the data view, click Apply rule changes.
Examples of rules you can create
Here are some examples of violation criteria you can use to create custom rules that notify you whenever:
- An optional field, such as “label,” isn’t entered. Use the following violation criteria:
label=""
- A final URL is missing a domain. Use the following violation criteria:
status = enabled finalurl -: "exampleURLs.com"
- The maximum CPC for a keyword exceeds a certain amount. Use the following violation criteria:
status = enabled maxcpc >= "4.00"
- Call reporting hasn’t been enabled for call assets. Use the following violation criteria:
status = enabled callreporting -= enabled
- An enabled ad group doesn't contain at least two enabled expanded text ads with the text 'abc'
status = enabled COUNT(expandedtextads, status = enabled headline1 : "abc") < 2
Custom rule explanations
Rule: Text ad needs a second description line and a third headline
This rule applies to ads without a second description line and a third headline.
Violation criteria:
descriptionline2 = status adgroupstatus = enabled headline3 = |
Overview
To help advertisers improve the performance of their ads, Google Ads will warn when there is the opportunity to add a second description line and third headline.
Rule: Tracking template uses HTTP instead of HTTPS
This rule applies to tracking templates that use HTTP rather than HTTPS.
Violation criteria:
Tracking template URL string includes HTTP rather than HTTPS.
Overview
Using HTTP in the tracking template can disrupt your click measurement or redirect systems. We strongly recommend that you use HTTPS.
Detailed explanation
Using HTTP in the tracking template can disrupt your click measurement or redirect systems. We strongly recommend that you use HTTPS. Learn more
Rule: Sitelinks with no descriptions
Violation criteria:
status associationtype descriptionline1= descriptionline2= |
Overview
The filter above has 3 root-level conditions. From top to bottom, it is looking for:
- Enabled campaigns
- that have a type of Search
- that have sitelinks but no description text
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 3 top-level conditions here and they must all match.
status = enabled |
Only look at enabled sitelinks; ignore those marked for deletion.
associationtype=specific |
Only look at associations of actual shared sitelinks; ignore special <sitelinks disabled> items.
descriptionline1= descriptionline2= |
Look for sitelinks that have both description line 1 and description line 2 empty.
Rule: Fewer than 4 sitelink assets
Applies to: Campaigns
Violation criteria
status campaigntype OR( AND( EXIST(sitelinks, associationtype COUNT(sitelinks, approvalstatus ) AND( NOTEXIST(sitelinks) CONTAINER( COUNT(sitelinks, approvalstatus ) ) ) EXIST(adgroups, status NOTEXIST(sitelinks, approvalstatus NOTEXIST(sitelinks, associationtype |
Overview
The filter above has 4 root-level conditions. From top to bottom, it is looking for:
- Enabled campaigns
- that have a type of Search
- and that don't have the minimum of 4 resolved sitelinks or explicitly disable them
- and that have at least one ad group that has no sitelinks and doesn't disable them either
If all these conditions are true, the campaign will be marked with a warning, the default severity for all custom rules.
Note: if you would like to simply change the number of sitelinks required, there are two separate "4" values to change: the count for sitelinks at the campaign level, and the count at the account level, both of which are in the overall OR function.
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 4 top-level conditions here and they must all match.
status = enabled |
Only enabled campaigns can be flagged.
campaigntype = search |
Only those enabled campaigns that have a type of Search can be flagged.
OR( AND( EXIST(sitelinks, associationtype = specific) COUNT(sitelinks, approvalstatus -= (disapproved, sitesuspended)) < 4 ) AND( NOTEXIST(sitelinks) CONTAINER( COUNT(sitelinks, approvalstatus -= (disapproved, sitesuspended)) < 4 ) ) ) |
The OR function is a little more complicated, so let's look at the pieces from the inside out.
EXIST(sitelinks, associationtype = specific)
checks if there exists at least one shared sitelink associated with the campaign. The associationtype = specific
condition tests if sitelinks refer to a shared sitelink from the shared library. Other sitelinks, such as <sitelink disabled>
entries, wouldn't pass this filter condition.
Next, COUNT(sitelinks, approvalstatus -= (disapproved, sitesuspended)) < 4
checks if there are fewer than 4 approved sitelinks associated with the campaign. These two conditions are grouped in an AND function, meaning they both have to match. So this portion asks: Are any shared sitelinks associated with this campaign, and if so, are there fewer than 4 approved?
The next AND condition is similar, but uses NOTEXIST to check if no sitelinks, even special entries like <sitelink disabled>
, are associated with the campaign. It also wraps the COUNT portion in a CONTAINER function to count sitelinks for the owning container: the account. Putting these two together in an AND function, it asks: Are there no sitelinks associated with this campaign (not even special sitelinks), and if not, are there fewer than 4 of them approved at the account level?
Because those two questions are wrapped in an OR function, this filter condition asks if the answer to at least one of those two questions is "yes." In other words, it is asking: If there are any shared sitelinks associated with this campaign, are there fewer than 4 approved, but if there are none at the campaign level, and the campaign doesn't explicitly disable sitelinks, are there fewer than 4 approved at the account level. Or, seeing that when the campaign has no sitelinks, they will be "inherited" from the account, the question is more simply: Does the campaign have fewer than 4 resolved sitelinks and not disable them?
EXIST(adgroups, status = enabled NOTEXIST(sitelinks, approvalstatus -= (disapproved, sitesuspended)) NOTEXIST(sitelinks, associationtype -= specific)) |
This EXIST function is checking if there are any ad groups in the campaign that meet the specified filter, in which all conditions must match an ad group for it to be counted. The first condition, status = enabled
, is only looking for enabled ad groups in the campaign.
NOTEXIST(sitelinks, approvalstatus -= (disapproved, sitesuspended))
then looks for ad groups that have no approved sitelinks attached.
Finally, NOTEXIST(sitelinks, associationtype -= specific)
restricts it even further to look for ad groups that don't have any special sitelinks, such as <sitelink disabled>
entries. So overall, this filter condition checks if the campaign contains at least one ad group that has no sitelinks and doesn't disable them either.
Rule: Fewer than 4 callout assets
Applies to: Campaigns
Violation criteria:
status = enabled campaigntype = search OR( AND( EXIST(calloutextensions, associationtype = specific) COUNT(calloutextensions, approvalstatus -= (disapproved, sitesuspended)) < 4 ) AND( NOTEXIST(calloutextensions) CONTAINER( COUNT(calloutextensions, approvalstatus -= (disapproved, sitesuspended)) < 4 ) ) ) EXIST(adgroups, status = enabled NOTEXIST(calloutextensions, approvalstatus -= (disapproved, sitesuspended)) NOTEXIST(calloutextensions, associationtype -= specific)) |
Overview
The filter above has 4 root-level conditions. From top to bottom, it is looking for:
- Enabled campaigns
- that have a type of Search
- and that don't have the minimum of 4 resolved callout assets or explicitly disable them
- and that have at least one ad group that has no callout assets and doesn't disable them either
If all these conditions are true, the campaign will be marked with a warning, the default severity for all custom rules.
Note: if you would like to simply change the number of callout assets required, there are two separate "4" values to change: the count for callout assets at the campaign level, and the count at the account level, both of which are in the overall OR function.
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 4 top-level conditions here and they must all match.
status = enabled |
Only enabled campaigns can be flagged.
campaigntype = search |
Only those enabled campaigns that have a type of Search can be flagged.
OR( AND( EXIST(calloutextensions, associationtype = specific) COUNT(calloutextensions, approvalstatus -= (disapproved, sitesuspended)) < 4 ) AND( NOTEXIST(calloutextensions) CONTAINER( COUNT(calloutextensions, approvalstatus -= (disapproved, sitesuspended)) < 4 ) ) ) |
The OR function is a little more complicated, so let's look at the pieces from the inside out.
EXIST(calloutextensions, associationtype = specific)
checks if there exists at least one shared callout asset associated with the campaign. The associationtype = specific
condition tests if callout assets refer to a shared callout asset from the shared library. Other callout assets, such as <callout extensions disabled>
entries, wouldn't pass this filter condition.
Next, COUNT(calloutextensions, approvalstatus -= (disapproved, sitesuspended)) < 4
checks if there are fewer than 4 approved callout assets associated with the campaign.
These two conditions are grouped in an AND function, meaning they both have to match. So this portion asks: Are any shared callout assets associated with this campaign, and if so, are there fewer than 4 approved?
The next AND condition is similar, but uses NOTEXIST to check if no callout assets, even special entries like <callout extensions disabled
>, are associated with the campaign. It also wraps the COUNT portion in a CONTAINER function to count callout assets for the owning container: the account. Putting these two together in an AND function, it asks: Are there no callout assets associated with this campaign (not even special callout assets), and if not, are there fewer than 4 of them approved at the account level?
Because those two questions are wrapped in an OR function, this filter condition asks if the answer to at least one of those two questions is "yes." In other words, it is asking: If there are any shared callout assets associated with this campaign, are there fewer than 4 approved, but if there are none at the campaign level, and the campaign doesn't explicitly disable callout assets, are there fewer than 4 approved at the account level? Or, seeing that when the campaign has no callout assets, they will be "inherited" from the account, the question is more simply: Does the campaign have fewer than 4 resolved callout assets and not disable them?
EXIST(adgroups, status = enabled NOTEXIST(calloutextensions, approvalstatus -= (disapproved, sitesuspended)) NOTEXIST(calloutextensions, associationtype -= specific)) |
This EXIST function is checking if there are any ad groups in the campaign that meet the specified filter, in which all conditions must match an ad group for it to be counted. The first condition, status = enabled
, is only looking for enabled ad groups in the campaign.
NOTEXIST(calloutextensions, approvalstatus -= (disapproved, sitesuspended))
then looks for ad groups that have no approved callout assets attached.
Finally, NOTEXIST(calloutextensions, associationtype -= specific)
restricts it even further to look for ad groups that don't have any special callout assets, such as <callout extensions disabled>
entries. So overall, this filter condition checks if the campaign contains at least one ad group that has no callout assets and doesn't disable them either.
Rule: Campaign has no ad groups
Applies to: Campaigns
Violation criteria:
status = enabled campaigntype -= universalapp NOTEXIST(adgroups, status = enabled) |
Overview
The filter above has 3 root-level conditions. From top to bottom, it is looking for:
- Enabled campaigns
- that don't have a type of Universal App (App campaigns)
- and that have no enabled ad groups.
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 3 top-level conditions here and they must all match.
status = enabled |
Only enabled campaigns can be flagged.
campaigntype -= universalapp |
Only those enabled campaigns that don't have a type of Universal App (App campaigns) can be flagged.
NOTEXIST(adgroups, status = enabled) |
This function checks if there are no ad groups contained in the campaign, but only considers ad groups that pass the status = enabled
check. So if the campaign has some paused or removed ad groups, but no enabled ad groups, this condition will still pass and the campaign will be flagged with the warning.
Rule: Ad group has no ads
Applies to: Ad groups
Violation criteria:
campaignstatus = enabled status = enabled NOTEXIST(ads, status = enabled) |
Overview
The filter above has 3 root-level conditions. From top to bottom, it is looking for:
- Ad groups within enabled campaigns
- that are also enabled themselves
- and that have no enabled ads
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 3 top-level conditions here and they must all match.
campaignstatus = enabled |
Only ad groups whose owning campaign is enabled can be flagged.
status = enabled |
Only enabled ad groups can be flagged.
NOTEXIST(ads, status = enabled) |
This function checks if there are no ads, of any type, contained in the ad group, but only considers ads that pass the status = enabled
check. So if the ad group has some paused or removed ads, but no enabled ads, this condition will still pass and the ad group will be flagged with the warning.
Rule: Non-serving Search ads
Applies to: Ad groups
Violation criteria:
status = enabled campaignstatus = enabled campaigntype = search NOTEXIST(dynamicadtargets; keywords, status = enabled) |
Overview
The filter above has 4 root-level conditions. From top to bottom, it is looking for:
- Enabled ad groups
- that are within enabled campaigns
- and are within campaigns with a type of Search
- and that have no enabled criteria
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 4 top-level conditions here and they must all match.
status = enabled |
Only enabled ad groups can be flagged.
campaignstatus = enabled campaigntype = search |
Only enabled ad groups whose owning campaign is enabled and has a type of Search can be flagged.
NOTEXIST(dynamicadtargets; keywords, status = enabled) |
This function checks if there are no criteria applying to Search campaigns contained in the ad group, but only considers criteria that pass the status = enabled
check. So if the ad group has some paused or removed criteria, but no enabled criteria, this condition will still pass and the ad group will be flagged with the warning.
Rule: Non-serving Shopping ads
Applies to: Ad groups
Violation criteria:
status = enabled campaignstatus = enabled campaigntype = shopping NOTEXIST(productgroups) |
Overview
The filter above has 4 root-level conditions. From top to bottom, it is looking for:
- Enabled ad groups
- that are within enabled campaigns
- and are within shopping campaigns
- and that have no product groups
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 4 top-level conditions here and they must all match.
status = enabled |
Only enabled ad groups can be flagged.
campaignstatus = enabled campaigntype = shopping |
Only enabled ad groups whose owning campaign is enabled and has a type of Shopping can be flagged.
NOTEXIST(productgroups) |
This function checks if there are no product groups in the ad group. If none exist, the ad group will be flagged.
Rule: No structured snippet assets
Applies to: Campaigns
Violation criteria:
status = enabled campaigntype = search OR( AND( EXIST(structuredsnippetextension, associationtype = specific) COUNT(structuredsnippetextension, approvalstatus -= (disapproved, sitesuspended)) < 1 ) AND( NOTEXIST(structuredsnippetextension) CONTAINER( COUNT(structuredsnippetextension, approvalstatus -= (disapproved, sitesuspended)) < 1 ) ) ) EXIST(adgroups, status = enabled NOTEXIST(structuredsnippetextension, approvalstatus -= (disapproved, sitesuspended)) NOTEXIST(structuredsnippetextension, associationtype -= specific)) |
Overview
The filter above has 4 root-level conditions. From top to bottom, it is looking for:
- Enabled campaigns
- that have a type of Search
- and that don't have any resolved structured snippet assets or explicitly disable them
- and that have at least one ad group that has no structured snippet assets and doesn't disable them either
If all these conditions are true, the campaign will be marked with a warning, the default severity for all custom rules.
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 4 top-level conditions here and they must all match.
status = enabled |
Only enabled campaigns can be flagged.
campaigntype = search |
Only those enabled campaigns that have a type of Search can be flagged.
OR( AND( EXIST(structuredsnippetextensions, associationtype = specific) COUNT(structuredsnippetextensions, approvalstatus -= (disapproved, sitesuspended)) < 1 ) AND( NOTEXIST(structuredsnippetextensions) CONTAINER( COUNT(structuredsnippetextensions, approvalstatus -= (disapproved, sitesuspended)) < 1 ) ) ) |
The OR function is a little more complicated, so let's look at the pieces from the inside out.
EXIST(structuredsnippetextensions, associationtype = specific)
checks if there exists at least one shared structured snippet asset associated with the campaign. The associationtype = specific
condition tests if structured snippet assets refer to a shared structured snippet asset from the shared library. Other structured snippet assets, such as <structured snippet extensions disabled>
entries, wouldn't pass this filter condition.
Next, COUNT(structuredsnippetextensions, approvalstatus -= (disapproved, sitesuspended)) < 1
checks if there are no approved structured snippet assets associated with the campaign. These two conditions are grouped in an AND function, meaning they both have to match. So this portion asks: Are any shared structured snippet assets associated with this campaign, and if so, are there fewer than 1 approved?
The next AND condition is similar, but uses NOTEXIST to check if no structured snippet assets, even special entries like <structured snippet extensions disabled>
, are associated with the campaign. It also wraps the COUNT portion in a CONTAINER function to count structured snippet assets for the owning container: the account. Putting these two together in an AND function, it asks: Are there no structured snippet assets associated with this campaign (not even special structured snippet assets), and if not, are there fewer than 1 approved at the account level?
Because those two questions are wrapped in an OR function, this filter condition asks if the answer to at least one of those two questions is "yes." In other words, it is asking: If there are any shared structured snippet assets associated with this campaign, are there fewer than 1 approved, but if there are none at the campaign level, and the campaign doesn't explicitly disable structured snippet assets, are there fewer than 1 approved at the account level? Or, seeing that when the campaign has no structured snippet assets, they will be "inherited" from the account, the question is more simply: Does the campaign have no resolved structured snippet assets and not disable them?
EXIST(adgroups, status = enabled NOTEXIST(structuredsnippetextensions, approvalstatus -= (disapproved, sitesuspended)) NOTEXIST(structuredsnippetextensions, associationtype -= specific)) |
This EXIST function is checking if there are any ad groups in the campaign that meet the specified filter, in which all conditions must match an ad group for it to be counted. The first condition, status = enabled
, is only looking for enabled ad groups in the campaign.
NOTEXIST(structuredsnippetextensions, approvalstatus -= (disapproved, sitesuspended))
then looks for ad groups that have no approved structured snippet assets attached.
Finally, NOTEXIST(structuredsnippetextensions, associationtype -= specific)
restricts it even further to look for ad groups that don't have any special structured snippet assets, such as <structured snippet extensions disabled>
entries. So overall, this filter condition checks if the campaign contains at least one ad group that has no structured snippet assets and doesn't disable them either.
Rule: Not targeting Search Partners
Applies to: Campaigns
Violation criteria:
status = enabled campaigntype = (search, shopping) includesearchpartners = disabled |
Overview
The filter above has 3 root-level conditions. From top to bottom, it is looking for:
- Enabled campaigns
- that have a type of Search or Shopping
- and that have Include search partners disabled
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 3 top-level conditions here and they must all match.
status = enabled |
Only enabled campaigns can be flagged.
campaigntype = (search, shopping) |
Only those enabled campaigns that have a type of Search or Shopping can be flagged.
includesearchpartners = disabled |
Only those enabled campaigns of the specified types which have Include search partners disabled can be flagged.
Rule: Manual bidding
Applies to: Campaigns
Violation criteria:
status = enabled campaigntype = (search, shopping, display) accountsupportsconversions = enabled bidstrategytype = manualcpc enhancedcpc = disabled |
Overview
The filter above has 5 root-level conditions. From top to bottom, it is looking for:
- Enabled campaigns
- that have a type of Search, Shopping, or Display
- that are within accounts which support conversion tracking
- that have a bid strategy of Manual CPC
- and that have Enhanced CPC disabled
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 5 top-level conditions here and they must all match.
status = enabled |
Only enabled campaigns can be flagged.
campaigntype = (search, shopping, display) |
Only those enabled campaigns that have a type of Search, Shopping, Display can be flagged.
accountsupportsconversions = enabled |
Only those enabled campaigns of the specified types which are in accounts that have conversion tracking enabled can be flagged.
bidstrategytype = manualcpc enhancedcpc = disabled |
And finally, those campaigns must have a bid strategy type of Manual CPC and have Enhanced CPC disabled for the campaign to be flagged.
Rule: No optimized ad rotation
Applies to: Ad groups
Violation criteria:
status = enabled campaignstatus = enabled campaigntype = search adrotation = rotateindefinitely COUNT(ads, status = enabled) > 1 |
Overview
The filter above has 5 root-level conditions. From top to bottom, it is looking for:
- Enabled ad groups
- that are within enabled campaigns
- which have a type of Search
- and where the ad group has an ad rotation of "Rotate ads indefinitely"
- and at least 2 enabled ads of any kind.
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 5 top-level conditions here and they must all match.
status = enabled |
Only enabled ad groups can be flagged.
campaignstatus = enabled campaigntype = search |
Ad groups must exist in enabled campaigns that have a type of Search
adrotation = rotateindefinitely |
Only those enabled ad groups whose ad rotation is set to "Do not optimize: Rotate ads indefinitely" can be flagged.
COUNT(ads, status = enabled) > |
But only if they have at least one ad of any type that passes the status = enabled
filter. If the ad group has one enabled ad and another paused ad, for example, it won't be flagged.
Rule: Accelerated delivery
Applies to: Campaigns
Violation criteria:
status = enabled campaigntype = (search, shopping, display) deliverymethod -= standard |
Overview
The filter above has 3 root-level conditions. From top to bottom, it is looking for:
- Enabled campaigns
- that have a type of Search, Shopping, or Display
- and that aren't using a standard delivery method
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 3 top-level conditions here and they must all match.
status = enabled |
Only enabled campaigns can be flagged.
campaigntype = (search, shopping, display) |
Only those enabled campaigns that have a type of Search, Shopping, or Display can be flagged.
deliverymethod -= standard |
Only those enabled campaigns of the specified types that aren't using a standard delivery method can be flagged.
Rule: No Search audiences
Applies to: Campaigns
Violation criteria:
status = enabled campaigntype = (search, shopping) NOTEXIST(audiences, status = enabled) EXIST(adgroups, status = enabled NOTEXIST(audiences, status = enabled)) |
Overview
The filter above has 4 root-level conditions. From top to bottom, it is looking for:
- Enabled campaigns
- that have a type of Search or Shopping
- that don't have enabled audiences
- and then have at least one enabled ad group that doesn't have enabled audiences
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 4 top-level conditions here and they must all match.
status = enabled |
Only enabled campaigns can be flagged.
campaigntype = (search, shopping) |
Only those enabled campaigns that have a type of Search or Shopping can be flagged.
NOTEXIST(audiences, status = enabled) |
Only those enabled campaigns of the specified types which don't have enabled audiences can be flagged.
EXIST(adgroups, status = enabled NOTEXIST(audiences, status = enabled)) |
This function checks for the existence of an ad group which meets all of the child conditions. Those are status = enabled
, meaning the ad group must be enabled, and NOTEXIST(audiences, status = enabled)
, meaning the ad group must contain no audiences meeting the status = enabled
filter condition. In other words, a campaign can only be flagged if it contains at least one enabled ad group that itself contains no enabled audiences.
Rule: Fewer than 3 ads
Applies to: Ad groups
Violation criteria:
status = enabled campaignstatus = enabled campaigntype = search adrotation = optimize COUNT(ads, status = enabled approvalstatus -= (disapproved, sitesuspended)) < |
Overview
The filter above has 5 root-level conditions. From top to bottom, it is looking for:
- Enabled ad groups
- that are within enabled campaigns
- which have a type of Search
- and where the ad group has an optimized ad rotation
- and less than 3 enabled and approved ads of any kind
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 5 top-level conditions here and they must all match.
status = enabled |
Only enabled ad groups can be flagged.
campaignstatus = enabled campaigntype = search |
Enabled ad groups must exist in enabled campaigns that have Search as a campaign type.
adrotation = optimize |
Only those enabled ad groups whose ad rotatation is set to "Optimize: Prefer best performing ads" can be flagged.
COUNT(ads, status = enabled approvalstatus -= (disapproved, sitesuspended)) < 3 |
Ad groups can only be flagged if they have less than 3 ads of any type that passes the child conditions here. They are status = enabled
, meaning the ads must be enabled, and approvalstatus -= (disapproved, sitesuspended)
, meaning the ads must be approved (or simply not disapproved).
Rule: Conversion tracking not set up
Applies to: Campaigns
Violation criteria:
status = enabled accountsupportsconversions = disabled |
Overview
The filter above has 2 root-level conditions. From top to bottom, it is looking for:
- Enabled campaigns
- that are within accounts that don't have conversion tracking enabled.
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 2 top-level conditions here and they must all match.
status = enabled |
Only enabled campaigns can be flagged.
accountsupportsconversions = disabled |
Only those enabled campaigns within accounts that don't support conversion tracking will be flagged.
Rule: Image ads but no responsive ads
Applies to: Ad groups
Violation criteria:
status = enabled campaignstatus = enabled campaigntype = display CONTAINER(accountsupportsconversions = enabled) EXIST(imageads, status = enabled approvalstatus -= (disapproved, sitesuspended)) NOTEXIST(responsiveads, status = enabled approvalstatus -= (disapproved, sitesuspended)) |
Overview
The filter above has 6 root-level conditions. From top to bottom, it is looking for:
- Enabled ad groups
- that are within enabled campaigns
- which have a type of Display
- which are within accounts with conversion tracking enabled
- and where the ad group has enabled, approved image ads
- but no enabled, approved responsive ads
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 6 top-level conditions here and they must all match.
status = enabled |
Only enabled ad groups can be flagged.
campaignstatus = enabled campaigntype = display CONTAINER(accountsupportsconversions = enabled) |
Ad groups must exist in enabled campaigns that have Display as a campaign type, and whose owning accounts have conversion tracking enabled.
EXIST(imageads, status = enabled approvalstatus -= (disapproved, sitesuspended)) NOTEXIST(responsiveads, status = enabled approvalstatus -= (disapproved, sitesuspended)) |
This does very similar checks for two different types of ads. For each check, it is only considering ads which pass the two child filter conditions of status = enabled
, which means the ad must be enabled and approvalstatus -= (disapproved, sitesuspended)
, which means the ad must be approved (or not disapproved). The ad group can only be flagged if it has image ads that meet those conditions, but no responsive ads that meet those conditions.
Rule: Campaign flexible reach set to “Targeting”
Applies to: Campaigns
Violation criteria:
status = enabled campaigntype = (search, shopping) interestsandremarketing = targeting EXIST(audiences, status = enabled) |
Overview
The filter above has 4 root-level conditions. From top to bottom, it is looking for:
- Enabled campaigns
- that have a type of Search, or Shopping
- that have interests and remarketing reach set to 'Targeting'
- And that have enabled audiences
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 4 top-level conditions here and they must all match.
status = enabled |
Only enabled campaigns can be flagged.
campaigntype = (search, shopping) |
Only those enabled campaigns that have a type of Search or Shopping can be flagged.
interestsandremarketing = targeting |
Only those enabled campaigns of the specified types that have "Targeting" for their "Interests and remarketing" flexible reach can be flagged.
EXIST(audiences, status = enabled) |
And finally, the campaigns must contain at least one enabled audience for them to be flagged.
Rule: Ad group flexible reach set to “Targeting”
Applies to: Ad groups
Violation criteria:
status = enabled campaignstatus = enabled campaigntype = (search, shopping) interestsandremarketing = targeting EXIST(audiences, status = enabled) |
Overview
The filter above has 5 root-level conditions. From top to bottom, it is looking for:
- Enabled ad groups
- that are within enabled campaigns
- which have a type of Search or Shopping
- and where the ad group has interests and remarketing reach set to "Targeting"
- and has enabled audiences
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 5 top-level conditions here and they must all match.
status = enabled |
Only enabled ad groups can be flagged.
campaignstatus = enabled campaigntype = (search, shopping) |
Ad groups must exist in enabled campaigns that have Search or Shopping as the campaign type.
interestsandremarketing = targeting |
Only those enabled ad groups which have "Targeting" for their "Interests and remarketing" flexible reach can be flagged.
EXIST(audiences, status = enabled) |
And finally, the ad groups must contain at least one enabled audience for them to be flagged.
Rule: Targeting optimization disabled
Applies to: Ad groups
Violation criteria:
status = enabled campaignstatus = enabled campaigntype = display targetingoptimization = disabled |
Overview
The filter above has 4 root-level conditions. From top to bottom, it is looking for:
- Enabled ad groups
- that are within enabled campaigns
- which have a type of Display
- and where the ad group has targeting optimization disabled
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 4 top-level conditions here and they must all match.
status = enabled |
Only enabled ad groups can be flagged.
campaignstatus = enabled campaigntype = display |
Ad groups must exist in enabled campaigns that have Display as the campaign type.
interestsandremarketing = targeting |
Only those enabled ad groups which have "Targeting" for their "Interests and remarketing" flexible reach can be flagged.
targetingoptimization = disabled |
And finally, the ad groups must have targeting optimization disabled for them to be flagged.
Rule: Inactive Search Network audience targeted
Applies to: Audiences
Violation criteria:
status = enabled campaignstatus = enabled campaigntype = search noofsearchusers < 1,000 CONTAINER(status = enabled) |
Overview
The filter above has 5 root-level conditions. From top to bottom, it is looking for:
- Enabled audiences
- that are within enabled campaigns
- which have a type of Search
- and where the audience has fewer than 1,000 active users
- and exists in an active container (ad group or campaign).
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 5 top-level conditions here and they must all match.
status = enabled |
Only enabled audiences can be flagged.
campaignstatus = enabled campaigntype = search |
These audiences must exist in enabled campaigns that have Search as the campaign type.
noofsearchusers < 1,000 |
Only those enabled audiences which have fewer than 1,000 active users can be flagged.
CONTAINER(status = enabled) |
And finally, their containing ad group or campaign must be enabled for them to be flagged. For campaign-level audiences, the container being checked by this condition is the campaign, which makes this check redundant with the campaignstatus = enabled
condition above, but for ad group-level audiences, this will add an extra check to make sure the owning ad group is enabled in addition to the campaign.
Rule: Inactive Display Network audience targeted
Applies to: Audiences
Violation criteria:
status = enabled campaignstatus = enabled campaigntype = display noofusers < 100 CONTAINER(status = enabled) |
Overview
The filter above has 5 root-level conditions. From top to bottom, it is looking for:
- Enabled audiences
- that are within enabled campaigns
- which have a type of Display
- and where the audience has fewer than 100 active users
- and exists in an active container (ad group or campaign)
Detailed explanation
Unless wrapped in an OR function, multiple filters listed together must all match the item being tested for it to be flagged (marked as an error or warning) by the custom rule. There are 5 top-level conditions here and they must all match.
status = enabled |
Only enabled audiences can be flagged.
campaignstatus = enabled campaigntype = display |
The audiences must exist in enabled campaigns that have Display as the campaign type.
noofusers < 100 |
Only those enabled audiences which have fewer than 100 active users can be flagged.
CONTAINER(status = enabled) |
And finally, their containing ad group or campaign must be enabled for them to be flagged. For campaign-level audiences, the container being checked by this condition is the campaign, which makes this check redundant with the campaignstatus = enabled
condition above, but for ad group-level audiences, this will add an extra check to make sure the owning ad group is enabled in addition to the campaign