A headline that says "From €89" goes stale the day the price changes. Ad customizers insert values into RSAs that live outside the ad (price, stock, lead time, city) and update without you rewriting anything — and the countdown puts "Ends in 3 days" on a dated offer. This tutorial sets them up.
Step 1 · Create the attributes
Tools → Business data → Ad customizer attributes → +:
| Attribute | Type | Example |
|---|---|---|
Price |
Price | 89.00 EUR |
Stock |
Number | 14 |
Leadtime |
Text | 24 hours |
Discount |
Percentage | 20% |
City |
Text | Madrid |
A name with no spaces (it will be used inside the ad), and the right type (the type determines the format: price carries a currency; percentage carries the sign).
Step 2 · Assign values by level
Every attribute has values at account level (the default), and they can be overridden at campaign, ad group or keyword level: the most specific value wins. Examples:
City= "Madrid" in the Madrid campaign, "Barcelona" in the Barcelona one (the RSAs are identical; the headline says the right city).Price= per ad group (each ad group = one product).Stock= per keyword (each keyword = one model).
Where: in the campaigns/ad groups/keywords table → the "Customizer attributes" column (add it from Columns) → edit the value. Or in bulk (step 4).
Step 3 · Use the attribute in the ad
In an RSA headline or description, type { and choose Ad customizer
→ attribute → default value (mandatory: it is used if the value is
missing). The resulting syntax:
{CUSTOMIZER.Price:from €99}
Kitchen Taps From {CUSTOMIZER.Price:€89}
Only {CUSTOMIZER.Stock:a few} Units · {CUSTOMIZER.City:your city}
Rules: the default value also counts towards the 30/90 characters; the headline has to make sense with the longest possible value; no more than one price customizer per headline (it reads badly).
Step 4 · Feed values from a sheet (business data)
For dozens of ad groups or keywords: Business data → Ad customizer attributes → Upload a sheet with these columns:
| Target campaign | Target ad group | Target keyword | Price (price) | Stock (number) | City (text) |
|---|---|---|---|---|---|
| SEARCH · Taps · Madrid | Pull-out taps | 89.00 EUR | 14 | Madrid |
(The "Target" columns identify the level; leave them empty for the top level.) The upload can be scheduled from a Google Sheet (daily): the ERP or the shop exports prices and stock to that sheet, and the ads update themselves. Limitation: the sheet identifies the campaign/ad group by name — with the house rule in mind, keep the names stable or use the API/scripts (which identify by ID).
Step 5 · Countdown
For dated offers, the COUNTDOWN function inside a headline or
description:
Only {COUNTDOWN("2026-11-30 23:59:59","en")} Left! November Sales
It shows "5 days", "3 hours", "12 minutes" depending on when the search
happens, and the ad stops showing that piece once it expires (keep
another headline without a countdown in the RSA). The
GLOBAL_COUNTDOWN variant uses the user's time zone; COUNTDOWN uses
the account's. Optional: a third parameter with how many days before to
start showing it.
Step 6 · Verify
- Ad preview in the interface: it shows the real value, not the default one.
- An ad with a customizer that has no value at any level shows the default value (check that it makes sense).
- The RSA asset report: pieces with a customizer are rated like any other.
- After a scheduled upload, open an ad and confirm the new price.
Usual validation errors
- An attribute with spaces or accents in its name.
- A price type with no currency or in text format.
- A headline that goes over 30 characters with the default value.
- A campaign name in the sheet that doesn't match exactly (renamed).
- A countdown with a past date when the ad is created.
- A customizer in a headline pinned to position 1 with an incoherent default value.
What it is really for
- Prices and offers that change (catalogues, services with rate cards).
- City / area in multi-location campaigns with a single set of ads.
- Stock and urgency that are real (not invented).
- Lead times (delivery, appointment) that vary by season.
- Countdowns in sales and events.
💡 Ninja trick: customizers are how an RSA tells the truth every day without being touched — and, because the value lives outside the ad, changing it doesn't reset that piece's learning. A script that exports prices from the Merchant feed into the attributes sheet closes the loop: Shopping and Search quote the same price.
What you should remember
- Typed attributes (text, number, price, percentage) with values by account, campaign, ad group or keyword; the most specific wins.
- Syntax
{CUSTOMIZER.attribute:default value}; the default counts towards the length. - A scheduled business data sheet to update in bulk; stable names.
{COUNTDOWN("date","en")}for dated offers; another headline without it in the RSA.