Deal Ends Annotations in Google Shopping 2026: Thresholds, the 60-Day Rule and the Holiday Window
Since October 15, 2026, shopping ads have been showing countdown badges — “3 days left,” “5 hours left.” That is the Deal Ends annotation in Google Shopping. There is no switch to turn it on, and no switch to turn it off. Google decides per offer, based entirely on what your feed says about price and timing. This article lays out the exact thresholds, explains why most stores running a permanent sale never qualify, and shows how to rebuild a holiday discount calendar that actually triggers the badge — without inventing fake strike-through prices or giving away margin you cannot afford.
What the Deal Ends annotation is and where it appears
Deal Ends is an experimental annotation inside Product Listing Ads. It renders directly beneath the product price and counts down to the end of the discount. Google’s own documentation refers to the format internally as the “flash sale UI” — it exists to inject urgency at the moment a shopper is comparing cards in the results.
- Surfaces: Product Listing Ads, desktop and mobile.
- Geography: available globally except for the EEA+, Switzerland and the United Kingdom.
- Data source: your promotions and the
sale_priceattribute. - Integration work: none. No new format, no new tooling — the badge is built from data you already submit.
- Reporting: none in Google Ads or Merchant Center. Google treats Deal Ends as an improvement to existing sales rather than a new ad format.
The mechanic that matters: the annotation fires when the discounted price has an expiration date. In feed terms, that means sale_price and sale_price_effective_date must both be present. If your discount is modelled as a promotion object instead, promotion_effective_date plays the same role — you do not need to duplicate it into the sale price fields, since both paths are evaluated against identical criteria.
The exact thresholds: holiday window vs. the rest of the year
Criteria change by season, and the gap is wide. During the holidays everyone is discounting, so the bar rises.
| Criterion | Holidays: Oct 15 – Jan 5 | Non-holiday periods |
|---|---|---|
| Minimum discount | at least 10% off the post-deal price | at least 5% off the post-deal price |
| Price history | must be the lowest effective price in 60 days | lowest effective price in 15 days |
| Expiry | deal must expire within 7 days | deal must expire within 7 days |
| Interval between badges | minimum 60 days per individual offer | minimum 15 days per individual offer |
| Promotion type | sale price and promotion may be combined | price-affecting sales only (for example $50 off or 20% off) |
Note the phrase “post-deal price.” If an item carries both a sale price and an active promotion, Google measures the discount against the final amount the shopper pays. That works in your favour: the two stack, and the 10% threshold is easier to clear than it looks on paper.
The binding constraint is not the discount percentage — it is price history plus the interval rule. In the holiday window an offer can earn Deal Ends once every 60 days, and only if today’s price is the lowest that item has carried for those same 60 days. A store running “30% off” year-round fails both tests simultaneously.
Why a permanent sale kills the badge
The common setup looks like this: sale_price is always populated, and sale_price_effective_date is either empty or quietly extended by a script every week. For Deal Ends that is the worst possible configuration:
- with no expiration date nothing is generated at all — there is nothing to count down to;
- if the sale price has been live for months, the current price is not the lowest in 60 days, it is simply the regular price;
- if you cycle a discount every two weeks, the 60-day interval rule caps you at one badge per offer for the entire season.
The practical conclusion is uncomfortable for a lot of merchandising habits: discounts only generate this signal when they are short, deep and rare — the opposite of leaving “−15%” on permanently so the card looks better.
Preparing the feed, step by step
Step 1. Audit your current sale prices
Export every offer with a populated sale_price and look at two columns — start date and end date. You need three answers: how many offers carry an expiration at all, how long the current price has been in place, and what share of them run longer than seven days. If you do not have a clean export, build a helper attribute flagging “sale with an expiry” and filter on it; the mechanics are covered in our piece on feed rules and supplemental feeds in Merchant Center.
Step 2. Populate sale_price_effective_date correctly
The attribute takes two ISO 8601 timestamps separated by a slash, each with a time zone. A Black Friday example in Pacific time:
2026-11-27T00:00:00-0800/2026-11-30T23:59:00-0800
Two mistakes recur. The first is omitting the time zone, which makes the end moment drift relative to the region being served. The second is setting a 30-day window on the theory that longer is safer. For Deal Ends, long is disqualifying — the deal has to end within seven days.
Step 3. Check price history before you launch
“Lowest price in 60 days” is measured against the offer’s actual effective price, not against what you consider the list price. Before a holiday promotion, confirm the item has not sold cheaper in the previous two months. If you ran −20% on that SKU in early November, December’s discount will not qualify until it goes below the November floor.
Step 4. Spread promotions across the calendar
The 60-day interval is enforced at the individual offer level, not per campaign or per category. That opens a workable tactic: split the catalogue into waves. One group of SKUs discounts in mid-November, another in early December, a third for the final gifting week. Each group earns its own badge, and the store as a whole keeps a countdown visible in the results all season.
Step 5. Make sure automation is not rewriting your prices
Merchant Center can edit product data on its own — automatic price updates, image substitutions and more. If automatic improvements are enabled, verify they are not overwriting price attributes mid-promotion; what Google changes without asking is covered in Merchant Center automatic improvements.
What Deal Ends does not do
- No reporting. There is no “impressions with annotation” column anywhere. The only way to assess impact is comparing CTR and conversion rate across periods and product groups — a messy experiment during a season when every other variable moves too.
- No control. You cannot opt out; the documentation answers the question with “not at this time.” The only lever a brand has is to stop submitting a dated sale price.
- No guarantee. Meeting the criteria makes an offer eligible. It does not oblige Google to render the badge on every impression.
- No cap on offers. There is no limit on how many products can display the flash sale UI — in principle the whole catalogue qualifies if every SKU passes the rules.
What it means for bidding and unit economics
The badge changes behaviour in the results page; it does not change the auction. Your math still runs on margin after discount, and there is a trap here: to clear both the 10% threshold and the 60-day price floor, merchants start cutting deeper than planned. Before committing, recalculate which SKUs can absorb the extra discount at all — the approach to steering bids by product margin is laid out in product value optimization in PMax and Shopping.
The second factor is click cost. All else equal, participating in a CSS program lowers what you pay per click, and during the holiday peak — when CPCs inflate — that gap is more visible than usual; where the advantage actually sits is unpacked in Google CSS for Shopping.
The third is the title itself. A countdown works with the copy, not instead of it: if the title does not make clear what is being sold, urgency will not rescue the click. Formulas and limits are collected in our breakdown of product titles in Merchant Center.
Sale price or promotion: which to use
You have two ways to express a discount. For the annotation they are equivalent; in the results they look different.
| Sale price | Promotion | |
|---|---|---|
| What the shopper sees | new price with the old one struck through | a separate badge describing the offer |
| Expiration field | sale_price_effective_date |
promotion_effective_date |
| Best for | a straight price cut on a SKU | cart-level conditions, codes, gifts with purchase |
| Counts toward Deal Ends | yes, when dated | yes, under the same criteria |
How the promotion annotations themselves behave, and what they do to CTR, is covered in Merchant Center promotions. The working rule: express straight price cuts as sale price, cart conditions as promotions, and combine the two where you need to reach the 10% threshold.
A six-week holiday calendar
The interval rule turns the season into a scheduling problem. Below is a workable shape for a mid-sized catalogue. The dates are illustrative; the principle is what matters — each SKU appears in exactly one short wave, while the store keeps a countdown live throughout.
| Period | Action | Check |
|---|---|---|
| Before Oct 15 | Remove permanent discounts, lock in base prices | No SKU is selling below its planned sale price |
| Week 1 (mid-Nov) | Wave A: 25–30% of the catalogue, 10%+ off, 5-day window | Dates carry time zones, expiry ≤ 7 days |
| Weeks 2–3 (BFCM) | Wave B: bestsellers, the deepest discount of the season | Price below any price in 60 days; sale and promo not conflicting |
| Week 4 | Wave C: longer-consideration categories | Wave A SKUs excluded — 60 days have not passed |
| Weeks 5–6 (pre-holiday) | Wave D: gifting categories, tight 3–4 day windows | Stock and shipping cutoffs, or urgency backfires |
| After Jan 5 | Thresholds relax to 5% and 15 days | Interval between promos drops to 15 days |
The structure protects margin as well as eligibility. Instead of “20% off everything for all of December,” you get a series of short spikes, each carrying a visual signal in the results.
What changes after January 5
Once the holiday window closes the thresholds roughly halve: 5% off is enough, the price floor shortens to 15 days, and the interval between badges drops to 15 days. The expiry requirement does not move — the deal still has to end within seven days. One extra condition appears: promotions should be price-affecting, directly changing what the shopper pays (“$50 off,” “20% off”) rather than offering terms like free shipping.
In practice the mechanism becomes a tool for a regular short-promotion rhythm: one SKU group every couple of weeks, with a real cut below the two-week low. For fast-turnover catalogues that cadence is sustainable; for everyone else it is a reason to use the badge selectively — product launches, end-of-line clearance, seasonal transitions.
Three expensive misconceptions about the Deal Ends annotation
- “Just discount harder and the badge will appear.” Discount depth is one condition, and not the strictest. Without an expiration date and a qualifying price history it buys nothing.
- “Run the sale all December so the countdown lasts longer.” The opposite: anything beyond seven days disqualifies the offer. A long sale and a countdown are mutually exclusive.
- “Raise the price first so the discount looks deeper.” The 60-day floor is measured on actual effective price, not the number you call list price. Inflating before a sale does not help here, and in many jurisdictions it carries its own consumer-protection exposure.
Diagnosing a badge that never appeared
With no reporting, diagnosis happens in the feed. Work from the most common cause down.
- No expiration date. By far the most frequent. Confirm
sale_price_effective_dateactually reached Merchant Center and was not stripped by a feed rule. - Window longer than seven days. “Nov 20 through Dec 31” is a valid sale and an ineligible one.
- Discount under the threshold. Measured off the post-deal price — 9.5% does not clear the holiday bar.
- Price is not the 60-day low. An early-season sale can lock that SKU out for the rest of the year.
- Interval not elapsed. The offer already earned a badge less than 60 days ago.
- Region. Nothing is computed for shoppers in the EEA, UK or Switzerland.
- The offer is disapproved or limited. A product that fails policy earns no annotations at all; check item status and card requirements, including Merchant Center image requirements.
Measuring impact without a report
- Split the catalogue into two comparable groups by margin, price point and demand. One gets a dated promotion and a shot at the badge; the other gets the same discount with no expiry.
- Compare CTR and conversion rate across groups in the same period, never before-and-after — the holiday baseline shifts daily.
- Hold bids and campaign structure steady for the duration, or you are measuring the algorithm instead of the annotation.
- Do not trust a single week. Over short windows the difference usually sits inside noise; treat any number as directional rather than proven.
If you need to prove incremental lift rather than sense it, the answer is not a column comparison — it is a designed experiment, as described in Conversion Lift for Search and Performance Max.
Where PPC Rebels fits
Feed hygiene and a price calendar are half the job; the other half is keeping campaigns spending reliably when the auction is at its most expensive. If you are standing up shopping campaigns or scaling existing ones, start with the Google Ads guide, and take Google Ads training if the structural side is new to you. For teams launching across several markets at once, the infrastructure question — including agency Google Ads accounts — is worth settling before the peak, not during it.
FAQ
What is the Deal Ends annotation in Google Shopping?
An experimental countdown badge in Product Listing Ads showing how long a discount has left — “3 days left,” “5 hours left.” It renders under the product price on desktop and mobile.
How do I turn Deal Ends on?
There is no toggle. It activates automatically when product data meets the criteria: a dated sale price or promotion, a deep enough discount, the lowest price over the required window, and an expiry within seven days.
Can I opt out of Deal Ends?
Not at this time. The only way to avoid the badge is to stop submitting a dated sale price or promotion.
What is the minimum discount during the holidays?
At least 10% off the post-deal price between October 15 and January 5. Outside that window the threshold drops to 5%.
What does “lowest price in 60 days” mean?
The current effective price must be the lowest that item has carried in the past 60 days. If the same SKU sold cheaper recently, no badge until the new price goes below that floor.
Which feed attributes does Deal Ends need?
sale_price together with sale_price_effective_date. If the discount is a promotion, promotion_effective_date serves the same purpose and does not need duplicating.
Does Deal Ends work in Europe?
No. It is available globally except for the EEA+, Switzerland and the United Kingdom.
Is there a report for it in Google Ads?
No reporting exists in either Google Ads or Merchant Center. Google frames the badge as an enhancement to existing sales, so impact has to be inferred from CTR and conversion trends.
How many products can show the badge at once?
There is no cap on the number of offers. Each product is evaluated independently against the same criteria.
How often can one product earn Deal Ends?
Once every 60 days per offer during the holiday window, and once every 15 days outside it.
What if my sale runs for a month?
Break it into 5–7 day waves across different SKU groups. A continuous month-long sale fails both the expiry rule and the price-history rule.
Can a sale price and a promo code be combined?
Yes. The post-deal price can be the result of both, and the discount threshold is measured against that final figure.