Page Summary
-
Ad customizers enable dynamic text customization in responsive search ads using placeholders in titles and description lines.
-
Creating an ad customizer involves two main steps: defining a broad customizer attribute and linking it with specific values at various hierarchical levels (customer, campaign, ad group, or keyword criterion).
-
Ad customizer attributes have a unique name, a defined type (text, number, price, or percent), and there is a limit of 40 enabled customizer attributes per account.
-
Linking customizer attributes at different levels allows for specificity, with more specific links overriding general ones.
-
To use an ad customizer in responsive search ads, you include the customizer attribute name and a default value in a specific format within the ad's text assets.
Ad customizers are a powerful tool that lets you customize the text content of your responsive search ads using dynamic text placeholders.
You can create and use an ad customizer or use a built-in ad customizer.
Create and use an ad customizer
Follow these steps to create an ad customizer for RSAs:
Create the customizer attribute.
The customizer attribute is a broad category that describes the kind of change you intend to link to this customizer—for example, "product price" or "discount percent".
Link the customizer attribute with a customer, campaign, ad group, or keyword ad group criterion.
Set the specific values you want to use for the specific resource.
Create a customizer attribute
First, you need to create a new customizer attribute, represented by
CustomizerAttribute using
CustomizerAttributeService with
two required fields:
name- The name of the customizer, which must be unique (case insensitive). Since there is a limit of 40 customizers, you might need to reuse customizers across different resources, so be sure to choose a name that represents a broad category of what kind of customizations this will be used for.
type- The type of the customizer—text, number, price or percent—defined
by
CustomizerAttributeType.
When you create a new customizer attribute, you get its resource name back, which is required in the next step.
Link the customizer attribute
You can link the previously created customizer attribute at many levels using the following services:
CustomerCustomizerServiceto createCustomerCustomizerfor the customer level.CampaignCustomizerServiceto createCampaignCustomizerfor the campaign level.AdGroupCustomizerServiceto createAdGroupCustomizerfor the ad group level.AdGroupCriterionCustomizerServiceto createAdGroupCriterionCustomizerfor the ad group criterion level. For this type, only keyword criteria are supported.
Regardless of which level you want and which corresponding service you use, the same pieces of information are required:
customizer_attribute- The resource name of the customizer attribute that you created in the previous step.
valueThe value that you want to insert into your ads when you reference this customizer attribute. This field is defined by
CustomizerValue.You need to specify
typeandstring_valueto createCustomizerValue. Thetypevalue should be the same as the customizer attribute you're linking, andstring_valueis the value that you want the Google Ads API to use.- Resource name of the resource you want to link the customizer attribute to
The name varies based on the resource type. For instance, to create
CampaignCustomizer, specify thecampaign.
Once you finish this step, you're ready to use the ad customizer in responsive
search ads that are included in the resource hierarchy you linked the
customizer attribute to. For instance, if you link the customizer attribute to
the campaign with an ID A, you can use that ad customizer in an ad created
under any ad groups inside campaign A. You cannot use the ad customizer in an
ad under ad groups inside campaign B.
Ad customizers in responsive search ads
To use the ad customizer in headlines and description of the responsive
search ads, you need to create an AdTextAsset
object with text including the following syntax:
{CUSTOMIZER.CUSTOMIZER_ATTRIBUTE_NAME:DEFAULT_VALUE}
CUSTOMIZER_ATTRIBUTE_NAMEis thenameof the customizer attribute that you set when you created it, not the resource name of the customizer attribute nor its ID.DEFAULT_VALUEis the default value for the ad customizer.
Refer to the responsive search ads guide for more information about setting up the ads.
Rules and limitations
There can only be one link per level—customer, campaign, ad group, or ad group criterion—and the most specific one will override the more general one. For example, if you have this customizer attribute defined at the campaign level and the ad group level, then ads within the linked ad group will use the ad group one, but ads from other ad groups in that campaign will use the campaign one.
You can have up to 40 enabled
CustomizerAttributeobjects in your account. If you reach this limit, you need to remove the unused ones before creating a new one.There are rules for customizer attributes with type
PRICE:- Currency codes and symbols can appear before or after the number. For
example,
$100,100$,USD100,100USDare all valid values. - There should be no spaces between the number and the currency codes or
symbols. For example,
$ 100is invalid. - See the currency codes and symbols that can be used as part of the specified value.
- Currency codes and symbols can appear before or after the number. For
example,
Use built-in ad customizers
You can use built-in customizer tags directly within your Responsive Search Ad (RSA) headlines and descriptions. These tags allow you to dynamically insert keywords, locations, and countdowns into your ad text.
Keyword insertion
Keyword insertion dynamically updates your ad text to include the keyword that caused your ad to show. This can make your ads more relevant to users' searches.
See Set up keyword insertion for your ad text.
Syntax: {Keyword:Default text}
Include this tag in your headline or description fields when you create or
update an AdGroupAd with a ResponsiveSearchAd type using the API.
Example
Suppose you have a headline like "Buy {Keyword:Chocolate} Online".
If the user searches for "dark chocolate", the headline could appear as:
"Buy Dark Chocolate Online". If the keyword cannot be inserted, the
"Default text" ("Chocolate" in this case) will be used instead.
Location insertion
Tailor your ad text based on where your customers are located or the locations they show interest in.
Syntax: {LOCATION(Level):Default text}
Level: Specify the geographic level, such asCity,State, orCountry. If omitted, it defaults to the most specific level available.
Example
Headline: "Pizza Delivery in {LOCATION(City):Your Area}"
If a user is in New York City, they might see: "Pizza Delivery in New York City" Users outside a specific area would see: "Pizza Delivery in Your Area"
See About location insertion for responsive search ads.
Countdown functions
Create a sense of urgency by showing a real-time countdown to a specific event or sale.
Syntax
{COUNTDOWN(yyyy-MM-dd HH:mm:ss,daysBefore)}- Counts down to a specific time in the advertiser's account timezone.{GLOBAL_COUNTDOWN(yyyy-MM-dd HH:mm:ss,daysBefore)}- Counts down to a specific time in the user's timezone.daysBefore: How many days before the end date the countdown should start appearing.
Example
Headline: "Sale Ends in {COUNTDOWN(2026-01-31 23:59:59,5)}"
This ad will show a countdown starting 5 days before January 31st, 2026, 23:59:59 in the advertiser's timezone.
See Highlight upcoming events with countdowns.
Implementation using the API
To use these built-in customizers, include the tag syntax within the text
fields of the AdTextAsset objects for your RSA's headlines and
descriptions when mutating an AdGroupAd resource.
Example snippet (conceptual JSON)
{
"ad": {
"responsiveSearchAd": {
"headlines": [
{ "text": "Great Deals on {Keyword:Shoes}" },
{ "text": "Free Shipping in {LOCATION(City):Your City}" },
{ "text": "Offer Ends: {COUNTDOWN(2026-01-31 23:59:59,5)}" }
],
"descriptions": [
{ "text": "Find the best {Keyword:footwear} for your needs." },
{ "text": "Limited time offer, don't miss out!" }
]
},
"finalUrls": ["https://www.example.com"]
}
}