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.

First published: Jul 3, 2026 · Last updated: Jul 18, 2026 · Advanced
1 evidence signal on this page

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.

TL;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 a 200 between 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 a 404 also 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 in Product 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. (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.
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 data

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).

TIP Separate recurring seasonality from a new promotion effect

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

  1. Use the durable promotion URL’s own historical series and keep the metric definition consistent.
  2. Backtest the model and inspect whether the normal seasonal pattern explains the current movement.
  3. Treat the residual as an investigation cue; campaign, SERP, inventory, and tracking changes still need separate evidence.
A recurring promotion needs a seasonal baseline before its apparent lift can be interpreted.

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 Product markup 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: BreadcrumbList yes; no Product rich-result markup on a multi-product listing; ItemList/CollectionPage optional (no native rich result). If you genuinely answer shopper questions (“when does the sale end,” “does the code stack”), a naturally integrated FAQPage block 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:

  1. Visible page copy — the price, sale price, and terms a shopper actually reads.
  2. Product/Offer schema on the product pageprice, priceCurrency, availability, and the recommended (not required) priceValidUntil property, which tells Google the date the current price stops being valid — the right field for a time-boxed sale price.
  3. 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_price and sale_price_effective_date attributes (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.
  4. 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 BreadcrumbList schema 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 BreadcrumbList and 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..

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.