Friday, February 16, 2024


**Note: You can ignore this if you are not using Google Ads Performance Max with page feeds and text asset automation**

#### What's happened?

<br />


In October 2023, as part of [Google Ads API v15](https://developers.google.com/google-ads/api/docs/release-notes.md.txt#assets), we launched the ability to configure your campaign to [automatically generate text assets](https://support.google.com/google-ads/answer/10724897#automatically_created_assets). Assets such as dynamic headlines or descriptions that match your landing page content can be configured by setting the `Campaign.AssetAutomationSetting` of `TEXT_ASSET_AUTOMATION` to be opted-in or opted-out. We also launched the `ListingGroupFilterDimension.Webpage` dimension to allow Performance Max campaigns to filter URLs from a page feed specified by a `CampaignAssetSet` linking the campaign to an `AssetSet` of type `PAGE_FEED`.


For this feature to work correctly, developers need to **provide BOTH the page feed configuration AND set text asset automation to `OPTED_IN` (which is the default behavior, if you do not specify a `Campaign.AssetAutomationSetting` of type `TEXT_ASSET_AUTOMATION`).** We noticed that some developers have included a page feed or a listing group filter for a webpage, but have text asset automation set to `OPTED_OUT`. Unfortunately this combination will not correctly utilize the page feed for Performance Max campaigns as might be expected.

#### What is happening today?


Starting **Feb 15, 2024,** we will begin throwing [OPERATION_NOT_PERMITTED_FOR_CONTEXT](https://developers.google.com/google-ads/api/reference/rpc/v15/ContextErrorEnum.ContextError#operation_not_permitted_for_context) errors if a Performance Max campaign is created or updated such that it contains the follow incompatible state:

|---|---|---|
| **Incompatible state for a Performance Max campaign with a page feed and text asset automation** |||
| `Campaign.AssetAutomationSetting` of type `TEXT_ASSET_AUTOMATION`is set to**`OPTED_OUT`** | **AND** | A `CampaignAssetSet` linking the campaign to an `AssetSet` of type `PAGE_FEED` |
| `Campaign.AssetAutomationSetting` of type `TEXT_ASSET_AUTOMATION`is set to**`OPTED_OUT`** | **AND** | **OR** |
| `Campaign.AssetAutomationSetting` of type `TEXT_ASSET_AUTOMATION`is set to**`OPTED_OUT`** | **AND** | An `AssetGroupListingGroupFilter` with `ListingGroupFilterDimension` set to `Webpage`. |


We are doing this to let you know that this combination is not valid and won't serve ads utilizing landing page content as expected.

#### What happens next?


For those developers who have campaigns in this incompatible state, starting **April 15, 2024,** we will automatically fix the compatibility by removing `CampaignAssetSet` resources linking a campaign to an `AssetSet` of type `PAGE_FEED` and removing `AssetGroupListingGroupFilter` resources with `ListingGroupFilterDimension` set to `Webpage` **only if** the `Campaign.AssetAutomationSetting` of type `TEXT_ASSET_AUTOMATION` is set to `OPTED_OUT`. **This fix will match how the campaign is currently serving and no action is required if you would like the campaign to remain in this state**. If you would like to utilize the landing page content, then you will need to opt-in to text asset automation.

#### What do I need to do?


First, confirm that you are using **text asset automation and page feed assets or asset group listing filters with webpage dimensions in your Performance Max campaigns**. Otherwise, you are not impacted by this change.


To check if your Performance Max campaign is in an incompatible state for page feeds, run the following GAQL queries:


**1) Check for page feeds linked to campaigns that have text asset automation opted-out:**

```java
SELECT
  asset_set.id,
  asset_set.name,
  asset_set.resource_name,
  campaign.id,
  campaign.name,
  campaign.resource_name,
  campaign.asset_automation_settings,
  campaign_asset_set.status,
  campaign.status
FROM campaign_asset_set
WHERE
  campaign.advertising_channel_type = 'PERFORMANCE_MAX'
  AND asset_set.type = 'PAGE_FEED'
  AND asset_set.status = 'ENABLED'
  AND campaign_asset_set.status = 'ENABLED'
  AND campaign.status != 'REMOVED'
```


You may be impacted if any of the `CampaignAssetSet` resources, linking a campaign to an `AssetSet` of type `PAGE_FEED`, have a `campaign_asset_set.status` that is set to `ENABLED` **and** an item in `campaign.asset_automation_settings` with `TEXT_ASSET_AUTOMATION` set to `OPTED_OUT`.


**2) Check for asset group listing group filters with dimension webpage for campaigns that have text asset automation opted-out:**

```java
SELECT
  asset_group.id,
  asset_group.name,
  asset_group.resource_name,
  asset_group_listing_group_filter.case_value.webpage.conditions,
  asset_group_listing_group_filter.id,
  asset_group_listing_group_filter.resource_name,
  asset_group_listing_group_filter.listing_source,
  campaign.id,
  campaign.name,
  campaign.resource_name,
  campaign.asset_automation_settings,
  campaign.status
FROM asset_group_listing_group_filter
WHERE
  asset_group.status != 'REMOVED'
  AND campaign.advertising_channel_type = 'PERFORMANCE_MAX'
  AND asset_group_listing_group_filter.listing_source = 'WEBPAGE'
  AND campaign.status != 'REMOVED'
```


You may be impacted if any of the `AssetGroupListingGroupFilter` resources have a `case_value` that is a `Webpage` **and** an item in `campaign.asset_automation_settings` with `TEXT_ASSET_AUTOMATION` set to `OPTED_OUT`.


**Manually fix the inconsistent state of the campaign**


If you would like to manually configure the campaign yourself ahead of the automatic fix, we suggest one of the two options:

|---|---|---|
| **Options to manually fix the inconsistent state of a Performance Max campaign** |||
| **OPTION A) Turn on text asset automation** |||
| Set `Campaign.AssetAutomationSetting` of type `TEXT_ASSET_AUTOMATION` to `OPTED_IN` |||
| **OPTION B) Remove associated page feed references** |||
| Remove **BOTH:** |||
| The `CampaignAssetSet` linking the campaign to an `AssetSet` of type `PAGE_FEED` | **AND** | The `AssetGroupListingGroupFilter` with `ListingGroupFilterDimension `set to `Webpage`. |


You will be able to make this change **until April 15, 2024, after which option B will be automatically applied to fix the Performance Max campaign**. Note that after the automatic fix is applied, the serving state of the campaign won't change from how it is serving today.

#### How do I get support?


For more details on how to correctly use [automatically generated text assets](https://support.google.com/google-ads/answer/10724897#automatically_created_assets) with landing pages, see the [automatically created assets](https://developers.google.com/google-ads/api/docs/performance-max/assets#automatically_created_assets) section of the Performance Max guide. If you require further support, please reach out to our team via one of our [support channels](https://developers.google.com/google-ads/api/support.md.txt).

Ian Ballantyne, Google Ads API Team


**Labels:**

[google-ads](https://developers.google.com/ads/blog/feeds/labels/google-ads.md.txt),

[google-ads-api](https://developers.google.com/ads/blog/feeds/labels/google-ads-api.md.txt),

[performance-max](https://developers.google.com/ads/blog/feeds/labels/performance-max.md.txt),

[text-asset-automation](https://developers.google.com/ads/blog/feeds/labels/text-asset-automation.md.txt)