Skip to content
Module 01 of 09 · Basics

Cannabis Local SEO: The Foundation Every Dispensary Needs

How dispensaries earn a place in the Google map pack, which Business Profile mistakes get cannabis listings suspended, and what a location page has to carry before it deserves to rank.

Cannabis Local SEO: The Foundation Every Dispensary Needs
Key takeaway

Distance is fixed by your lease, so the whole of local SEO is the other two factors: describing the business precisely, and building evidence that it is real and busy. The Business Profile carries more of that than your website does.

A dispensary has a smaller catchment than almost any other retailer. Most of the people who will ever walk through the door already live within a few miles of it, and nearly all of them will search before they drive.

Local SEO is the work of being the store they find at that moment. Everything else you do in search sits on top of it, and without it the rest earns very little.

There is a second reason it matters more here than in other retail. Google Ads and Meta both prohibit advertising cannabis for sale, so you cannot buy your way to the top of a “dispensary near me” search the way a furniture shop can. The organic surface is not one channel among several. It is the channel.

This module is the foundation the other five build on. It covers how the map pack is decided, why proximity behaves differently from how people assume, and why the Business Profile carries more of the decision than your website does.

It also covers what actually gets a cannabis listing suspended and how to get one back, what a location page has to contain, and how to tell whether any of it worked.

It is the first of six modules, and it covers the half of dispensary SEO that a store can lose without ever touching its website.

How the map pack is actually decided

The map pack is decided by three things weighed together: relevance, distance and prominence. Two of the three are things you can change.

Google weighs them at the same time rather than in order: relevance, distance and prominence. Relevance is how well your profile and pages match what was searched. Distance is how far the store is from the searcher.

Prominence is how well known and trusted the business appears to be, drawn from reviews, citations, links and general reputation.

Three map pack factors shown as bars. Relevance and prominence are filled and labelled yours. Distance is drawn as an empty dashed bar labelled fixed by the address.
Two of the three are work. The third was decided when the lease was signed.

The useful part of that model is what it rules out. You cannot move the store, so distance is not a lever, and any effort spent trying to rank in a neighbourhood on the other side of the city is effort spent against geometry.

What you can move is how precisely the business is described, and how much evidence exists that it is real and busy. That is the whole job, and it is why two of the three bars above are filled.

It also explains a result operators find baffling: a store with a better website ranking below a store with a worse one.

If the second store is closer to the searcher and has more recent reviews, it wins, and no amount of website work will change that for that particular search.

It will change results for the searches where the two are equally close, and there are more of those than most owners expect.

That is the mechanism behind why a nearer store with a thinner site still takes the near me searches.

One more thing worth understanding early. The three factors are weighed together rather than checked in order, so a large advantage in one can offset a deficit in another.

A store slightly further away with markedly better prominence beats a nearer store with a thin, half filled profile. That trade is the entire opportunity, because prominence is the factor most dispensaries neglect.

Proximity, and what “you cannot move the store” really means

Proximity is the factor people misunderstand most, usually by treating it as a fixed radius. It is not. It is relative to what else is nearby, and that changes everything about which markets are worth fighting for.

The same search in two markets. In a dense city the effective radius is about one mile with several competing stores inside it. In a rural market the radius reaches about twenty miles with only two other stores in range.
Proximity is relative to what else is nearby, not a fixed number of miles.

In a dense city with a dozen licensed stores within a mile, the searchable radius collapses.

A store two miles away is effectively never shown for a generic search, no matter how good its profile is, because Google has closer candidates that are good enough.

In a rural county with three stores, the same search reaches twenty miles or more, and a single well run store can hold the entire area.

Three practical consequences follow, and they are the ones worth acting on:

  • In a dense market, stop chasing the generic term. “Dispensary near me” from across the city is unwinnable. What is winnable is every specific search where intent narrows the field: a product category, a brand, a service like curbside or online ordering, or the neighbourhood you are actually in. If you run two stores in one metro they will also start competing with each other for the same term, which is its own problem.
  • In a thin market, the generic term is the whole prize and it is usually undefended. The work is ordinary completeness, done properly, before a competitor bothers.
  • The old advice about moving your pin towards the city centre is nonsense and it is also a suspension risk. There is no centroid to chase, the address has to be where you actually trade, and editing it to something more convenient is the single fastest way to lose the listing.

The honest framing to give an owner is this: proximity decides the size of the field you are competing in, and you do not choose the field. You choose how convincingly you win inside it.

The Business Profile is the asset, not the website

The single most common misallocation in dispensary marketing is spending on the website while the Business Profile sits half filled. For map pack results, the profile is the primary source. Category, address, hours, attributes, photos, reviews and posts all live there, and none of them can be supplied by your site.

Two panels. The Business Profile panel lists category, address, hours, reviews and photos and is labelled decides the map pack. The website panel lists the location page, menu, schema and internal links and is labelled decides the blue links.
Two surfaces, one search. Work on one does not substitute for the other.

The two surfaces are not independent, which is where the nuance sits. Google cross references them.

If your profile says one thing about your hours, your address or your name and your website says another, the disagreement itself is a signal, and not a helpful one.

The site’s job in local search is to corroborate the profile and to answer the questions the profile has no room for.

That also sets the priority when budget is tight. A profile that is complete, accurate and active will out perform a beautiful website attached to a neglected profile, every time, for map pack results.

The reverse is not true, and it is the reason the first month of work on any dispensary account belongs in the profile rather than in a redesign.

Filling the profile in the order that pays

Everything in the profile helps, but not equally, and the order matters far more than the total effort. Doing all of it badly is worse than doing the first two properly.

Profile fields ranked by impact. Primary category has the longest bar and is marked do it first. Remaining fields, reviews, photos and posts follow with shorter bars. Products is dashed and marked risk, not reward.
Impact against effort. Primary category is one click and gates everything downstream.

Primary category is the field that decides the most in the whole profile and the one most often set carelessly.

It is a single choice that tells Google what kind of business this is, and it filters you in or out of entire searches before relevance is even scored. Secondary categories widen the net; the primary one decides the pond.

Getting it wrong is not a small loss of ranking, it is absence from searches you should be in.

Medical and adult use stores are searched for differently, and the profile is where that difference is declared. A store licensed for both should say so in its categories, services and description, because “medical marijuana dispensary” and “recreational dispensary” are separate queries with separate intent, and a profile that answers only one of them is invisible for the other.

After the category, work in this order:

  1. Every remaining field, without deciding which ones look interesting. A complete profile consistently outranks a half filled one, and completeness is cheap. Hours including special hours for holidays, so the profile is not wrong on the days people check hardest. Attributes and services, because they feed the specific searches that are winnable in a dense market. A description written for a reader rather than stuffed with the city name.
  2. Reviews, which are slow, compounding and the hardest thing for a competitor to copy.
  3. Photographs, on a schedule rather than a single upload at setup: the storefront so people recognise it from the street, the interior, and the team.
  4. Posts and questions, where the useful move is answering the obvious questions yourself before somebody answers them wrongly on your behalf.

Products are the exception. For a plant touching business, that field is risk without reward, and it is covered in the next section because it is one of the five things that gets a listing pulled.

Structured data is the right place to describe the business instead, which is what the schema generator builds and what product markup on cannabis items cannot do for you.

What actually pulls a cannabis listing

Plant touching businesses sit under heavier scrutiny than ordinary retail, and a suspension is not a warning. The listing disappears from the map pack, from Maps, and from the branded search where most of your existing customers look up your hours.

Recovery is possible, but it is measured in weeks, and the store is invisible for all of them. What a suspension looks like from inside the account is worth reading before it happens rather than after.

A risk plot of five suspension triggers. Position shows how easily each happens by accident against how hard it is to undo. An address that does not qualify sits in the corner that is both accidental and hard to undo.
The two axes that matter: how easily it happens without anybody meaning it, and how hard it is to undo afterwards.

Five things account for almost all of it.

  • Address eligibility. The one worth understanding properly, because it is the only trigger where the fix is not an edit. A profile has to represent a place where the business makes in person contact with customers during its stated hours. A virtual office does not qualify. A coworking desk does not qualify. Neither does a licensed unit that has not opened yet, however certain the opening date is. When this is the cause, the remedy is a different address.
  • Name padding. The trigger competitors report. The profile name has to match the name on the building, so adding a city or a keyword to reach more searches is both against the rules and visible to every other operator in your market. In a competitive metro you should assume somebody is checking.
  • Promotions, prices and potency claims in the description or in posts, which push a profile towards promoting restricted goods. This is the most preventable of the five and also the one most likely to be done by somebody who does not know the rule, usually whoever runs the social accounts.
  • Product listings for cannabis items, which put the whole profile at risk. This one is frequently not a decision anybody made: a menu integration or a plugin added them automatically. Check what your menu provider is syncing into the profile, because the profile is yours and the consequence is yours.
  • Pre opening listings, the well intentioned one. A profile created to build visibility before launch fails the staffed premises test, and the suspension arrives at the worst possible moment, which is the week you open.

Getting a suspended listing back

If a listing is already gone, the sequence matters more than the speed, and the instinct almost everybody has is the wrong one.

A four stage timeline: fix the cause, gather evidence, submit one appeal, wait. Below it a warning panel explains that repeated fast appeals build a record against the listing.
One clean appeal beats four fast ones, because every rejection is recorded.
  1. Fix the cause first, before appealing. Not at the same time. If the address does not qualify, the address changes first. If the name is padded, the name is corrected and left to settle. An appeal submitted while the fault is still live is a rejection you have volunteered for.
  2. Gather evidence before you write anything. The state licence with the trading name and address that match the profile exactly. A dated utility bill. Photographs of permanent signage with the street visible, the exterior, and the interior. The point is not to argue, it is to make the answer obvious to somebody who has thirty seconds.
  3. Submit once, and be ready to be filmed. Video verification is increasingly common for this category, and it is usually a single unbroken walk from the street sign through the door to the interior and any back of house area. The difference between a two week recovery and a two month one is usually whether somebody can do that today, without arranging anything.
  4. Then wait. The instinct is to fire off another appeal the moment one is rejected, and that instinct is what turns a recoverable suspension into a long one. Each rejection builds a record against the listing, and the next reviewer reads that record before they read your evidence.

Worth saying plainly: a profile suspension is not the same thing as a manual action against your website. They have different causes, different evidence and different recovery paths, and confusing them wastes weeks. Module two covers the website side, and the first twenty four hours of a manual action is the short version.

NAP consistency, and why it fails quietly

NAP stands for name, address and phone. Google cross checks these across the web to satisfy itself that a business is real and that the listings describing it describe the same place. When they agree everywhere, trust rises. When they drift, even slightly, it erodes, and nothing on any dashboard tells you it is happening.

Four directory listings for one store. Each differs slightly: a legal entity name, an expanded street with a suite number, and an old tracking phone number. The result is labelled four candidate entities.
Every one of these reads as correct to the person who typed it.

The failure is subtle because each individual entry looks right. One directory carries the legal entity name with LLC attached because that is what the paperwork says. Another expands Street to St, or adds the suite number the landlord uses.

A third still carries a call tracking number from a campaign that ended two years ago. None of those look wrong to a human. Together they make Google less certain these four listings are one place.

Fixing it is tedious rather than difficult, and the method is the same every time. Decide the exact string for each of the three and write it down, so there is one answer rather than four opinions.

Then correct the listings in tiers: the core map platforms first, then the cannabis directories your customers actually use, then general directories, then whatever local civic or chamber listings exist.

Work top down and stop when the returns flatten, which they will, sooner than the people selling citation packages suggest.

Two specifics worth building into the habit. Call tracking numbers belong everywhere except the profile and the core citations, because a number that appears nowhere else is a mismatch by definition.

And when a store moves or rebrands, the old listings do not disappear on their own; they sit there disagreeing with the new ones until somebody claims and corrects them.

What a strong location page has to carry

This is where local SEO and manual action safety meet, and it is the reason this module sits before the others. A location page has to be genuinely local rather than a template with the city name swapped in.

The test is simple: read the page and ask which sentences would still be true if you pasted them onto a different store’s page. Everything that survives that test is boilerplate.

A location page split into two columns. The left column, only true of this store, lists neighbourhoods, named staff, parking, local promotions, hours and state compliance copy. The right column, true of every store, lists a swapped city name, repeated boilerplate and the same menu embed.
Only the left column earns the ranking. Most location pages are made of the right one.

For a single store this is a writing job of a couple of hours. For a chain it is the difference between a content system and a scaled content penalty, which is what module three is about, and how alike location pages become without anybody noticing is the short version.

The location page checker gives you the number.

Either way the ingredients are the same. The neighbourhoods this store actually serves, named specifically rather than gestured at. Store specific details like staff, amenities and local promotions that differ from other locations.

Then parking notes and the landmark on the corner, because that is what a person actually needs. Accurate hours and a map for that exact location. And compliance copy written for that state rather than for the company.

Three technical details belong on the page as well, and they are cheap. LocalBusiness or Store structured data with the address, hours and geo coordinates that match the profile exactly, which is what the schema generator produces.

An internal link from the page to the relevant service and to the menu, so the page is not a leaf with nothing below it.

And a menu that a crawler can actually read, which is a bigger subject than it sounds: an embedded menu often never reaches the index at all, and the menu visibility checker tells you how much of yours does. Module six covers it properly.

Reviews and citations: what compounds and what does not

A citation is any online mention of your name, address and phone. The more consistent, quality citations you hold, the more Google trusts the location.

They are worth building, but they saturate: the first twenty do most of the work and the two hundredth does almost none. This is the part of local SEO most often oversold, usually as a package of five hundred directory submissions.

Reviews are a genuine ranking factor rather than a vanity metric, and the part operators miss is that volume and recency both count. A store with two hundred reviews and none in the last six months looks less alive than a store with sixty that adds four a month, and the ranking reads it that way.

Two review patterns over twelve months. A steady line rises continuously from month one. A dashed line jumps sharply in month four and then stays flat for the rest of the year.
Volume is what the dashboard shows. Recency is what the ranking reads.

That is also why buying reviews costs more than it returns. The pattern it produces is a spike followed by a flatline, which is exactly the shape detection looks for, and the store is left with a number that ages badly and no habit of asking. The habit is the asset, not the total.

Two rules that keep this clean. Ask everybody, not just the people you expect to be happy: selectively soliciting positive reviews and steering unhappy customers elsewhere is against platform policy and it is detectable in the ratings distribution.

And reply to every review including the bad ones, in public, briefly and without arguing, because the reply is written for the next reader rather than for the reviewer.

Storefront, hybrid, or delivery only

Everything above assumes customers come to a shop. Not every cannabis business works that way, and the model decides what is available to you before any of the tactics matter.

Three panels. Storefront shows address, map pack and reviews all available. Hybrid adds a service area. Delivery only is marked not eligible for a profile.
The model decides what is available before any tactic matters.

A storefront gets the full local surface, and this module applies to it end to end.

A hybrid that also delivers keeps the address visible and adds a service area for the places it delivers to; the mistake to avoid is hiding the address in order to look like a delivery business, which gives up the map pack for nothing.

Delivery only is the hard case. Google’s eligibility rules exclude businesses selling age restricted goods that have no physical storefront customers can visit. That is not a ranking problem to be solved with better content; it is an eligibility line.

For that operator, organic search, the menu platforms and owned channels are the whole channel, and the usual paid fallbacks are closed too, so pretending otherwise wastes months.

It is worth establishing which of the three a business is in the first conversation, because half of local SEO advice on the internet is written for the first case and quietly useless for the third.

How to tell whether any of it worked

Local work is slow enough that without measurement it is indistinguishable from doing nothing, and the usual measurement is close to useless.

The same store measured two ways. A single rank check reports position three. A grid of checks across the catchment shows first place near the store falling to twenty plus at the edges.
Progress looks like the green spreading outward, not like one number falling.

Why one rank number tells you nothing

A single rank number, checked from one point, tells you almost nothing. It is the same store measured from one spot, and because proximity dominates, that spot decides the answer. It can sit at position three for months while the work is either spreading or stalling, and the number will not say which.

What a grid measurement shows instead

A grid tells you the truth. Check the same search from points spread across the catchment and you see the shape: first at the door, mid pack half a mile out, absent at the edge.

Progress in local SEO looks like that green area spreading outward. Regression looks like it shrinking towards the pin. Neither is visible in a single number.

Alongside the grid, three things are worth watching monthly and nothing else is.

First, the actions people take on the profile rather than the impressions it collected, since calls and direction requests are the ones that correlate with somebody arriving. Second, the split between searches for your name and searches for what you sell, because growth in the second is what new visibility actually looks like.

Third, the queries in Search Console that mention a place, which tell you which neighbourhoods the site is starting to reach.

Set the expectation honestly at the start. Profile changes can show within days. Review velocity and citation work take one to three months to settle. Location page work competes on a slower cycle again.

An owner who is told to expect movement in week two will conclude in week three that it failed. The case studies state the measurement window on every figure for that reason.

Where to start on Monday

In order, because the order matters more than the effort:

  1. Check the primary category. It is one field and it gates every search you are eligible for.
  2. Read your own profile as a suspension risk before a competitor does. Address, name, posts, products. The risk checker scores it in two minutes.
  3. Photograph the premises and file the licence and a dated utility bill, so verification is not a scramble on the worst day.
  4. Fill every remaining field, including special hours, attributes and services. Check the description against your state’s advertising rules before you publish it. Those rules differ by state and change, so verify them against your own regulator rather than against anything written here.
  5. Write down the exact NAP strings, then fix the core platforms only.
  6. Ask for reviews on a schedule you can keep, and reply to all of them.
  7. Rewrite the location page so that nothing on it would be true of another store.
  8. Set up a grid measurement before you start, so you have a before to compare against.

None of this is difficult. It is unglamorous, most of it is admin, and it is the reason most dispensaries in most markets are beatable.

If you would rather it was handled for you, that is what the local SEO work we do for dispensaries covers, and the free audit is the honest way to see where you stand before committing to anything.

The next module deals with what happens when the site itself has already picked up a penalty.

Check your own site

Run the free check to see how your menu, age gate, and location pages appear to a search engine.

Run the Free Check

Local visibility for a single store is a month of work, not an afternoon. How that work is scoped →