Schema markup is the code that tells Google exactly who you are, where you are, what you sell, and how to reach you. Without it, Google guesses. When Google guesses, your rankings suffer, your rich results disappear, and AI search tools like ChatGPT and Google AI Overviews skip right over you. This page covers every schema type that matters for dispensaries, in plain English, with every field spelled out.
"okay so here's the simplest way to think about schema. you know how google knows to show star ratings next to some search results, or shows your hours right in the search snippet? that's schema doing its thing. it's just a small piece of code on your site that tells google, in plain computer language, exactly what kind of business you are."
"without it, google reads your site like it's guessing. with it, google knows. and in 2026 this hits different because it's not just google anymore. ChatGPT, Gemini, Google AI Overviews, they all pull from structured data when they're answering questions like 'best dispensary near me.' no schema means no machine-readable identity means no AI recommendation. it's the most underused ranking signal in cannabis and it takes like an hour to implement. let's get into it fr."
Run the Free GBP Checklist →Schema markup has always been a ranking advantage. Most dispensaries skipped it because it sounded technical and complicated, and nobody explained it in plain English. That was a manageable disadvantage when Google was the only game in town.
In 2026, the stakes are higher. AI search tools like ChatGPT, Gemini, Perplexity, and Google AI Overviews now answer local queries directly. When someone asks "best dispensary near me" at 11pm on their phone, the AI answers from indexed, structured data. Dispensaries with properly implemented schema have a machine-readable identity that AI can confidently cite. Dispensaries without schema do not exist in that conversation at all.
The window is still open because almost nobody in cannabis has done this correctly yet. The dispensary that builds a complete schema footprint now is the one AI recommends for the next several years. See the AI visibility backlinks playbook for how schema connects to the full AI recommendation strategy.
Dispensaries without schema never get star ratings, hours, or price range showing in their search snippet. Those visual signals increase click-through rates by up to 677%. Your competitor with schema gets the click. You get scrolled past.
AI systems need a consistent entity signature across multiple sources to confidently recommend a business. Without schema linking your website identity to your GBP, Weedmaps, and Leafly profiles, you have no machine-readable identity for AI to reference.
LocalBusiness schema with geo coordinates, service area, and NAP data reinforces your GBP data. Google cross-references your schema against your GBP. When they match precisely, your local authority signal strengthens. When schema is missing, that reinforcement signal is gone.
Without schema, Google infers what your dispensary is from your page content. It usually gets it roughly right. But roughly right is not the same as machine-confirmed correct. Schema removes the guessing entirely. You tell Google exactly what you are.
Think of your website the way Google sees it. A human reads your homepage and instantly understands: dispensary, downtown Denver, sells flower and edibles, open until 10pm. Google has to figure all of that out by reading your text and guessing.
Schema markup is the code that removes the guessing. It is a small script you add to your website that speaks Google's language directly. Instead of Google reading "We are located at 420 Main Street and open Monday through Saturday until 10pm" and inferring what that means, schema tells Google exactly: this is a LocalBusiness, this is the address, these are the hours, this is the menu URL, this is the delivery radius.
The format is called JSON-LD. It looks like a small block of code that sits invisible in your page head. Users never see it. Google reads it every time it crawls your site. It is Google's preferred format for structured data because it is clean, easy to maintain, and does not require you to change your visible page content at all.
When Google reads your schema and it checks out against your GBP and your citations, it rewards you with rich results in search. Stars next to your listing. Hours shown directly in the snippet. An "Open now" badge. A Knowledge Panel. These visual upgrades increase clicks by measurable amounts. See how this connects to your complete on-page SEO strategy.
What Schema Unlocks in Google Search
AggregateRating schema pulls your review score directly into the search snippet. Visual, high-trust, proven CTR driver.
OpeningHoursSpecification in full array format enables real-time open/closed status shown directly in results.
paymentAccepted tells customers if you are cash-only before they even click. Especially important for cannabis businesses with limited payment options.
FAQPage schema expands your search result with Q&A dropdowns. Takes up more SERP real estate and answers customer questions before the click.
Complete Organization and LocalBusiness schema contributes to your Google Knowledge Panel, the sidebar card that appears on branded searches.
Structured entity data is what AI Overviews pull from when generating local recommendations. Schema is the foundation of AI visibility.
Most guides tell you to add LocalBusiness schema and call it done. That is the minimum. The dispensaries that build complete schema footprints implement all six types below, with every cannabis-specific field filled in. Each one adds a different signal layer. Together they create the entity signature that Google and AI systems use to confidently understand and recommend your business.
This is the foundation everything else builds on. Use @type as an array: ["LocalBusiness", "Store"] not just LocalBusiness alone. Store is a subtype that tells Google you are a retail location, which is more precise than the generic LocalBusiness classification and improves how Google categorizes your business for retail-intent queries.
The single most important field most dispensaries skip is @id. This creates a permanent unique identifier for your business entity. Without it, Google may treat your homepage schema, your location page schema, and your GBP as three separate unrelated entities instead of one business. Set it to your canonical homepage URL with a hash: https://yourdomain.com/#business
{
"@context": "https://schema.org",
"@type": ["LocalBusiness", "Store"],
"@id": "https://yourdispensary.com/#business",
"name": "Your Dispensary Name",
"url": "https://yourdispensary.com",
"telephone": "+1-555-123-4567",
"priceRange": "$$",
"paymentAccepted": "Cash, Debit",
"hasMenu": "https://yourdispensary.com/menu/",
"hasMap": "https://maps.google.com/?cid=YOUR_CID",
"image": "https://yourdispensary.com/images/storefront.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "420 Main Street",
"addressLocality": "Denver",
"addressRegion": "CO",
"postalCode": "80202",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 39.7392,
"longitude": -104.9903
},
"serviceArea": {
"@type": "GeoCircle",
"geoMidpoint": {
"@type": "GeoCoordinates",
"latitude": 39.7392,
"longitude": -104.9903
},
"geoRadius": 16093
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "10:00",
"closes": "22:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday","Sunday"],
"opens": "10:00",
"closes": "21:00"
}
],
"sameAs": [
"https://www.weedmaps.com/dispensaries/your-dispensary",
"https://www.leafly.com/dispensary-info/your-dispensary",
"https://www.facebook.com/yourdispensary",
"https://www.instagram.com/yourdispensary"
]
}
FAQPage schema is one of the highest-leverage schema types available to dispensaries right now because of how heavily AI Overviews and SGE (Search Generative Experience) pull from structured Q&A content. When your page has a question that matches a query, AI Overviews can pull your answer directly into the generated response and attribute it to your site.
Every page on your dispensary site that has a Questions and Answers section should have FAQPage schema. Your on-page SEO pages, your location pages, your category pages, your GBP playbook pages. Questions should target real search queries your customers type, not generic content. Answers should be substantive and complete, not one-liners. This is the checklist page's primary schema type and one reason it ranks for dozens of long-tail queries.
If your dispensary has native product pages (not just an iframe menu), Product schema is a significant competitive advantage. Customers searching for specific strains or product types are highly motivated buyers. Product schema helps Google surface your individual product pages for those strain-specific searches.
A common question: can you include THC and CBD percentages in Product schema without violating Google's policies? Yes. Including factual product attributes like THC percentage and CBD percentage is compliant. The line is between factual data and medical claims. 28% THC is a fact. "Relieves anxiety" is a medical claim and violates both Google's policies and most state cannabis advertising regulations. Stick to factual product data only: name, type, price, availability, THC, CBD. Never include health benefits.
BreadcrumbList schema tells Google the structural hierarchy of your site. When implemented correctly, Google shows breadcrumb navigation directly in the search snippet: CannabizSEO > GBP Playbook > Schema Markup. This visual path builds trust, shows users exactly where they are landing, and signals topical authority by showing Google the organized cluster structure of your content.
Every cluster page on your dispensary site should have BreadcrumbList schema. All pages in this playbook have it. It is one of the lowest-effort, highest-reward schema implementations available because it requires only three fields: position, name, and URL for each level of the hierarchy. See this page's own schema in the frontmatter for a working example.
Organization schema sits on your homepage and defines your brand as an entity, separate from any individual location. For single-location dispensaries, Organization and LocalBusiness often overlap. For multi-location operators, Organization is the parent entity that each location-level LocalBusiness schema references via parentOrganization.
The critical fields here are logo, foundingDate, and the same sameAs array from your LocalBusiness schema. Together these build the Knowledge Panel card that appears on branded searches for your dispensary. Every piece of your Organization schema that Google can verify against external sources strengthens your entity authority in Google's knowledge graph, which feeds directly into AI recommendations. On this site, Organization schema is injected sitewide through the topical authority control layer so one update covers every page simultaneously.
If you have native category pages for flower, edibles, concentrates, pre-rolls, and other product types, ItemList schema tells Google that the products on that page are grouped together as a category. This improves how your category pages are crawled and can influence how multiple products from your site appear together under a single search result.
ItemList is only relevant if you have real crawlable product pages on your own domain. If your menu is served entirely through a Dutchie or Jane iframe, Google cannot see those products and ItemList schema has nothing to reference. The menu SEO problem and the schema opportunity are the same problem: your menu needs to exist on your domain before schema can amplify it. See the menu SEO playbook for the solution.
"the @id thing is the one that blows my mind every time i audit a dispensary site. google is basically looking at your homepage schema, your location page schema, and your GBP profile as three different unrelated businesses unless you use @id to tie them together into one entity. it's like having your name spelled three different ways on three different IDs and wondering why nobody believes they're all you. add @id. it takes 30 seconds. it's the most underrated field in the entire schema spec. no cap."
AI search tools like ChatGPT, Gemini, and Google AI Overviews do not browse the web in real time when they answer a query. They pull from indexed, structured data sources that they have already ingested and organized. Schema is how you get your dispensary into that indexed, structured data layer.
The most important schema property for AI visibility is sameAs. When your LocalBusiness schema includes a sameAs array linking to your verified Weedmaps listing, your Leafly profile, your GBP, your Facebook, and your Instagram, you are creating a consistent entity signature across multiple indexed sources. AI systems look for this consistency to confirm a business is real and to build confidence in recommending it.
A dispensary that only exists on Weedmaps and Instagram has no schema-backed entity. An AI asked about dispensaries in that city has no structured data to reference. The dispensary with complete schema, a verified GBP, Weedmaps and Leafly listings in their sameAs array, and a consistent NAP across all of them is the one the AI confidently cites.
Only 1.2% of local businesses currently appear in AI recommendations, according to the Authority Engine February 2026 report. That gap exists because most local businesses have not built the structured entity footprint AI requires. The window to get into that 1.2% is open right now. Complete the AI visibility playbook alongside this schema work for the full strategy.
Link to your verified Weedmaps, Leafly, GBP, Facebook, and Instagram profiles. This is the foundational entity signature AI systems reference.
The schema tells AI which sources to check. If those sources have different names or addresses, the entity signature breaks. Consistent NAP is what makes the sameAs links credible.
Without @id, Google and AI systems may treat your homepage, location pages, and GBP as separate entities. @id confirms they are all the same business.
Paste your page URL into search.google.com/test/rich-results. Fix any errors before they undermine your AI visibility. Errors in schema are worse than no schema.
The Enhancements tab in Google Search Console shows which schema types Google has indexed and any errors or warnings. Check it monthly after implementation.
That gap exists because most local businesses have not built the structured entity footprint AI systems require. Schema is the foundation of that footprint. Source: Authority Engine, February 2026.
"okay real quick on the NAP thing because this is where dispensaries fumble every single time. your schema says your address is 420 Main St. your Weedmaps says 420 Main Street. your Leafly says Ste 101, 420 Main St. google looks at all three, tries to cross-reference them, and gets three slightly different addresses."
"that inconsistency cracks the entity signature you're trying to build. the sameAs links are supposed to reinforce each other. when the data doesn't match across those sources, the reinforcement breaks and google's confidence in your business drops. before you implement schema, run a citation audit. get everything matching first. then implement. that order matters like a fresh zip matters. terps first, then the burn. same energy."
See the Citation Playbook →
Schema implementation sounds technical. On a static site or a WordPress site, it is more straightforward than it looks. The actual code takes less than an hour to write once you know what fields to fill in. Here is the exact order to do it right.
Before you write a single line of schema, confirm your name, address, and phone number are identical across your website, GBP, Weedmaps, Leafly, Yelp, and every directory you appear in. Use BrightLocal or Whitespark. Fix every mismatch. Your schema links to these sources via sameAs. Mismatched data breaks the entity signature you are building.
See the citation audit playbook →Use the template above. Fill in every field including @id, geo coordinates, serviceArea radius, hasMenu, hasMap, paymentAccepted, and your full sameAs array. Get your latitude and longitude from latlong.net. Get your Google Maps CID from your GBP URL. Do not skip any cannabis-specific field.
Wrap the schema in a script tag: <script type="application/ld+json">. On a static Eleventy site, add it to your page frontmatter in the schema block. On WordPress, add it via your theme's header or through a plugin like Rank Math. On a custom build, paste it directly in the head of each relevant page.
Add BreadcrumbList schema to every cluster and subpage. Three fields per level: @type ListItem, position number, name, and item URL. Shows your hierarchy in search results and signals content organization to Google. Low effort, consistent value across the entire site.
Every page with visible Q&A content should have FAQPage schema. Questions target real search queries. Answers are substantive, not one-liners. This is your direct pipeline to AI Overview citations and FAQ rich results in search. It is also how this entire playbook site ranks for hundreds of long-tail dispensary queries.
Test every page with Google's Rich Results Test and Schema.org Validator. Errors in schema are worse than no schema. Check Google Search Console Enhancements tab monthly. Update schema whenever you change your hours, address, or phone number. Schema that does not match your current GBP creates a trust conflict.
This is the most common schema mistake dispensaries make. They implement beautiful, complete LocalBusiness schema and then it slowly undermines their rankings because the address in the schema says "Suite 100" and the GBP says "Ste. 100." Google cross-references these sources constantly. Any mismatch creates a trust signal conflict that can actually hurt rankings rather than help them.
The rule: your schema NAP, your GBP NAP, and your website footer NAP must be character-for-character identical. Before you publish any schema, open your GBP in one tab and your schema in another and compare them field by field. Same abbreviations. Same punctuation. Same phone format. Only then publish. See the full citation building playbook for the system that keeps all sources in sync.
"aight here's where it all lands. schema is the one signal that ties your whole online presence together into one entity google and AI can recognize and trust. your GBP, your Weedmaps, your Leafly, your website. right now they're all separate pieces floating around. schema links them into one coherent thing."
"the GBP checklist hits 47 ranking signals including schema. it walks you through exactly which fields matter most for the map pack and gives you the implementation checklist so you do not miss a single one. your website SEO and your GBP optimization compound each other. schema is the code that makes that compounding visible to google. that's the move. go run the checklist. fr fr."
Run the Free GBP Checklist →What dispensary owners ask after realizing their competitors are showing star ratings and they are not.
"Right now, someone in your city is searching 'dispensary near me.' One of your competitors is getting that customer. I can show you exactly why and exactly how to take it back."
Schema markup tells Google exactly who you are. The GBP checklist locks in every signal Google uses to rank you. Together they create the authority compounding loop that puts you in the top 3 and keeps you there.
Free. No signup. 47 ranking signals. Takes 20 minutes.
Schema is one piece of the website SEO system. The full picture: website SEO hub, on-page SEO playbook, product pages SEO, menu SEO and the iframe problem, neighborhood pages, mobile SEO.
Schema feeds AI visibility. Read the full strategy: AI visibility backlinks playbook, AI SEO hub, topical authority explained, AI SEO vs traditional SEO.
Schema works best when citations are clean: cannabis dispensary citations playbook, GBP citations guide, GBP compliance rules, all local ranking factors.
Resources: free GBP checklist, GBP playbook hub, cannabis dispensary SEO hub, all 38 states we serve.