A free, working cannabis & CBD SEO library, 500 guides. Browse the library ›
Home » Blog » On-Page & Technical SEO » How to Add Schema Markup to a Cannabis Website
On-Page & Technical SEO

How to Add Schema Markup to a Cannabis Website

In short

Add structured data as JSON-LD script tags: LocalBusiness for each store, Breadcrumb sitewide, Article on blog posts, and Product only where products live in your own HTML. Match every field to what the page shows, then run each template through Google's Rich Results Test.

Pick JSON-LD and Stay With It

Schema.org gives you three syntaxes. Use JSON-LD. Google recommends it, it sits in a single script tag in the head, and it never tangles with your visible HTML the way microdata attributes do. One block per page type, generated from the same data that renders the page, is the whole architecture.

LocalBusiness Comes First

For a dispensary, LocalBusiness markup on each location page does more than anything else you could add. Include the name, street address, phone, geo coordinates, and opening hours — and make them character-for-character identical to your Google Business Profile. A shop at 2145 S Broadway in Denver would mark up that exact address, its 10am–9pm hours as an openingHoursSpecification, and its store phone. Mismatched hours between markup, page, and profile is the kind of small contradiction that erodes trust in all three.

Product Markup, With a Caveat

Product schema needs a name, image, description, and an offer with price and availability. The caveat: if your menu is a Dutchie or Jane embed, those products render inside an iframe served from the provider's domain. Markup in that iframe does not describe your URL, and you cannot honestly mark up products your own HTML never contains. Product schema only makes sense for items rendered natively on your pages.

Article and Breadcrumb on Content Pages

Blog posts get Article markup — headline, author, publisher, dates. Keep the dateModified honest; bumping it without changing the post is the sort of thing that looks clever and gains nothing. BreadcrumbList goes on everything with a crumb trail. It is boring markup that quietly cleans up how your URLs display in results.

Validate With Both Testing Tools

Google's Rich Results Test tells you what Google can parse and which features the page is eligible for. The Schema Markup Validator at validator.schema.org checks the raw vocabulary and flags issues the Google tool ignores. Run both on one page per template. A single malformed block fails silently: no error on the page, no markup in the index.

Watch It in Search Console

After launch, Search Console grows enhancement reports for the structured data types it finds, and errors show up there before you would ever notice them yourself. Recheck after theme updates and platform migrations; those are the two events that break markup most often in my experience.

Key takeaways

  • JSON-LD in one script tag per block — skip microdata entirely.
  • LocalBusiness markup with name, address, phone, and hours matching your Google Business Profile is the highest-value block for a dispensary.
  • Products inside a Dutchie or Jane iframe cannot be marked up on your domain.
  • Validate with the Rich Results Test and the Schema Markup Validator, then monitor Search Console after every theme change.

Frequently asked questions

Does schema markup improve rankings directly?

No. Structured data is not a ranking factor. It helps search engines understand your pages with certainty and makes some pages eligible for enhanced display, which can lift clicks — the benefit is indirect but real.

Which schema type should a dispensary add first?

LocalBusiness on each location page, with address, phone, geo coordinates, and hours matching your Google Business Profile exactly. It supports the local results where dispensary customers actually search.

Can I mark up products shown in a Dutchie or Jane menu?

Not usefully. Those products render in an iframe on the provider's domain, so markup there does not describe your pages. Product schema only fits items rendered in your own HTML.

How do I check schema after adding it?

Test one page per template with Google's Rich Results Test and the Schema Markup Validator, then watch the enhancement reports in Search Console for errors that appear after theme or platform changes.

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 ›