If you run a dispensary, you already know the problem: you cannot buy your way to the top of Google. Google Ads rejects cannabis. Meta rejects cannabis. The paid lanes every other retailer uses are closed to you. That leaves organic search, and organic search rewards the operators who treat it like a system instead of an afterthought.
This is the complete guide to dispensary SEO: what actually moves rankings for a cannabis retailer, in what order, what it costs, and what to ignore. The examples are drawn from running organic search for New Mexico dispensaries, but the mechanics apply in any legal market.
The cannabis ad ban frustrates everyone equally, which is exactly why it is an opportunity. When competitors cannot outspend you, ranking comes down to fundamentals: a complete Google Business Profile, a fast and crawlable website, local relevance, and content that answers what customers are searching. Most dispensaries do none of these well. The shop that does them consistently wins the map pack and the organic listings, and that traffic is free every month after the work is done.
Here is the math that makes this concrete. Commercial cannabis search terms carry real advertiser value. "Dispensary SEO" alone shows a cost per click around $48, and "dispensary SEO services" around $25. Those are what agencies pay to reach operators. Customer-facing terms behave the same way: the clicks are worth money, and the paid lane is closed to everyone. Organic is not the cheap option here. It is the only option, which means the ceiling on it is set by effort rather than budget.
Think of it as a moat. Paid ads stop the moment you stop paying. SEO compounds. A page that ranks for "recreational dispensary near me" in your zip code keeps pulling in walk-ins for years.
For a physical dispensary, your Google Business Profile is more important than your website. It is what shows up in the map pack, the "near me" results, and Google Maps. Get it right first.
Volume, recency, and your responses all matter. Ask every satisfied customer at checkout, train budtenders to mention it, and respond to every review, good or bad. A polite, specific reply to a one-star review does more for trust than ten generic five-star replies. Never offer discounts in exchange for reviews. That violates Google's policy and can get your profile suspended.
Cannabis profiles get suspended more often than profiles in other categories, and reinstatement is slow. Reduce your exposure before it happens. Keep your listing details identical to your license records, avoid keyword stuffing the business name, do not create a second profile for the same address, and keep a dated export of your profile data and photos. If you are suspended, you will be asked for proof of legitimacy, and having your license documentation and utility records already assembled turns a multi-week outage into a shorter one.
Retail cannabis is a local search game. Nobody drives across the state for flower. They search "dispensary near me" or a neighborhood name and pick from the top three. To win those, build local relevance into your site.
This is the section most guides skip, and it is the one that costs operators the most traffic.
Almost every dispensary runs its menu through a third-party platform: Dutchie, Jane, Weedmaps, Leafly, or a POS-provided widget. Most of these embed into your site inside an iframe. An iframe is a separate document loaded inside your page. The content inside it is generally not treated as content on your page, which means every product name, strain, brand, and category in your menu can be invisible to search engines even though a human visitor sees it perfectly.
The practical consequence: you have hundreds of product and brand terms on your site and you rank for none of them. Operators usually discover this after months of wondering why a menu full of searchable brand names produces no search traffic.
How to check it in two minutes:
<iframe> tag, your menu is not contributing to your SEO.What to do about it, in order of preference:
Do not solve this by copying your entire live menu into static HTML that goes stale. Out-of-date inventory pages are worse than no pages, because customers arrive for something you no longer carry.
The other technical trap specific to this industry. A badly built age verification overlay can hide your entire site from search engines, and the failure is silent. You keep ranking on brand terms for a while, traffic slides, and nothing obvious looks broken.
The patterns that cause damage are the ones that withhold content until the visitor clicks. If your page loads a nearly empty document and only fetches the real content after age confirmation, crawlers see the empty document. If the gate redirects unverified visitors to a separate URL, crawlers get redirected too.
The safe pattern is to serve the full page content in the HTML, then overlay the age gate on top of it with CSS and remember the answer in a cookie or local storage. The content exists in the document from the start, which means crawlers read it, and humans still see the gate.
To confirm which situation you are in, fetch your own page the way a crawler does rather than the way a browser does, and check whether your body content is present in the response. Google Search Console's URL Inspection tool will also show you the rendered HTML it actually received.
None of the above matters if Google cannot crawl your site or it loads in eight seconds on a phone in a parking lot.
Structured data tells Google what your pages are. Add LocalBusiness or the more specific Store schema with your NAP, geo coordinates, hours, and accepted payment types. Add FAQPage schema to help and education pages to win expanded results. Add Product or Review schema where it genuinely applies.
One caveat worth stating plainly, because it costs businesses their rich results: schema has to describe what is actually on the page and what is actually true. Review schema for reviews you do not display, or LocalBusiness schema on a wholesale operation with no retail location, is a misrepresentation. It can earn a manual action rather than a rich result.
Cannabis customers ask the same questions every day. Each question is a page you can rank for and a reason for Google to see you as the local authority.
Write for customers, not for a keyword tool. Google has gotten very good at rewarding pages that answer the question and demoting thin filler. One genuinely useful long guide beats ten short stubs.
Most dispensary SEO fails quietly because nobody is watching the right numbers. Two free tools cover it.
Google Search Console is the only place you see the queries you actually appear for. The highest-value report is the one nobody runs: filter your queries to average positions between roughly 5 and 20. Those are terms where Google already considers you relevant but you are not winning the click. Improving a page that sits at position 8 is far cheaper than creating a new page from nothing, and the traffic arrives sooner. Work that list before you write anything new.
Google Analytics 4 tells you what the traffic did. Set it up so organic sessions are separated from direct and referral traffic, and define a conversion that reflects the business: menu views, direction requests, click-to-call, online order starts. Sessions alone are vanity. Direction requests are a customer walking through the door.
Check your rankings on a schedule rather than continuously. Positions bounce daily, and reacting to noise leads to changing things that were working.
Attention is the scarce resource, so it is worth naming the things that reliably waste it.
Expect to see movement in about ninety days. Local pack and profile changes often show up sooner, sometimes within weeks. Content and link-driven gains take longer. Anyone promising you first place next month is selling something.
Do this for a year and you will have a channel that competitors with bigger budgets cannot buy their way past, because the lane they would buy is closed to them too.
Canneye does dispensary SEO for cannabis operators, from Google Business Profile optimization to schema, menu indexability, location pages, and content that ranks. We run organic search for dispensaries across New Mexico and report on it with real Search Console and GA4 numbers rather than vibes.
If you would rather run your shop than wrestle with Search Console, talk to Canneye and we will build the organic engine for you.
Google Business Profile and local pack improvements can show movement within a few weeks. Site-wide organic gains typically take around ninety days to become clear, and compound from there. Technical fixes such as unblocking a crawler-hostile age gate can produce faster changes because they remove a barrier rather than build authority.
No. Google Ads and Meta both prohibit advertising the sale of cannabis. That is precisely why organic search, Google Business Profile, SMS, and email matter more in this industry than in ordinary retail. The paid shortcut is unavailable to your competitors as well.
Most third-party menus embed in an iframe, and content inside an iframe is generally not indexed as part of your page. View your page source and search for a product name. If it is missing and you find an iframe instead, your menu is not contributing to search. Fix it with a frameless integration where available, or by publishing your own indexable category and brand pages.
No. They are worth maintaining as accurate listings and as citation sources, but they rank for their own domain, not yours, and they charge for placement. Traffic you earn on your own site is an asset you keep. Treat marketplaces as a channel, not as your search strategy.
Yes, if you have more than one store. Each page needs its own address, hours, map, and genuinely different copy about that specific location. What does not work is duplicating one page across towns you do not operate in.
In practice it is a tie between the Google Business Profile being incomplete and the menu being trapped in an iframe. The profile drives the map pack, which is where most local intent resolves. The menu holds most of the untapped keyword volume on the site.