Promotions & Deal Pages SEO
How to build and optimize your store's own sale, deals, and coupon pages so they rank for high-intent bargain queries — the durable-URL rule, keeping pages live between promotions, why coupon rich results are gone and discounts belong in Product schema, and how to avoid the thin-coupon and doorway traps.
1 evidence signal on this page
- Related live toolRedirect Chain Mapper
A promotions or deal page (a /sale/, /deals/, or /coupons/ page) is a specialized category page whose classification is 'currently discounted' — it should rank for high-intent bargain queries and route crawlers to the discounted products. Classify it first: recurring event, permanent hub, or genuinely one-time campaign — each has a different lifecycle. The core accuracy spine: for a recurring event or ongoing hub, the biggest mistake is spinning up a new URL for every occurrence and deleting it after — use one durable, recurring URL (Google: /sale/black-friday, not /sale/2020/black-friday) and keep it live at a 200 between events, rather than 404ing it, which loses the page's accrued links and indexing history (Google doesn't promise a ranking boost from reuse alone). A true one-time promotion gets evaluated on its own — redirect, retain, or retire — not defaulted to keep-live-forever. Discounts belong in Product structured data, not special coupon markup: Google deprecated its dedicated offer/coupon rich results, and it computes price-drop badges itself by watching prices over time — so schema makes you eligible for merchant-listing enhancements, it does not make you rank; Merchant Center's sale-price feed dates and its separate Promotions program (country-limited, reviewed) are additional layers that don't auto-sync with on-page schema. And a coupon page that exists only to capture '[brand] coupon' searches with no real value drifts into thin, doorway territory that Google devalues.
Evidence for this claim Google recommends using a recurring URL for annual sales events rather than creating a new event URL each year. Scope: Google guidance for Black Friday and recurring event landing pages. Confidence: high · Verified: Google Search Central Blog: Black Friday pages Evidence for this claim Google can use Product and Offer structured data, including price information, for eligible merchant experiences and price-drop annotations. Scope: Eligibility is not guaranteed and structured data is not a ranking guarantee. Confidence: high · Verified: Google Search Central: Product structured dataTL;DR — A promotions or deal page is a page on your own store that gathers your discounts — a “Sale” page, a Black Friday landing page, a “Deals” or “Coupons” page. Two things matter most. First, use one permanent web address per event (
/sale/black-friday), keep it live all year even when there’s no sale, and just update it — don’t build a brand-new page every time and delete the old one. Second, your discounts belong in your normal product data; there’s no special “coupon” tag that puts a badge in Google anymore, and a coupon page that only exists to grab “[your brand] coupon” searches — with nothing actually useful on it — is the kind of thin page Google looks down on.
What a promotions or deal page is
When your store runs a sale, you usually make a page for it. That page can take a few shapes:
- A sale hub —
/sale/— listing everything currently discounted. - An event page —
/sale/black-friday,/sale/summer/— for a specific occasion. - A coupons page — listing your current discount codes.
- A clearance or outlet page — the permanent “always something on sale here” section.
Think of these as a special kind of category page. A normal category page groups products by what they are (“running shoes”). A deal page groups them by the fact that they’re discounted right now. It has the same two jobs as any category page: rank for what people search (“running shoe deals,” “[brand] coupon,” “electronics sale”) and act as the link that leads Google and shoppers to the individual discounted products.
The one rule that saves you the most pain
Reuse one permanent URL; don’t build a new page every time. The tempting mistake
is to make /black-friday-2025/, then next year make a fresh /black-friday-2026/,
and delete the old one. Every new page starts from scratch with no ranking history, and
deleting the old one throws away all the links and authority it earned. Google’s own
advice is to use a single recurring URL like /sale/black-friday and just refresh the
content each year — that way the page gets stronger every season instead of resetting
to zero.
And when the sale ends, don’t delete the page or make it show a “404 not found404 Not Found is the HTTP client-error status code a server returns when it can't find the requested URL — RFC 9110 defines it as no current representation, or unwillingness to disclose one. A \"hard 404\" actually returns the 404 status; a \"soft 404\" returns a success code (like 200) for a page that's really gone. 404s are normal and expected: the fact that some URLs 404 doesn't affect your site's other, successful pages, and Google de-indexes 404'd URLs over time (probably retrying for some period, less and less often).” error. Keep it live with a friendly note (“Our next Black Friday deals will be here soon — see today’s offers below”) and it’ll be ready to climb again next time. (This timing side — when to publish, how far ahead — is really its own topic; it lives with seasonal ecommerce SEOEcommerce SEO is the practice of optimizing an online store so its product and category pages rank in organic search and attract purchase-intent visitors. It uses the same Google algorithm as any other site, but compounds the usual SEO work with commerce-specific challenges like faceted navigation, product variants, and platform-imposed URLs..)
The coupon-badge myth
You might expect that if you mark up a discount, Google shows a little “SALE” badge. That’s mostly not how it works. Google retired its dedicated coupon/offer rich results — there’s no special markup that puts your promo code in the search result. Google can show a “price drop” note on shopping-style results, but it works that out on its own by watching your prices over time — you don’t (and can’t) mark it up. Your discounts just go in your normal product information (the price and the sale price), and Google decides what to show.
The simple checklist
- Use one permanent URL per recurring event; keep it live year-round.
- Treat the deal page like a category page: make sure every discounted product is reachable by a normal link from it.
- Put your sale prices in your product data, not in special “coupon” tags.
- Don’t make a bare coupon page whose only purpose is to catch “[brand] coupon” searches — give shoppers something genuinely useful (the actual deals, real codes, clear terms).
- Add breadcrumbsBreadcrumbs are a secondary navigation trail (Home > Category > Page) that shows where a page sits in a site's hierarchy. They create internal links that pass PageRank, and when marked up with BreadcrumbList structured data they can drive the path Google shows in desktop search results. so shoppers and Google can see where the page sits.
Want the technical version — durable-URL strategy, keep-vs-redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. when a deal ends,
exactly how discounts surface in Product schema, and how to stay out of thin-coupon
and doorway territory? Switch to the Advanced tab.
Evidence for this claim Google recommends using a recurring URL for annual sales events rather than creating a new event URL each year. Scope: Google guidance for Black Friday and recurring event landing pages. Confidence: high · Verified: Google Search Central Blog: Black Friday pages Evidence for this claim Google can use Product and Offer structured data, including price information, for eligible merchant experiences and price-drop annotations. Scope: Eligibility is not guaranteed and structured data is not a ranking guarantee. Confidence: high · Verified: Google Search Central: Product structured dataTL;DR — A promotions/deal page is a category page whose classification is “currently discounted” — it ranks for high-intent bargain queries and routes crawl
- PageRankPageRank is Google's original recursive link-graph algorithm: a page's score depends on the scores of the pages linking to it, and in the published model each page's score is split across its outbound links (the simplified version: links are weighted votes). Google says it's evolved since launch but still part of its core ranking systems. to discounted products. Classify first: recurring event, permanent hub, or genuinely one-time campaign — the URL and lifecycle rules below are written for the first two. The accuracy spine for 2026: for those pages, the dominant failure is spinning up a fresh URL per occurrence and deleting it after. Use one durable, recurring URL per recurring event (Google:
/sale/black-friday, not/sale/2020/black-friday) and keep it live at a200between events, with a genuine reason to exist — 404ing or deleting it loses the links and indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. history it earned at peak (Google doesn’t promise a ranking boost from reuse alone), and a404also tells GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. to stop crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. that URL. A true one-time promotion is evaluated on redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't./retain/retire instead, not defaulted to keep-live-forever. Discounts belong inProductstructured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. (price + sale price), not in special coupon markup: Google deprecated its dedicated offer/coupon rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show., and it derives price-drop badges itself by observing prices over time — so schema earns merchant-listing eligibility, it does not make you rank. Merchant Center’s own sale-price feed dates and its separate, country-limited Promotions program are additional layers that don’t auto-sync with on-page schema. And a coupon page that exists only to capture “[brand] coupon” with no real value is thin, doorway-adjacent content Google devalues.
Why deal pages are just category pages wearing a costume
Almost every technical decision on a promotions page is a category-page decision. A
category pageCategory page SEO is the practice of optimizing an ecommerce listing page (also called a PLP or collection page) — the page that groups products under a classification like /shoes/running/ — so it ranks for broad commercial queries and routes crawlers and link equity to the products beneath it. groups products by type; a deal page
groups them by the transient attribute “discounted right now.” Both do the same two
jobs — rank for their query, and serve as the crawl-and-link-equity on-ramp to the
products beneath them. So the whole category-page toolkit applies: descriptive URL,
one clean title and H1An H1 tag is the HTML `<h1>` element that marks a page's primary heading — the big visible headline at the top of the content. It helps users, search engines, and screen readers understand what the page is about., BreadcrumbList structured data, real <a href> links to
every product, and no Product rich-result markup on the multi-product listing
itself.
The one thing that makes deal pages their own topic is impermanence. A category like “running shoes” is forever; a “Black Friday sale” is here for a weekend. That single difference drives every mistake below.
Before applying any URL or lifecycle rule, classify what kind of page you actually
have: a recurring event that returns on a schedule (Black Friday, an annual
anniversary sale), a permanent hub whose page is evergreen even though its
contents rotate (/sale/, /clearance/, /coupons/), or a genuinely one-time
campaign that will not recur. The durable-URL-and-keep-live guidance below is
written for the first two. A true one-time promotion is a narrower case — its
expiration deserves its own answer, not an assumption that it should stay live
forever; see the Decision Trees tab for that branch.
The core decision: durable URL, kept live
This is where deal-page SEO is won or lost, and it’s the same principle that governs
seasonal pages. Google’s guidance is unambiguous: use “a recurring URL, not a new URL
for each occurrence of the event… use /sale/black-friday, not
/sale/2020/black-friday.”
Do — one durable URL per recurring event, updated in place.
/sale/black-friday, /deals/, /clearance/, /coupons/. Google’s guidance here is
scoped to recurring events: reuse one URL so it doesn’t reset to zero each occurrence.
Google doesn’t promise a ranking boost or guaranteed authority accumulation from reuse
alone — the documented benefit is avoiding the cost of starting over (no indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.
history, no accrued internal or external links) every single time, and it’s less work
than rebuilding annually. In the gap between promotions, swap in off-season messaging
and keep a footer or sale-section link so the page stays crawlable — provided the page
still has a genuine, truthful reason to exist between events (next sale’s date if
known, current deals if it’s a rotating hub); a placeholder kept alive purely for its
URL is the same thin-content risk covered later in this article.
Do — keep the page live at a 200 when the deal ends.
Don’t delete it, don’t return a 404, don’t slap noindex on it. All three throw away
the links and ranking history the page earned at peak. A 404 is also a strong signal
to GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. to stop crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. that URL, and recovery is slow. The default for any page
that will run a promotion again is: keep it alive, change the messaging.
A genuinely one-time promotion is a different case. The recurring-URL and
keep-live-forever guidance above is for pages tied to a recurring event or an
ongoing hub — it doesn’t automatically extend to a campaign that truly won’t repeat.
For that page, walk the actual decision: is there a close successor that satisfies
the same intent (redirect to it), does the expired page still hold standalone value
worth keeping (retain, with expired offers removed), or is neither true (retire with
a 404/410)? The full branch is in the Decision Trees tab.
Redirect only for permanent retirement.
A 301 is correct only when a promotion is never coming back (a discontinued product
line’s clearance page). Over time Google consolidates the source into the destination and
stops indexing it independently — so a 301 on a page that returns next year is pure
downside (you eat a recrawlCrawl frequency is how often a search engine comes back to re-fetch a page it already knows about. Popular pages that change often get refreshed many times a day; stable pages can go weeks or months between crawls — and you influence it indirectly, not by setting a dial. lag and lose the standalone URL). For the mechanics of the
301-vs-keep-live decision and off-season timing — publish lead times, the crawl
timeline before peak — that’s the province of
ecommerce SEO seasonalityEcommerce SEO seasonality is the practice of planning content, URLs, internal links, and crawl access around predictable rises and falls in search demand — capturing peak traffic before it arrives while preserving a seasonal page's authority year-round.; I won’t
relitigate it here.
Anti-patterns to kill: /black-friday-2025/ (resets authority every year and needs
annual 301s), date-stamped URLs like /deals-december-2025/ (cannibalization), and
maintaining separate /black-friday-2025/ and /black-friday-2026/ pages (doubles the
content, halves the authority).
Use the page's historical series to establish the normal seasonal curve before attributing a rise to this year's campaign. The pictured result is an example interpretation, not a benchmark for every promotion.
Upload a GSC, GA4, Ahrefs, Semrush, Adobe, or generic date-series export to my free SEO Forecast Free
- Use the durable promotion URL’s own historical series and keep the metric definition consistent.
- Backtest the model and inspect whether the normal seasonal pattern explains the current movement.
- Treat the residual as an investigation cue; campaign, SERP, inventory, and tracking changes still need separate evidence.
The SEO Forecast example says the recent actual value is 328.9 against a seasonal expectation of 295.1 and a no-season expectation of 39.3. It estimates about 87 percent of the recent rise matches the normal seasonal pattern and labels the movement mostly seasonal.
Structured data: discounts live in Product, not coupon markup
There’s a persistent myth that you can mark up a promo code or a percentage-off and earn a badge in Search. You can’t, and chasing it wastes effort.
Google deprecated its dedicated offer/coupon rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show.. There is no supported markup today that renders your coupon code or a generic “SALE” badge in an organic result. If you built pages around emitting coupon structured data for a rich result, that result no longer exists.
Price drops are computed by Google, not marked up by you. Google’s product docs are
explicit that “price drops are computed by Google by observing price changes for the
product over time.” You don’t declare “this is a price drop” — you keep accurate price
and sale-price data on the product, and Google decides whether to surface a price-drop
enhancement in shopping-style results. The lever you control is clean, current pricing
in Product structured data, not a special discount tag.
So the schema posture is the same as any product/category page:
- On product pages, keep
Productmarkup accurate — name, image, price and currency, availability — with a valid sale price when one applies. That earns eligibility for merchant-listing enhancements (including any price-drop treatment Google computes). It does not make the page rank; schema tells Google what changed, it isn’t a ranking boost. - On the deal listing page itself, treat it exactly like a category page:
BreadcrumbListyes; noProductrich-result markup on a multi-product listing;ItemList/CollectionPageoptional (no native rich result). If you genuinely answer shopper questions (“when does the sale end,” “does the code stack”), a naturally integratedFAQPageblock can be worth it — but only if the Q&A is real.
Four separate layers have to stay in sync — schema is only one of them. It’s easy to treat “structured data” as a single thing to get right, but a discount actually touches four independent systems, and none of them read from or auto-populate the others:
- Visible page copy — the price, sale price, and terms a shopper actually reads.
Product/Offerschema on the product page —price,priceCurrency,availability, and the recommended (not required)priceValidUntilproperty, which tells Google the date the current price stops being valid — the right field for a time-boxed sale price.- The Merchant CenterGoogle Merchant Center (GMC) is a free platform where retailers upload and manage product data so their products can appear across Google — Shopping, organic Search product grids, Images, Lens, and AI surfaces. Since 2020 it powers free (organic) product listings, not just paid Shopping ads. product feed — its own
sale_priceandsale_price_effective_dateattributes (an ISO 8601 date range) control what price Shopping ads and free listings show. This is a separate feed you maintain in Merchant Center, not something derived from your page’s schema. - Merchant Center Promotions — a distinct opt-in program for surfacing promo codes and offers alongside listings. It’s available only in a specific set of countries, requires an active Merchant Center account with a claimed URL, and every promotion goes through Google’s review before it can go live — it is not a universal feature every store can assume it has access to.
If the sale price on the page, the feed’s effective-date window, and any Promotions submission disagree, that’s the mismatch worth chasing — not the on-page schema alone.
The failure mode is treating structured data as the strategy. It’s the label, not the product.
The thin-coupon and doorway trap
This is the deal-page-specific quality risk, and it’s easy to stumble into.
A store’s own coupons page is legitimate when it does a real job: it lists your actual current codes, states the terms plainly, and links to the products the codes apply to. The problem is the version that exists only to intercept “[brand] coupon” searches — a page with a keyword-stuffed heading, a stale or empty code list, and no genuine value for the shopper. That’s thin contentThin content is web content that provides little or no value to users. Google's spam policies name it 'thin content with little or no added value' — and it's about value per page, not word count., and when a network of near-identical “[brand] coupon” pages is built purely to capture bargain-hunter queries, it edges into doorway territory — pages created mainly to rank for many similar searches that then funnel users to the same destination, which Google treats as a spam pattern.
Keep your coupon and deals pages on the right side of the line:
- Real, current content. Live codes with accurate expiry and terms, or the actual discounted products — not a shell that says “check back for deals” indefinitely.
- One page, not a doorway farm. Don’t spin up dozens of near-duplicate deal landing pages targeting slight query variations that all dump the shopper in the same place.
- Genuine helpfulness. Answer the real questions (what’s the code, what does it apply to, when does it end). If the page would be useless to a human who wasn’t a search engine, it’s the wrong page.
- Manage expired deals like any temporary content. When a specific promo ends, either fold it into the durable hub with updated messaging or, if it’s genuinely gone forever, handle it the way you’d handle any retired page — don’t leave a live page advertising a code that no longer works, and don’t accumulate a graveyard of dead deal URLs.
Internal linking — the on-ramp job
Because a deal page is a category page, its links are load-bearing:
- Link to every discounted product from the deal page via real
<a href>links (or paginate so they’re all reachable). If a discounted product isn’t linked from anywhere crawlable, Googlebot may not find it. A sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. or Merchant Center feed is a fallback, not the primary mechanism. - Turn internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them. up before a promotion, down after. Point the homepage, main nav, and relevant category/content pages at the deal page in the run-up to a sale; after it ends, pull it from high-visibility spots (to stop wasting crawl budgetThe number of URLs an engine will crawl in a timeframe. on a dormant page) but keep a footer link so it stays crawlable. Internal links are the strongest crawl-priority signal you control — the same lever that gets a seasonal page re-crawled in time.
- BreadcrumbsBreadcrumbs are a secondary navigation trail (Home > Category > Page) that shows where a page sits in a site's hierarchy. They create internal links that pass PageRank, and when marked up with BreadcrumbList structured data they can drive the path Google shows in desktop search results. in the UI and as
BreadcrumbListschema reinforce where the page sits.
Titles, meta, H1
- Title: include the promotion’s query —
[Category] Deals,[Brand] Coupons & Promo Codes,Black Friday [Category] Sale. Match how people actually search for the bargain, not internal jargon. - Meta descriptionThe meta description is an HTML head tag — `<meta name=\"description\" content=\"…\">` — that suggests a short summary of the page for the search snippet. It's not a Google ranking factor, and Google rewrites it the majority of the time, but a good one can still lift click-through.: lean on purchase-decision language — what’s discounted, how deep, and the honest window. Programmatic generation at scale is fine.
- H1: parallel the title; keep it clean and singular.
Freshness signals matter more here than on evergreen pages: a shopper (and Google) reading “Save up to 40% this weekend” wants that to be true this weekend. Keep dates, percentages, and code lists current, and update them in place on the durable URL rather than minting a new page.
Monitoring
- GSC Page Indexing — watch for a pile-up of dead/duplicate deal URLs in the excluded buckets; that’s a doorway/impermanence problem leaking.
- Performance reportThe Google Search Console report that shows how your site actually performed in Google Search, built from real impressions and clicks. It reports four metrics — clicks, impressions, average CTR, and average position — and keeps the most recent 16 months of data. — track the deal page’s query and CTR through the promotion window; a stable position with falling CTR is often SERP layout (shopping carousels expanding at peak), not a ranking loss.
- Rich Results Test / URL Inspection — validate
BreadcrumbListand product markup; confirm the deal page renders and indexes as intended. - Merchant Center — where merchant-listing and any price-drop treatment actually gets evaluated; check for pricing/availability disapprovals.
Where this sits
Promotions and deal pages are one slice of ecommerce site structure. They are a flavor of category pageCategory page SEO is the practice of optimizing an ecommerce listing page (also called a PLP or collection page) — the page that groups products under a classification like /shoes/running/ — so it ranks for broad commercial queries and routes crawlers and link equity to the products beneath it., so the faceted-navigation, paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does., and structured-data rules there apply in full; the individual discounted items are product pagesProduct page SEO is the practice of optimizing an individual product detail page (PDP) so it ranks in organic search and earns rich results. It blends unique product copy, structured data, variant canonicalization, image SEO, and customer reviews — but the structured data earns rich results and eligibility for free product listings, it doesn't make the page rank.; the timing of the same pages — publish lead times, keep-vs-redirect windows, crawl scheduling before peak — is ecommerce SEO seasonalityEcommerce SEO seasonality is the practice of planning content, URLs, internal links, and crawl access around predictable rises and falls in search demand — capturing peak traffic before it arrives while preserving a seasonal page's authority year-round.; and none of this is the same as marketplace SEO, where a discount plays into a marketplace’s own ranking algorithm rather than Google’s. For the bigger picture, see Ecommerce SEOEcommerce SEO is the practice of optimizing an online store so its product and category pages rank in organic search and attract purchase-intent visitors. It uses the same Google algorithm as any other site, but compounds the usual SEO work with commerce-specific challenges like faceted navigation, product variants, and platform-imposed URLs..
AI summary
A condensed take on the Advanced version:
- A promotions/deal page is a category page whose classification is “currently
discounted” — a
/sale/,/deals/,/coupons/, or event page like/sale/black-friday. It does two jobs: rank for high-intent bargain queries and route crawl + PageRankPageRank is Google's original recursive link-graph algorithm: a page's score depends on the scores of the pages linking to it, and in the published model each page's score is split across its outbound links (the simplified version: links are weighted votes). Google says it's evolved since launch but still part of its core ranking systems. to the discounted products. - Classify before applying lifecycle rules. Recurring event, permanent hub (contents rotate, page is evergreen), or genuinely one-time campaign — each gets different URL and expiration treatment. The dominant failure for the first two is spinning up a fresh URL per occurrence and deleting it after.
- URL strategy is the core decision for recurring events and hubs. Google: use “a
recurring URL, not a new URL for each occurrence of the event” —
/sale/black-friday, not/sale/2020/black-friday. Keep it live at a200between events (with a genuine reason to exist, not a bare placeholder); deleting, 404ing, or noindexing loses the page’s accrued links and indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. history, and a404tells GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. to stop crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. the URL. Google doesn’t promise a ranking boost from reuse alone — the benefit is not starting over. A true one-time promotion isn’t defaulted to keep-live: redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. to a real successor, retain for standalone value, or retire. - Discounts live in
Productstructured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding., not coupon markup — and that’s one of four layers that must be kept in sync manually (visible copy,Product/Offerschema including the recommendedpriceValidUntil, the Merchant CenterGoogle Merchant Center (GMC) is a free platform where retailers upload and manage product data so their products can appear across Google — Shopping, organic Search product grids, Images, Lens, and AI surfaces. Since 2020 it powers free (organic) product listings, not just paid Shopping ads. feed’s ownsale_price_effective_datewindow, and the separate, country-limited, reviewed Merchant Center Promotions program). Google deprecated its dedicated offer/coupon rich results, and “price drops are computed by Google by observing price changes for the product over time” — you keep accurate price/sale-price data; Google decides what to surface. Schema earns merchant-listing eligibility, it does not make you rank. NoProductmarkup on the multi-product listing;BreadcrumbListyes. - Avoid the thin-coupon / doorway trap. A coupon page that exists only to grab “[brand] coupon” searches with no real value is thin contentThin content is web content that provides little or no value to users. Google's spam policies name it 'thin content with little or no added value' — and it's about value per page, not word count.; a farm of near-duplicateThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling. deal landing pages funneling to one destination is a doorway pattern Google devalues. Keep codes real and current, one page not a farm, genuinely useful.
- Internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them. to every discounted product (
<a href>), turned up before a promotion and down after; freshness (accurate dates/percentages/codes) matters more than on evergreen pages. - Timing (publish lead times, keep-vs-redirect windows, crawl scheduling before peak) is covered by ecommerce SEO seasonalityEcommerce SEO seasonality is the practice of planning content, URLs, internal links, and crawl access around predictable rises and falls in search demand — capturing peak traffic before it arrives while preserving a seasonal page's authority year-round.; marketplace discounts are a separate algorithm entirely.
Official documentation
Primary-source documentation relevant to promotions and deal pages.
Google — sale & recurring-event pages
- Best practices for Black Friday and Cyber Monday pages (Oct 2020) — the recurring-URL guidance and creating the page well before the sale.
- Ecommerce SEO best practices — the ecommerce hub, including sales and promotions context.
- Designing a URL structure for ecommerce sites — minimizing duplicate URLs, empty-category handling,
?key=valueparameters. - Help Google understand your ecommerce site structure — listing pages must link to all products; link count as an importance signal.
Google — structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. & pricing
- Product structured data (intro) — product snippets vs. merchant listings; the note that price drops are computed by Google by observing price changes over time.
- Merchant listing structured data — the pricing/availability fields that make a purchasable product eligible for shopping enhancements.
- BreadcrumbList structured data — the markup that matters for a deal listing page.
- Structured data general guidelines — don’t mark up content that isn’t visible or is misleading (relevant to fake/expired discounts).
Google Merchant CenterGoogle Merchant Center (GMC) is a free platform where retailers upload and manage product data so their products can appear across Google — Shopping, organic Search product grids, Images, Lens, and AI surfaces. Since 2020 it powers free (organic) product listings, not just paid Shopping ads. — feed and promotions
- Sale price effective date attribute — the feed’s own date-range window for a sale price, separate from on-page structured data.
- Merchant promotions overview — the opt-in, country-limited, reviewed program for surfacing promo codes and offers; not automatically available to every store.
Google — quality (thin contentThin content is web content that provides little or no value to users. Google's spam policies name it 'thin content with little or no added value' — and it's about value per page, not word count. & doorways)
- Doorways spam policy — pages created to rank for many similar queries that funnel users to one destination.
- Thin affiliate / low-value pages guidance — the spam-policies hub covering thin, low-value content patterns.
- Redirects and Google Search — permanent vs. temporary redirectsA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore., for retiring a promotion for good.
Bing / Microsoft
- Bing Webmaster Guidelines — general crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor./indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed./quality guidance; the same durable-URL and quality logic applies.
Quotes from the source
On-the-record statements from Google. Each link is a deep link that jumps to the quoted passage on the source page where the page allows it.
Google — recurring URLs for sale events
- “Use a recurring URL, not a new URL for each occurrence of the event. Give the landing page of recurring events a meaningful URL that reflects the event that is used each year (for example: use /sale/black-friday, not /sale/2020/black-friday).” — Google Search Central Blog (Oct 2020). Jump to quote
Google — price drops are computed, not marked up
- “Price drops are computed by Google by observing price changes for the product over time.” — Google Search Central, Product structured dataProduct schema (schema.org/Product) is structured data that tells search engines a page's product name, price, availability, and reviews so it can appear in Shopping-style rich results. It's separate from a Google Merchant Center feed, though Google reconciles the two.. Jump to quote
Google — listing pages must link to products
- “If category pages don’t include direct links to all products in a category, GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. might not find all of your products by crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. alone.” — Google Search Central, ecommerce site structureWebsite structure (site architecture) is a site's visible hierarchy, navigation, breadcrumbs, and URL organization — how pages relate and how people and search engines move between them. Internal linking is the primary signal Google reads to understand that structure, not URL folders.. (A deal listing is a category page for this purpose.) Jump to quote
Note: the Black Friday quote above was confirmed word-for-word against the live page (2026-07-18); the post is dated Tuesday, October 26, 2020, by Alan Kent, Search Relations Team. Everything not in quotation marks above — the coupon rich-result deprecation, the doorway framing — is paraphrase of Google’s documented positions, not a verbatim quote.
Promotions & deal pages checklist
A pass to confirm a deal page ranks, routes crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index., and doesn’t hurt the store.
URL & lifecycle
- One durable, recurring URL per recurring event (
/sale/black-friday), not a year-stamped URL. - Page kept live at
200between promotions — not deleted, 404’d, ornoindexed. - Off-season messaging swapped in (“deals return in [month]”); footer link kept for crawlabilityCrawlability is how well search engine crawlers can discover, access, and fetch a site's pages. A crawlability issue is any technical condition — blocked access, broken links, server failures, or bloated URL inventory — that stops pages from reaching the index..
-
301used only for a promotion that’s permanently retired.
Rank the page (it’s a category page)
- Title and H1An H1 tag is the HTML `<h1>` element that marks a page's primary heading — the big visible headline at the top of the content. It helps users, search engines, and screen readers understand what the page is about. include the bargain query (
[Category] Deals,[Brand] Coupons). -
BreadcrumbListstructured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. present and valid. - No
Productrich-result markup on the multi-product listing. - Dates, percentages, and code lists are current and accurate.
Structured data (on the product pages)
-
Productmarkup has name, image, price + currency, availability, and a valid sale price when one applies. - You are not trying to mark up a coupon/offer for a rich result (deprecated) or to “declare” a price drop (Google computes it).
- Merchant CenterGoogle Merchant Center (GMC) is a free platform where retailers upload and manage product data so their products can appear across Google — Shopping, organic Search product grids, Images, Lens, and AI surfaces. Since 2020 it powers free (organic) product listings, not just paid Shopping ads. pricing/availability free of disapprovals.
Quality (avoid thin/doorway)
- Coupon page lists real, current codes with terms — not an empty “check back” shell.
- One page, not a farm of near-duplicateThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling. deal landing pages funneling to the same destination.
- Expired promos folded into the durable hub or handled like any retired page — no live pages advertising dead codes.
Links & monitoring
- Every discounted product reachable via real
<a href>links from the deal page. - Internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them. turned up before the promotion, down after (footer link kept).
- GSCA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. Page IndexingThe Google Search Console report (formerly Index Coverage) showing how many of your URLs are indexed vs. not indexed, and grouping the not-indexed ones by reason. watched for dead/duplicate deal-URL pile-up.
The mental models
1. A deal page is a category page with an expiry date.
Everything true of a category pageCategory page SEO is the practice of optimizing an ecommerce listing page (also called a PLP or collection page) — the page that groups products under a classification like /shoes/running/ — so it ranks for broad commercial queries and routes crawlers and link equity to the products beneath it. is true here —
two jobs (rank + on-ramp), BreadcrumbList yes, no Product markup on the listing, real
<a href> links to products. The only new variable is impermanence, and it drives
every deal-page-specific mistake.
2. The lifecycle decision: is this promotion coming back?
| Situation | What to do | Why |
|---|---|---|
| Recurring event (Black Friday, seasonal sale) | Keep alive — one durable URL, 200, off-season messaging | Authority compounds; no recrawlCrawl frequency is how often a search engine comes back to re-fetch a page it already knows about. Popular pages that change often get refreshed many times a day; stable pages can go weeks or months between crawls — and you influence it indirectly, not by setting a dial. lag |
Ongoing (/sale/, /clearance/, /coupons/) | Keep alive, refresh contents in place | It’s an evergreen hub whose contents rotate |
| Permanently retired (line discontinued) | 301 to the closest relevant page | Passes link value, but consolidates the source away — so only when it’s truly gone |
| ”Cleaning up” a page that earned links | Never delete / 404 / noindex | Discards equity + ranking history; 404 stops re-crawls |
Default to keep alive.
3. Structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. is the label, not the product.
Discounts go in Product (price + sale price); Google computes price-drop badges by
watching prices over time; coupon rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. are gone. Schema earns eligibility for
merchant-listing enhancements — it never makes the page rank. If you’re optimizing the
markup instead of the offer and the page, you’re optimizing the wrong thing.
4. The thin/doorway line. Ask: would this coupon/deal page be useful to a human who wasn’t a search engine? Real current codes, the actual discounted products, honest terms → fine. An empty shell, or a farm of near-duplicateThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling. “[brand] coupon” pages funneling to one place → thin/doorway, which Google devalues.
5. Timing lives next door. When to publish, how far ahead, the crawl timeline before peak — that’s seasonal SEO, not this page. Deal-page SEO is about the page’s structure and lifecycle; seasonality is about its calendar. Use both together.
Promotions & deal pages — cheat sheet
URL strategy at a glance
| URL pattern | Verdict |
|---|---|
/sale/black-friday, /deals/, /coupons/ (durable, updated in place) | Recommended |
/black-friday-2025/, /deals-december-2025/ | Avoid — resets authority, needs annual 301s |
Separate /black-friday-2025/ + /black-friday-2026/ | Avoid — doubles content, halves authority |
When a promotion ends → status code
| Action | Use it when |
|---|---|
Keep 200 + off-season / “next deal” messaging | Default — the promotion (or the hub) returns |
301 | Permanent retirement only (line discontinued) |
404 / noindex / delete | Avoid — discards equity; 404 stops re-crawls |
Structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. on a deal page
| Type | On the deal listing page? |
|---|---|
BreadcrumbList | Yes — the one that matters |
Product rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. | No — single-product pages only |
ItemList / CollectionPage | Optional (no native rich result) |
FAQPage | Optional, only if the Q&A is genuinely useful |
| Coupon / offer rich-result markup | Gone — deprecated; nothing to emit |
Discounts: how they actually surface
| Want | Do |
|---|---|
| A price-drop enhancement | Keep accurate price + sale price in Product; Google computes the drop by watching prices over time |
| A “coupon badge” in organic results | Not a thing anymore — no supported markup |
| Merchant-listing eligibility | Complete Product markup (name, image, price + currency, availability) |
Fast facts
- Recurring URL, not year-stamped (Google):
/sale/black-friday. - Keep live at
200;301only for permanent retirement. - Coupon/offer rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show.: deprecated.
- Price drops: computed by Google, not marked up.
- Coupon page must be real and current, not a doorway shell.
Anti-patterns — what quietly kills deal-page SEO
1. A fresh URL for every promotion.
/black-friday-2025/ this year, /black-friday-2026/ next year, old one deleted. Each new
page starts from zero and the deleted one’s authority evaporates. Fix: one durable
/sale/black-friday, updated in place.
2. 404ing or deleting the page when the deal ends.
The most damaging lifecycle mistake. It discards earned link equityPageRank is Google's original recursive link-graph algorithm: a page's score depends on the scores of the pages linking to it, and in the published model each page's score is split across its outbound links (the simplified version: links are weighted votes). Google says it's evolved since launch but still part of its core ranking systems. and ranking history, and
a 404 tells GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. to stop crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. the URL — recovery is slow. Fix: keep it live at a
200 with “next deal” messaging.
3. 301ing a page that’s coming back.
A 301 says “gone forever.” Google eventually consolidates the source away and stops
indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. it independently, so a page that returns next season eats a recrawlCrawl frequency is how often a search engine comes back to re-fetch a page it already knows about. Popular pages that change often get refreshed many times a day; stable pages can go weeks or months between crawls — and you influence it indirectly, not by setting a dial. lag for no
benefit. Fix: 301 only for genuinely permanent retirement.
4. Chasing coupon/offer rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show..
Building markup to render a promo code or “SALE” badge. That rich result was deprecated —
you’re emitting schema for a result that no longer exists. Fix: put the discount in
Product price/sale-price and let Google compute any price-drop treatment.
5. Product rich-result markup on the deal listing.
Product rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. are for single-product pages, not multi-product lists. Fix:
BreadcrumbList on the listing; Product only on the individual product pages.
6. The thin coupon shell. A “[brand] coupons” page with a keyword-stuffed heading, a stale or empty code list, and no real value — existing only to intercept the query. Thin contentThin content is web content that provides little or no value to users. Google's spam policies name it 'thin content with little or no added value' — and it's about value per page, not word count.. Fix: real current codes, honest terms, links to the products they apply to.
7. The doorway farm. Dozens of near-duplicateThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling. deal landing pages targeting slight query variations that all funnel shoppers to the same destination. That’s a doorway pattern Google treats as spam. Fix: one strong page per genuine intent.
8. Stale promotions left live. A page still advertising “40% off — this weekend only” months later, or a code that no longer works. Erodes trust and can conflict with structured-data policy on visible/accurate content. Fix: update in place on the durable URL; never leave a live page selling a dead deal.
Patrick's relevant free tools
- SEO Incident Simulator — Practice thirty deterministic technical SEO incident investigations — indexability, crawl controls, redirects, sitemaps, markup, caching, DNS, bot verification, rendering, hreflang, and faceted navigation — with clearly labeled fixture evidence and Find → Fix → Verify handoffs.
- Log File Analyzer — Drop a server access log and see crawl budget by bot and section, status-code waste, an AI-vs-search breakdown, and a spoofer report that names impostors faking a crawler user-agent. Parses nginx, Apache, IIS/W3C, and JSON logs entirely in your browser — nothing is uploaded.
- Faceted Navigation Auditor — Classify supplied parameter URLs, surface crawl traps, and advise on facet controls.
Tools for promotions & deal pages
- Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. — Page Indexing reportThe Google Search Console report (formerly Index Coverage) showing how many of your URLs are indexed vs. not indexed, and grouping the not-indexed ones by reason. — spot dead/duplicate deal URLs piling up in the excluded buckets, the clearest sign an impermanence or doorway problem is leaking.
- GSC — Performance reportThe Google Search Console report that shows how your site actually performed in Google Search, built from real impressions and clicks. It reports four metrics — clicks, impressions, average CTR, and average position — and keeps the most recent 16 months of data. — track the deal page’s query, position, and CTR through a promotion window (a stable position with falling CTR is usually SERP layout, not a drop).
- GSC — URL InspectionA Google Search Console feature that reports how Google sees one specific URL on a property you own. By default it shows the last-indexed snapshot; a separate \"Test live URL\" mode fetches the current version. + Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test — confirm how the deal page renders and
indexes, and validate
BreadcrumbListand product markupProduct schema (schema.org/Product) is structured data that tells search engines a page's product name, price, availability, and reviews so it can appear in Shopping-style rich results. It's separate from a Google Merchant Center feed, though Google reconciles the two.. - Google Merchant CenterGoogle Merchant Center (GMC) is a free platform where retailers upload and manage product data so their products can appear across Google — Shopping, organic Search product grids, Images, Lens, and AI surfaces. Since 2020 it powers free (organic) product listings, not just paid Shopping ads. — where merchant-listing and any price-drop treatment actually gets evaluated; watch for pricing/availability disapprovals on discounted items.
- Ahrefs Site Audit — surface orphaned discounted products, crawl depthCrawl depth usually means click depth — how many clicks it takes to reach a page from the homepage by following internal links. It can also mean a crawler setting that limits how many levels deep a crawl goes before it stops., dead/duplicate deal URLs, and internal-link counts per page.
- Screaming Frog SEO Spider — crawl the deal/sale tree, find products only reachable via JS, and audit which promotion URLs are live vs. 404 vs. redirecting.
- Ahrefs Keywords Explorer — size the bargain queries (“[category] deals,” “[brand] coupon”) worth building a durable page around before you build it.
What should happen when a promotion ends?
Choose the post-promotion URL state
Common promotion-page problems
An expired deal page still shows in search
Likely cause: the page remains indexable with stale titles, offer text, or structured data. Fix: choose the honest keep, redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't., or retire state; remove expired claims from visible content and Product data; then request recrawlCrawl frequency is how often a search engine comes back to re-fetch a page it already knows about. Popular pages that change often get refreshed many times a day; stable pages can go weeks or months between crawls — and you influence it indirectly, not by setting a dial. where appropriate.
A recurring sale page loses visibility each year
Likely cause: the store creates a new dated URL or removes all links to the permanent page between events. Fix: consolidate true duplicates into one recurring URL, keep a quiet crawlable path year-round, and restore prominent links before demand grows.
Discount values disagree across the page and schema
Likely cause: product cards, checkout rules, feeds, and structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. update on different schedules. Fix: verify the same SKU and offer window across visible price, JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal., merchant feed, and checkout; pause inaccurate markup rather than publishing a misleading price.
The deal hub is indexed but thin
Likely cause: it lists few or no active offers and exists mainly to capture coupon queries. Fix: add genuinely current deals, clear terms, useful category navigation, and honest off-season context—or remove it from search if it cannot serve shoppers.
Simplified deal-page examples
Recurring event URL
Before: /black-friday-2025/ → expires → /black-friday-2026/
After: /sale/black-friday/ → refreshed for each eventThe permanent URL accumulates signals while visible dates and terms change. The page stays
at 200 between events with accurate alternatives instead of expired promises.
Useful coupon page versus a doorway
Thin: "Brand coupon codes" + no working offers + generic affiliate copy
Useful: active code, exclusions, expiry, eligible products, and checkout instructionsThe useful version helps a shopper complete a real transaction. A page should not claim a code is active when the store cannot verify it.
Consistent product offer
{
"@type": "Offer",
"price": "79.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}This illustrative fragment is useful only when the visible product price, currency, stock state, and checkout experience agree with it.
Prompts for promotion-page QA
Check offer consistency
Paste the visible deal copy, product prices, rendered JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal., feed row, and promotion terms.
Compare these representations of one ecommerce promotion. Report mismatches in SKU,
price, currency, availability, eligibility, start/end dates, coupon requirements, and
exclusions. Separate missing evidence from actual contradictions. Do not assume that valid
structured data guarantees a search enhancement.Choose a post-promotion URL state
Paste the URL, whether the event repeats, current links and traffic, available successor, and the content that would remain.
Recommend keep at 200, 301 redirect, or retire with 404/410 for this expired promotion
page. Apply these rules: recurring events keep a durable URL; redirects require a close
intent-matched successor; unrelated pages must not be redirected to the homepage. List the
evidence supplied and identify any missing fact that prevents a confident choice. Prove a promotion change shipped correctly
Expired-offer cleanup test
Test to run: crawl the promotion URL and representative products, then compare visible copy, checkout, and rendered Product offer data. Expected result: expired codes, dates, and prices are absent or clearly marked inactive everywhere. Failure interpretation: one system is serving stale offer state. Monitoring window: immediate at campaign end and after the next cache cycle. Rollback trigger: shoppers can see or search engines can read an inaccurate active offer.
Durable URL test
Test to run: check the recurring page and known dated variants with the Redirect Chain
Mapper. Expected result: the recurring URL resolves at
200; true duplicates reach it in one hop. Failure interpretation: annual URLs still
compete or consolidation is incomplete. Monitoring window: immediate after redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't.
deployment. Rollback trigger: loops, chains, or redirects to unrelated destinations.
Offer-markup parity test
Test to run: use the PDP SEO Checker on discounted products. Expected result: visible and structured price, currency, and availability agree. Failure interpretation: templates, feeds, or promotion rules are out of sync. Monitoring window: at launch, after price changes, and at campaign end. Rollback trigger: structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. exposes a materially inaccurate offer.
Standing promotion-page metrics
Organic deal-page visibility
Metric: clicks, impressions, and average position for promotion URLs and relevant deal queries. What it tells you: whether durable pages retain and regain visibility across campaigns. How to pull it: Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. filtered by promotion page and query group. Benchmark / realistic range: compare recurring events with their own prior equivalent period because brand demand and discount depth vary. Cadence: weekly before launch, daily during major events, and once afterward.
Promotion landing-page conversion
Metric: organic sessions, product clicks, transactions, revenue, and conversion rate from deal-page landings. What it tells you: whether the page routes bargain intent to available products. How to pull it: analytics landing-page and ecommerce events with campaign dates annotated. Benchmark / realistic range: compare with prior campaigns and control for inventory, offer strength, and tracking changes. Cadence: daily during the campaign and post-campaign.
Expired-offer error rate
Metric: sampled promotion and product pages with stale prices, codes, dates, or schema. What it tells you: whether campaign shutdown works across systems. How to pull it: scheduled crawl plus checkout and structured-data spot checks. Benchmark / realistic range: the intended state is zero known inaccurate active offers. Cadence: at launch, at expiry, and after cache or feed updates.
Resources worth your time
My related writing
- The Beginner’s Guide to Technical SEO — where crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor., indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed., and structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. fit the bigger picture.
- How Should You Handle Out-of-Stock Products? It Depends — the same keep-live-vs-retire lifecycle logic, applied to products.
- Ecommerce SEO: The Beginner’s Guide — how deal and category pages fit the whole store.
My speaking
- How Search Works (SlideShare) — my walkthrough of crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor., renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM., indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed., and ranking, which underpins the durable-URL and keep-live arguments here. (Standing disclaimer: “This is my understanding of systems… not going to be 100% complete or accurate.”)
From around the industry
- Best practices for Black Friday and Cyber Monday pages (Google) — the primary official source for the recurring-URL rule.
- Product structured data (Google) — confirms price drops are computed by Google, not marked up.
- Doorways spam policy (Google) — the pattern thin coupon/deal farms fall into.
- Merchant listing structured data (Google) — the pricing/availability fields behind shopping enhancements.
- SEO Seasonality Explained (Search Engine Land) — the timing companion to this structural guide.
- Should You Keep Your Black Friday Pages Live All Year? (Koozai) — directly on the keep-vs-delete question for sale pages.
On this site
- Category page SEOCategory page SEO is the practice of optimizing an ecommerce listing page (also called a PLP or collection page) — the page that groups products under a classification like /shoes/running/ — so it ranks for broad commercial queries and routes crawlers and link equity to the products beneath it. — a deal page is a specialized category page; the facet/paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does./structured-data rules there apply in full.
- Ecommerce SEO seasonalityEcommerce SEO seasonality is the practice of planning content, URLs, internal links, and crawl access around predictable rises and falls in search demand — capturing peak traffic before it arrives while preserving a seasonal page's authority year-round. — the timing of these same pages (lead times, crawl scheduling, keep-vs-redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. windows).
- Product page SEOProduct page SEO is the practice of optimizing an individual product detail page (PDP) so it ranks in organic search and earns rich results. It blends unique product copy, structured data, variant canonicalization, image SEO, and customer reviews — but the structured data earns rich results and eligibility for free product listings, it doesn't make the page rank. — where the discount actually lives in
Productstructured data. For the bigger picture, Ecommerce SEOEcommerce SEO is the practice of optimizing an online store so its product and category pages rank in organic search and attract purchase-intent visitors. It uses the same Google algorithm as any other site, but compounds the usual SEO work with commerce-specific challenges like faceted navigation, product variants, and platform-imposed URLs..
Test yourself: Promotions & Deal Pages SEO
Five quick questions on building, structuring, and preserving deal pages. Pick an answer for each, then check.
Promotions & Deal Pages SEO
Promotions and deal pages SEO is the practice of building and optimizing an online store's own sale, deals, and coupon pages — like /sale/, /deals/, or /coupons/ — so they rank in Google for high-intent bargain queries, route crawlers to discounted products, and hold their earned authority year-round instead of being spun up and torn down for each promotion.
Related: Category Page SEO, Ecommerce SEO, Ecommerce SEO Seasonality, Product Page SEO
Promotions & Deal Pages SEO
A promotions or deal page is an ecommerce page a store publishes to gather and market its discounts — a /sale/ hub, an event landing page like /sale/black-friday, a /deals/ or /clearance/ listing, or a /coupons/ page listing current codes. In practice these behave like a specialized kind of category pageCategory page SEO is the practice of optimizing an ecommerce listing page (also called a PLP or collection page) — the page that groups products under a classification like /shoes/running/ — so it ranks for broad commercial queries and routes crawlers and link equity to the products beneath it.: they group products by a shared attribute (in this case “currently discounted”) rather than by type, and they usually do two jobs at once — rank in Google for high-intent bargain queries (“[brand] coupon,” “running shoe deals,” “[category] sale”), and route crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. and internal linkAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them. equity down to the discounted products beneath them.
Promotions and deal pages SEO is the work of making those pages rank and keeping them from hurting the rest of the store. The same Google ranking system applies as anywhere else — there is no separate “deals algorithm” — but these pages concentrate a specific set of problems: they are inherently temporary (the deal ends), so the tempting mistake is to spin up a fresh URL for every promotion and delete it afterward, which throws away all the authority the page earned; the discounts themselves belong in product structured dataProduct schema (schema.org/Product) is structured data that tells search engines a page's product name, price, availability, and reviews so it can appear in Shopping-style rich results. It's separate from a Google Merchant Center feed, though Google reconciles the two., not in special “coupon” markup (Google retired dedicated offer/coupon rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show., and it computes price-drop badges itself by watching prices over time); and a store’s own coupon page can drift toward thin, doorway-style content if it exists only to capture “[brand] coupon” searches without genuinely helping the shopper.
The practical scope covers URL strategy (one durable, recurring URL per recurring event, kept live at a 200 year-round), whether to keep a sale page live or redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. it when the deal ends, how to structure the price and availability in Product schema so discounts surface as merchant-listing enhancements, internal linkingLinks between pages on the same site. so discounted products stay reachable, and avoiding the affiliate-style thin-coupon and doorway patterns that Google devalues. It overlaps heavily with seasonal ecommerce SEOEcommerce SEO seasonality is the practice of planning content, URLs, internal links, and crawl access around predictable rises and falls in search demand — capturing peak traffic before it arrives while preserving a seasonal page's authority year-round., which governs the timing of the same pages.
Related: Category Page SEO, Ecommerce SEO, Ecommerce SEO Seasonality, Product Page SEO
Build-time retrieval analysis plus live signals for this exact article. The automatic chunk report includes a deterministic readiness score and is ready without a model download.
Search Console
sampleGA4 traffic (28d)
sampleCloudflare traffic (7d)
sampledCrUX field data (28d, phone)
sampleGoogle NLP entities
localChangelog
Updated Jul 18, 2026.
Editorial summary and recorded change details.Summary
Separated recurring-event/hub pages from genuinely one-time promotions for lifecycle guidance, removed an overstated authority-accumulation claim, and added the Merchant Center feed/Promotions layer that sits alongside on-page schema.
Change details
-
Added a classification step (recurring event / permanent hub / one-time campaign) before the durable-URL rule, and a one-time-promotion branch before the redirect guidance, so the keep-live default no longer applies to every deal page unconditionally.
-
Removed the claim that a durable URL 'outranks a brand-new one' and accumulates authority automatically; reframed around Google's actual scoped recommendation (avoid resetting to zero, no ranking guarantee).
-
Added a structured-data section covering the Merchant Center sale_price_effective_date feed attribute, the recommended priceValidUntil Offer property, and the separate, country-limited, reviewed Merchant Center Promotions program, as distinct layers from on-page Product/Offer schema.
Full comparison unavailable — no prior snapshot was archived for this revision.