Use custom rules

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.

Note
If you don't find the built-in rules helpful and want to hide them, you can quickly pause them in bulk in the custom rules view.

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: See 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: See 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: See 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: See 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: See 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: See 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: See 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: See 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 Shopping ad group has no product group.

Note: See 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: See 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: See 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: See 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: See 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: See 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: See 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: See 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: See 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: See 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: See 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: See 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: See 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: See 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: See 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 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 Search with only TrueView in-stream video ads. Your TrueView campaign is targeting only YouTube Search 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 Videos Network.
Budget type mismatch Warn if 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.

Instructions

Editing custom rules

To edit built-in custom rules:

  1. In the sidebar below the type list, click Custom rules.
  2. In the data view, select the rule you want to edit.
  3. In the edit panel, make your changes. You can click Comments to add notes about the rule.
  4. Above the data view, click Apply rule changes.

To remove built-in custom rules:

  1. In the sidebar below the type list, click Custom rules.
  2. In the data view, select the rule you want to remove.
  3. In the data view, click Remove.
  4. Above the data view, click Apply rule changes
Note: Keep in mind that built-in rules can’t be removed and will instead be paused if you try to remove them.
 

To restore the default settings for built-in custom rules:

  1. In the sidebar below the type list, click Custom rules.
  2. In the data view, click Restore defaults.
  3. Above the data view, click Apply rule changes.

To reshow rule violations that you’ve ignored:

  1. In the sidebar below the type list, click Custom rules.
  2. In the data view, click Reshow ignored violations.
  3. Above the data view, click Apply rule changes.

Creating new custom rules

To create your own custom rules:

  1. In the sidebar below the type list, click Custom rules.
  2. Click Add custom rule.
  3. In the edit panel, fill out all the required fields.
  4. Click Edit below “Applies to” in the edit panel to select what the rule should apply to, such as keywords or text ads.
  5. 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.
  6. 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.
  7. 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 -: "www.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 = enabled
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

Applies to: Sitelinks

Violation criteria:

status = enabled
associationtype=specific
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 = enabled
campaigntype = search
OR(
    AND(
        EXIST(sitelinks, associationtype = specific)
        COUNT(sitelinks, approvalstatus -= (disapproved, sitesuspended)) < 4
    )
    AND(
        NOTEXIST(sitelinks)
        CONTAINER(
            COUNT(sitelinks, approvalstatus -= (disapproved, sitesuspended)) < 4
        )
    )
)
EXIST(adgroups,
    status = enabled
    NOTEXIST(sitelinks, approvalstatus -= (disapproved, sitesuspended))    
    NOTEXIST(sitelinks, 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 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.

Note: if you would like to simply change the number of structured snippet assets required, there are two separate "1" values to change: the count for structured snippet 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(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) > 1

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)) < 3

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

Was this helpful?

How can we improve it?
Search
Clear search
Close search
Google apps
Main menu
10481710920764850189
true
Search Help Center
true
true
true
true
true
73067
false
false