How to Catch Expired Promotions Still Running in Live Ads
By Joris van Huët
Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs
Published
2026-10-27
The short answer: the sale ended on Sunday night. On Monday the ads still promise 30% off, and you are paying for clicks the page can no longer honour. AdAlign is the safety net for it. It re-checks the pages your live ads point to every day, marks each one Stable, Pending or Drifted, and sends an alert by email or Slack when a score drops below your threshold (how it works). Start with the free audit on one promo ad. The steps: list each offer with its end date, make ad text expire on its own, find what Google added from your site, take the banner down, score the promo pairs, sweep the morning after.
Disclosure: I earn a commission if you buy AdAlign through a link on this page, and this page recommends it. Every claim about AdAlign links to AdAlign's own pages.
What an expired offer costs, and where it hides:
- Four extra days, priced. For example, a promo ad spending €40 a day that keeps running for 4 days after the sale ends sends €160 (4 x €40) to a page that no longer carries the offer. That is before anyone counts the customers who ask support to honour it. Small per ad. Now multiply by the number of ads that mention the sale.
- What you already have. The promo calendar, the asset report in Google Ads, and two public libraries of live ads: Google's Ads Transparency Center and Meta's Ad Library.
- The reading that says you are clean. On the morning after each end date, no live ad carries the old offer, and no page in AdAlign is marked Drifted.
The AdAlign glossary entry explains the product. This page is the clean-up after a sale.
Three places an old offer keeps talking
The offer survives in more places than the ad you wrote. There is the ad copy itself. There are the assets attached to it, some of which Google now writes from your pages. And there is the page, with its banner, sticky bar, pop-up and footer line. Each has its own off switch, and they rarely sit with the same person. So which person on your team switches off all three?
The sweep, in order
- List every offer with its end date and everything that carries it. For each offer: the date and time it ends, in which time zone, the ads and assets that mention it, and the pages that show it. Merchandising owns the dates and paid media owns the ads, so one named person owns the list.
- Make the ad text expire by itself. A countdown customizer in a responsive search ad counts down to the end you set. Google says ads with countdown customizers "automatically stop showing after their specified end date", and reminds you to unpin or change the headline afterwards so the ad keeps serving (countdowns help). Promotion assets take promotion dates or an occasion's date range. Occasion-specific assets must be created or edited within 6 months of their start date, or they stop serving (promotion assets).
- Give Shopping prices an end time in your time zone. The
sale_price_effective_dateattribute takes a start and an end with time and time zone. Leave the time out and the sale ends at 11:59 PM on the end date. Leave the zone out and Google defaults to UTC (sale price effective date). A European store that skips the zone ends its sale on UTC's clock, not its own. - Find the promotions Google wrote for you. Automated promotions source deals from your landing pages (Google's example is "Buy one get one free"). Google attaches them to Search and Performance Max campaigns that have location assets and no manual promotions running (automated promotions). Each is eligible to serve for less than 24 hours, and is re-enabled only while Google can verify the offer is still visible on your site. To switch the feature off: Assets, the three-dot menu, Account level automated assets, Advanced settings, Automated promotions set to Off.
- Take the banner down the hour the offer ends. Once Google reads offers from your pages, a banner left up is a promotion it can keep finding, and keep re-enabling. AdAlign's article on automated promotions lists the usual suspects: stale banners, store-specific deals on shared location pages, conditions kept on a separate terms page, and sign-up pop-ups.
- Score each promo pair. Upload the ad and its URL to the free audit. AdAlign has a rule for this exact failure. When an ad carries a specific discount percentage, an all-capitals promo code or a hard deadline, and none of them is confirmed above the fold, above-the-fold continuity is capped at 3.0 or lower. When the promo ad lands on an evergreen collection page with an unrelated offer, AdAlign reads the pair as a likely wrong destination URL and leads with a routing fix (the AdAlign Brain).
- Sweep the live ads the morning after. Search your own name in the two ad libraries, open every ad that still mentions the offer, and pause or edit it in the ad platform. This catches the ads that no setting covered.
The morning-after agent
On Scale and above, AdAlign's REST API turns step 7 into a job an agent runs at 07:00 on the day after each end date. It reads the calendar, takes each live ad mentioning the ended offer from the platform export, and sends it with its copy as text.
{
"adData": {
"imageUrl": "https://cdn.example.com/ads/winter-sale-coats.png",
"platform": "google",
"adTextFields": { "headline": "Winter sale: 30% off all coats", "description": "Ends Sunday" }
},
"landingPageData": { "url": "https://store.example.com/collections/coats" }
}
The response lists conversion risks by type, and OFFER_MISMATCH is one of them (analyze-ad reference). The agent posts the pairs that carry it to the team channel, with the ad, the page and the mismatched element. The human check: a person pauses or edits each ad in the platform. AdAlign's access is read-only, and it never edits a campaign (AdAlign FAQ on the homepage). Stopping spend stays a decision someone on the team makes.
What Google's help pages warn about
- Keep the promotional details on your website up to date, or upload promotions manually when you need exact control over what shows, including start and end dates (automated promotions).
- Promotion assets that have not been modified for the last 6 months are paused automatically (promotion assets).
- Campaign-level promotion assets override account-level ones (promotion assets), so an old campaign asset can outrank the new account-wide offer.
Automated promotions make sense on paper. The offer is already on your page, and Google puts it in the ad for you, with the setting labelled "On (recommended)". Google also asks advertisers to judge the feature on overall campaign impressions and conversions, rather than on clicks on the promotion itself (automated promotions). So the default adds your page's offers to your ads. The work of keeping those offers current stays with whoever edits the page.
Free first, then the daily re-check
The calendar, the end dates and the morning-after sweep cost nothing. A team running two or three sales a year can stop there. When offers change weekly, AdAlign does the watching. Monitored landing pages are re-checked daily, re-scored when they change and flagged Stable, Pending or Drifted, with low-score and score-drop alerts to email or Slack (how it works). Daily landing-page drift monitoring is in every band from Growth. Growth starts from €590 a month on an annual contract for up to €75k a month of total ad spend, after a €1,500 paid 30-day pilot (pricing, checked on 27 October 2026). The checks cover connected Meta and Google Ads accounts. Ads on other platforms are scored by upload.
Score one live promo ad in the free audit before the next sale ends. If you would rather not sweep by hand every Monday, AdAlign, which pays me a commission when you buy it, runs the page side daily. The demo shows it on your own accounts. The Shopify side, including discount links that die with the discount, is in auditing Shopify product pages against your ads.
FAQ
How do I see the promotions Google took from my website?
In Google Ads, go to Assets, filter on asset type Promotion and look for "Google AI" in the Added by column. Hovering over it shows where the offer was sourced (automated promotions).
Does a countdown stop the ad on its own?
Yes, after the end date you set. Google then asks you to unpin or change the headline so the ad serves again (countdowns help).
How quickly does AdAlign notice that a banner changed?
Within a day. Monitored pages are re-checked daily and re-scored when they change, and an alert goes out by email or Slack when a score drops below the threshold you set (how it works).
ABOUT THE AUTHOR
I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.
I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.
A senior operator doing the work: campaigns, channels, CRM and AI agents, live from day one.