A breadcrumb is a linked trail — Home › Flower › Blue Dream — that mirrors your category tree. Show it near the top of every page below the homepage, then repeat it in BreadcrumbList schema so Google can display the trail in search results instead of a raw URL.
One trail per page, following the category tree
Every page below the homepage gets exactly one trail, and the trail should follow the same hierarchy your URLs use. A product that lives at /concentrates/live-resin/ shows Home, then Concentrates, then Live Resin, then the product name. Products often belong to several collections on a dispensary menu (sale items, staff picks, a brand page), but the breadcrumb ignores all of that and reports the one primary category. Trails that shift depending on how the visitor arrived look clever and confuse both people and crawlers.
The visible trail does the heavy lifting
Shoppers arriving from search land deep on a product or strain page with no idea how the store is laid out. The breadcrumb is their way up. Place it above the page title, link every level except the last, and keep the final item as plain text naming the current page. On mobile, hold it to a single line even if the middle levels collapse into an ellipsis. This is also free internal linking: every product page now links to its category and its parent, in exactly the language you want those pages associated with.
Then mirror it in BreadcrumbList schema
The markup is a BreadcrumbList with one ListItem per level, each carrying a position, a name, and the item URL; the final item can skip the URL. The rule that matters: the schema must match the visible trail, level for level, name for name. Run a template page through Google's Rich Results Test after you ship it. When the markup validates, Google frequently swaps the URL line in your snippet for the trail, so searchers see Home › Concentrates › Live Resin instead of a hyphenated slug.
A worked example
A dispensary client had breadcrumbs on category pages but not products, and no markup anywhere. We standardized a three-level trail across roughly 380 product pages — Home, primary category, product — generated the matching BreadcrumbList JSON-LD from the same template variable, and validated one page per template in the Rich Results Test. Two crawls later the product snippets showed category trails in place of URLs, and the category pages picked up a few hundred new internal links with clean, descriptive anchors. Small feature. Quiet, compounding payoff.
Key takeaways
- One trail per page, matching the primary category path and, ideally, the URL structure.
- Link every level except the current page, and keep the trail above the page title.
- BreadcrumbList schema must mirror the visible trail exactly; validate with the Rich Results Test.
- Breadcrumbs double as sitewide internal links with descriptive anchor text.
Frequently asked questions
Does the breadcrumb replace my URL in Google results?
It can. When a page carries valid BreadcrumbList schema, Google often displays the trail in place of the raw URL in the snippet, which reads far better than a string of slugs and hyphens.
Should the current page be a link in the trail?
No. Every ancestor in the trail links to its page; the final item is plain text naming the page you are on. In the schema, that last ListItem can carry just a name with no item URL.
What if a product sits in two categories?
Pick one primary category per product and use it everywhere: the visible trail, the BreadcrumbList markup, and ideally the canonical URL path. One consistent trail beats two accurate ones that disagree.
Want this done for your brand?
We build cannabis & CBD search visibility with full transparency, for dispensaries, brands, and MSOs.
Get a free cannabis SEO audit ›