Hand-poured 8 oz coconut-soy blend candle with a 50-hour burn time. Notes of freshly-ground espresso layered over warm vanilla bean, finished with a whisper of dark cardamom. Lead-free cotton wick. Recyclable amber glass vessel.
Three query parameters, three different canonicalization decisions. The path itself — /s/caf-coffee-classic-candle/8910995 — identifies the entity (a single product). Everything in the query string is either a property of that entity or metadata about how the user arrived.
This demo lives at /mockups/product-page and accepts the same query shape. Try ?color=001, the full Nordstrom-style query, or the bare canonical.
| param | value | decision | reason |
|---|---|---|---|
| breadcrumb | Home/Home/New Arrivals | strip | tracking / navigation context — same page either way, strip from canonical |
| origin | category-personalizedsort | strip | tracking / navigation context — same page either way, strip from canonical |
One canonical URL serves three colors. The variant is expressed in the rendered title — what humans see in the tab and what the LLM reads in the markdown frontmatter.
Same canonical. Same product. Different shade. Title disambiguates which variant the human or LLM is looking at. This is the MAC Lip Liner pattern from the canonicalization article, applied to a real product URL.
This page implements the bifurcation pattern: the same product published in two formats, served from a URL pair, advertised to AI consumers via the standard <link rel="alternate"> mechanism. AI shopping agents — Perplexity Shopping, ChatGPT Shopping, Google AI Mode — get clean Product schema (brand, price, availability, variants, ratings) without parsing the full HTML page (recommendations carousel, reviews UI, footer, scripts).
This page is noindex — it's a demo, not a real product. The brand is fictional. The URL shape is modeled on a real Nordstrom product URL to demonstrate canonicalization decisions across multiple query parameters. The pattern is real.