Dispensary schema generator
Fill in one store and get clean LocalBusiness structured data built for cannabis retail. Copy it, paste it into that location page, and give Google the signals a map pack listing depends on.
01Why structured data matters more in cannabis
Structured data is a block of code that tells a search engine what a page is about in a format it does not have to interpret. On an ordinary retail site it is a helpful addition. On a dispensary site it is closer to essential, and the reason comes down to how much else is working against you.
Paid advertising is closed to cannabis on the major platforms, so organic and local search carry the entire weight of acquisition. At the same time, dispensary sites are unusually hard for a crawler to read, because the menu often loads inside an iframe or through JavaScript and the age gate can hide the rest. Structured data cuts straight through that. It states your name, address, coordinates, and hours in a form that does not depend on rendering, which means Google receives the core facts about your store even when the visible page is giving it trouble.
Schema is the one signal on a dispensary page that survives regardless of how badly the menu renders.
02Which schema type to choose
Store is the safest general choice for a recreational dispensary. It is a recognised subtype of LocalBusiness, it carries no medical implication, and it accurately describes what the business is. LocalBusiness itself works too and is the broadest option, useful when a store does not fit neatly into a retail description.
HealthAndBeautyBusiness and pharmacy style types are the ones to be careful with. They imply a healthcare context, which invites stricter scrutiny of everything else on the page and sits uncomfortably beside the rule that you cannot make medical claims. Unless you are a medical only operation and have a specific reason, stay with Store.
03The fields that actually carry weight
Not every property is worth the effort. A small set does most of the work, and the generator flags them if you leave them empty.
Name, address, and phone are the foundation, and the critical detail is that they must match your Google Business Profile character for character. Schema that contradicts your profile is worse than no schema, because it introduces doubt rather than confidence. Geo coordinates matter more than people expect, since they remove any ambiguity about where the store physically sits, which feeds directly into the distance factor in local ranking. Opening hours are worth filling properly because they surface in results and cut down the inaccurate hours reports that trigger profile reviews.
The sameAs property is quietly one of the most useful. Linking your Google Maps listing, Weedmaps page, and Leafly profile from the markup connects the entities together, which is exactly the kind of corroboration that builds prominence for a business type Google is otherwise cautious about.
04Why this tool does not generate Product schema
Dispensary operators often ask for Product and Offer markup on menu items, expecting rich results with prices and ratings. It is worth being direct about this: cannabis products sit under restricted policy on Google shopping surfaces, so those rich results generally will not show no matter how correct the markup is.
Marking up cannabis products with prices and potency also pushes a page toward promoting restricted goods, which is the same behaviour that gets Business Profiles suspended. The effort is better spent on LocalBusiness markup that works, and FAQ markup on your location pages, which can still earn enhanced results and carries no policy risk.
Get LocalBusiness or Store right on every location page, add FAQ markup where you have genuine questions answered, and leave cannabis Product markup alone.
05Doing this across a multi location chain
Every store needs its own markup on its own page, with its own address, coordinates, hours, and licence number. The failure mode is predictable: someone generates the markup once and reuses it across all thirty location pages with only the city name changed. That produces thirty pages claiming the same coordinates, which is both wrong and actively harmful.
For a chain, add parentOrganization pointing at the brand so the individual stores connect to the parent entity. Then use the same per store data sheet that drives your location page content to fill the markup, because both need exactly the same facts and gathering them twice wastes time.
06Mistakes worth avoiding
The most common one is marking up information that does not appear anywhere on the visible page. Structured data is supposed to describe what a user can see, and markup that describes something else is a guideline violation, not a shortcut. If the hours are in the schema, they should be on the page too.
Close behind it is drift. A store changes its hours or phone number, the page gets updated, and the schema block quietly keeps the old details for another year. Treat the markup as part of the page content rather than a set and forget technical task, and re-check it whenever the store details change. Finally, validate every block through the Rich Results Test after publishing, because a single malformed character invalidates the whole thing silently.
Scans a page the way a search engine sees it. Finds embedded menus Google cannot read, age gates blocking the crawler, and…
Detects which menu platform you run and whether its products actually reach the HTML Google reads. If your menu loads in an…
Reads your sitemap, finds every location page, and measures how similar they are to each other. This is the scaled content risk…
Questions about dispensary schema markup
Found something and not sure how serious it is?
Send the domain and what the check flagged. You will get a written read on what it is costing you and what to fix first.
Get Your Free Audit