Schema markup
Cannabis Schema Markup Optimization

Audit the graph
A tag on its own is not an entity
Work out where the graph breaks on your site
- 01 IfYour storefront does not surface in local results or on the mapLocalBusiness schemaName, address, phone, hours, service area and geo coordinates. The baseline. Every other schema type is built on top of it.
- 02 IfYour products appear in search with no price and no availabilityProduct and Offer schemaName, description, image, price, availability, plus THC and CBD content and terpene profile as additional properties.
- 03 IfYour education pages never take the featured snippetFAQPage schemaQuestion and answer pairs that are on the page, with short, direct answers. Markup that does not match visible text does not help.
- 04 IfVoice assistants never read your answers aloudSpeakable and FAQ extractionVoice platforms pull FAQ schema directly for spoken results. Cannabis compliance questions carry consistent voice query volume.
- 05 IfSearch engines describe your brand wrong, or not at allOrganization schemaBrand identity at domain level: logo, contact point, social profiles, founding details. Implement once at root, inherit everywhere.
- 06 IfYour blog and news coverage earns nothing in searchArticle and NewsArticle schemaHeadline, author, publisher, dates and images. Regulatory reporting published first improves Google News eligibility.
Measured
What the portfolio and the crawl benchmark show
- 195,648
- Search Console clicks in July 2026 across the showcased client case files
- 4,537,436
- Search Console impressions in July 2026 across the same case files
- 9
- Live reverse-proxied Dutchie storefronts fetched as GPTBot
- 152KB
- Median HTML delivered per storefront page
- 2
- Median readable body words in that HTML, so there is little text for markup to describe
- 0
- H1 tags across all 9 storefronts
All search, not schema only. 28 consented case files. See /portfolio
Sentinel, 2026-07-01 to 2026-07-31. See /portfolio
Bud Authority crawl benchmark, 2026-10-12
Same 9 storefronts. See /apex-menuedge
Same 9 storefronts
Same 9 storefronts
Validation
Invalid markup is worse than none
Shipping schema without validating it wastes the build and can confuse the parsers you were trying to instruct. Every deployment passes the Rich Results Test for eligibility, the Schema Markup Validator for syntax, and Search Console for what production actually does with it.
The failures repeat: required fields left empty, prices typed as strings, two LocalBusiness blocks fighting on one page, an Offer nested wrong inside a Product, hours that went stale a season ago, and special characters in a business name breaking the JSON-LD outright.
The full discipline
Every piece of this discipline, in 10 deep dives
- 01Article Schema for CannabisRead the breakdown
- 02Breadcrumb Schema for CannabisRead the breakdown
- 03Business Schema for CannabisRead the breakdown
- 04Event Schema for CannabisRead the breakdown
- 05FAQ Schema for CannabisRead the breakdown
- 06Organization Schema for CannabisRead the breakdown
- 07Price Schema and E-Commerce for CannabisRead the breakdown
- 08Product Schema for CannabisRead the breakdown
- 09Review and Rating Schema for CannabisRead the breakdown
- 10Video Schema for CannabisRead the breakdown

Our standard for upkeep
What the work costs and what keeps it alive
- Single location setup
- Root first
- Multiple locations
- Scoped per store
- Product availability sync
- Daily
- Search Console review
- Weekly
- Full site schema crawl
- Monthly
- Accuracy audit
- Quarterly
Organization, LocalBusiness, WebSite and BreadcrumbList wired at root and inherited down.
Location specific schema plus the automation that keeps it synchronised with operations.
A sold out strain still marked InStock sends buyers to nothing and damages the listing.
The Enhancements report is where schema degradation shows up before it compounds.
Every page verified against the stack its page type is supposed to carry.
Hours, service area, name and phone consistency, and rating freshness against current business reality.
The difference
The same page, with the stack and without it
| Criteria | Page without schema | Page with a complete stack |
|---|---|---|
| How the listing renders | A plain text listing competing on the title tag alone | Stars, price, hours, steps and question dropdowns rendered inside the result |
| Click-through rate | The baseline every competitor shares | Eligible for rich results, which change how the listing looks |
| Voice assistant eligibility | Nothing structured for an assistant to extract | FAQ answers extracted directly for spoken results |
| Shopping panel eligibility | Ineligible. No price, no availability, no seller | Eligible through Product and Offer markup |
| Who controls the interpretation | Google guesses from the words on the page | You do, because you declared what the data means |
| What it costs to keep | Nothing, because there is nothing to maintain | Daily availability sync, weekly review, monthly crawl, quarterly audit |
Start here






