Skip to content
Case Studies

Cannabis SEO Results, Measured And Dated

Real accounts, real numbers, and the

  • 6 engagements documented in full
  • 4 of them cannabis retail
  • 1 manual action recovered
  • 0 links bought on any of them
Pick One To Read

Every Engagement, Start To Finish

Filter by the kind of problem, then open the one closest to yours. Every card shows its headline figure and the window it was measured over.

21 screenshots from the accounts themselves. Search Console and Business Profile screens, shown with each engagement below. Names and contact details are blurred. The numbers are not.

  • 6 Search Console
  • 15 Business Profile

01 Multi-state dispensary chain 55 locations, multiple states Twelve months

Multi-State Dispensary Chain

5.11 million Search Console clicks in twelve months across a fifty five store chain

The largest account on this page and the one worth reading first. A multi-state chain that arrived with a live manual action, one template behind every store page, and a menu Google could not read. The recovery came first. What followed is the work that runs every day: local search for fifty five stores, each with its own Business Profile, its own page and its own competitors a few minutes away. This is penalty recovery and multi location local SEO on the same account.

Last Twelve Months, To September 2026

Search Console clicks
5.11M
every search, branded and non branded
Impressions
28.1M
same twelve months
Click through rate
18.1%
average position 10.8
Dispensary near me clicks
64,439
one non branded query, 778,299 impressions

The Recovery, Three Months After The Lift

Organic traffic
20,234 387,356
19.1 times, three months after the action lifted
Impressions
174,524 1,287,645
7.4 times, same recovery window
Indexed pages
1,845 37,643
20.4 times, after the index was rebuilt
Manual action
Lifted
accepted on the first request submitted
From The Accounts

The Screenshots Behind These Numbers

Names, domains, addresses and account details are blurred. Every figure is left exactly as Google showed it.

Google Search Console performance report for the last twelve months showing 5.11 million clicks, 28.1 million impressions, an average click through rate of 18.1 percent and an average position of 10.8.
Search Console, Last Twelve Months 5.11M clicks and 28.1M impressions, 18.1% click through rate, average position 10.8
Google Search Console query report filtered to non branded queries for the last twelve months, led by dispensary near me with 64,439 clicks and dispensaries near me with 27,642 clicks. The brand query is blurred.
Top Non Branded Queries, Last Twelve Months Dispensary near me alone: 64,439 clicks from 778,299 impressions
Google Business Profile performance screen for store A, in Arizona, showing 137 thousand interactions for April to September 2026.
Store A Interactions 137K interactions, April to September 2026
Google Business Profile performance screen for store B, in Michigan, showing 144 thousand interactions for April to July 2026, down 28.5 percent on the same months of 2025.
Store B Interactions 144K interactions, April to July 2026, down 28.5% on 2025
Google Business Profile performance screen for store C, in Michigan, showing 85,428 interactions for April to August 2026, up 6.3 percent on the same months of 2025.
Store C Interactions 85,428 interactions, April to August 2026, up 6.3% on 2025
Google Business Profile performance screen for store D showing 6,250 interactions for April to September 2026, close to zero until June and rising to 2,900 in August 2026.
Store D Interactions 6,250 interactions, nearly all from July 2026 onward, peaking at 2,900 in August
Non Branded Search

Where The Clicks Come From

115,433 clicks 1,789,968 impressions from these queries alone

Top non branded queries in Search Console over the last twelve months, as in the screenshot above. The brand query is left out.

Query Clicks Impressions CTR
dispensary near me 64,439 778,299 8.3%
dispensaries near me 27,642 590,269 4.7%
dispensary 7,799 121,187 6.4%
[town] dispensary 5,627 110,104 5.1%
michigan dispensary 3,624 75,018 4.8%
[town] michigan dispensary 2,174 38,448 5.7%
dispensary [town] 2,105 43,056 4.9%
dispensaries in [town] michigan 2,023 33,587 6.0%

What Was Wrong

  • A live manual action suppressing the entire domain
  • Spam backlinks and manipulated anchor text from earlier campaigns
  • Location pages near identical across more than fifty stores
  • Dynamic routing generating duplicate URLs at scale
  • Thousands of low value pages diluting the site, plus 3XX and 4XX errors throughout
  • Fifty five Business Profiles to run, each against its own local competitors

Local Search Results

137KStore A interactions, April to September 2026
85,428Store C interactions, up 6.3% on 2025
144KStore B interactions, down 28.5% on 2025
6,250Store D interactions, nearly all since July 2026

What Was Done

  1. Inventoried the whole affected pattern, not the examplesGoogle names a sample. The action applies to everything matching it, so every URL and every referring domain was catalogued from the sitemap, Search Console, and a full crawl before a single fix was made.
  2. Backlink cleanup with a documented outreach logSpam links and manipulated anchors identified, removal requested at source with every attempt dated and recorded, then disavowed at domain level only where removal failed.
  3. Location pages rebuilt from per store factsPrototypes built first, then rolled out. Real parking, landmarks, staff, and local detail, with the standard that no paragraph should still make sense if the city name were swapped. Store pages are the heart of local work for a dispensary.
  4. Content pruned, consolidated, and removedEvery page given one of three outcomes: rewritten, merged with redirects, or removed with correct status codes. Dummy pages cleared through Search Console removals.
  5. Technical remediation across the estateDuplicate URLs from dynamic routing resolved, canonicals corrected, subdomain meta data fixed, structured data errors cleared, and the redirect chains untangled. This is the technical half of the job and it came before any content.
  6. Trust signals and an education programPrivacy policy, About page schema, and editorial standards addressed, then a cannabis education blog built to give the domain something to be authoritative about.
  7. One evidenced reconsideration requestSubmitted only after every fix was live and documented. Numbers, decisions, and dates rather than argument, because a denial makes the next review slower. The free request builder walks through the same structure.
  8. Local SEO across all fifty five storesEvery store treated as its own local search problem: its Business Profile, its page and the searches made around it, checked store by store rather than reported as one average. The four stores in the screenshots show why that matters.
  9. Progress read from non branded searchA chain this size is found by name whatever its SEO does, so the measure is the searches that do not name it: dispensary near me, the town searches, and delivery.
Read This Carefully

Two things worth reading carefully. The 5.11 million clicks include people searching for the brand by name, which a chain this size gets whatever its SEO does, so the non branded report is the fairer measure, and it is led by dispensary near me. And the stores do not all move together: over the same months store C rose 6.3 percent while store B fell 28.5 percent. Across fifty five stores that spread is normal, and a report showing only the stores that went up is not one to trust. The recovery before all of this followed the same sequence used on every engagement: list the whole pattern, fix all of it, then submit once.

Back To All Engagements
02 Cannabis dispensary Michigan Six months

Michigan Dispensary

From almost no organic search presence to 172,000 clicks in six months

A Michigan dispensary with a strong reputation in store and almost nothing in organic search. It was competing in one of the most crowded cannabis markets in the country, on a site that gave Google very little to work with. The fix was ordinary dispensary SEO done in the right order.

Search Console clicks
669 172,000
six months against the previous six
Impressions
4,520 361,000
six months against the previous six
Keywords ranking
15,000
per Search Console, 4,000 of them non branded
Business Profile interactions
228,000
September 2024 to January 2025
From The Accounts

The Screenshots Behind These Numbers

Names, domains, addresses and account details are blurred. Every figure is left exactly as Google showed it.

Google Search Console performance report comparing the last six months with the previous six: 172K clicks against 669, and 361K impressions against 4.52K.
Search Console Performance 172K clicks in six months, against 669 in the six before
Google Business Profile management view for the dispensary, showing a 5.0 rating from 7,685 Google reviews, with the store name, photos, address and phone blurred.
The Managed Store Listing Rated 5.0 from 7,685 Google reviews
Google Business Profile performance screen showing 228K Business Profile interactions for September 2024 to January 2025.
Business Profile Interactions 228K interactions, September 2024 to January 2025

What Was Wrong

  • Almost no organic visibility despite a full product range
  • Site architecture that made crawling and internal linking inefficient
  • No meaningful local presence in the surrounding towns
  • Thin, repetitive content across the pages that existed

Local Search Results

+75%local search traffic
+70%call volume from local search
+65%business interactions
+60%positive reviews

What Was Done

  1. Keyword research built around real buying intentMapped the terms customers actually search, separating product intent from location intent so pages were not competing with each other before a word was written.
  2. Technical rebuild of speed and mobile renderingFixed the delivery problems first, because content added to a site Google struggles to read is budget spent twice.
  3. Google Business Profile and location pagesBuilt the profile properly, then created location specific pages carrying real detail rather than one template with the town name changed. Ordinary dispensary SEO, done in order.
  4. Local citations and directory consistencyBusiness citations across the platforms that matter in this industry, with identical details everywhere, which is what makes a local entity credible.
  5. A sustained content programEducational and category content to build topical authority, rather than a burst of pages published once and abandoned.
Read This Carefully

The click figure looks hard to believe until you see the starting point. This site was not losing rankings. It had never really had any. So the first six months were about showing up in search at all, not about climbing. That is a very different job from recovering a site that has slipped, and it is worth being clear which one you are reading.

Back To All Engagements
03 Multi-location dispensary Three stores, Michigan Six months

Three Store Michigan Chain

73,474 Business Profile interactions in one month at a single store

A chain competing against dispensaries a few minutes down the road in every one of its markets. The websites looked fine and were nearly invisible in local search. That pattern costs a store more than any other, because a customer searching locally is already ready to buy. Spreading that fix across several stores is the multi location problem in one sentence.

Business Profile interactions
73,474
One store, September 2024
Calls from the profile
1,884
single month, September 2024
Local citations
+50%
over the engagement
Referring links
+30%
earned, none purchased
From The Accounts

The Screenshots Behind These Numbers

Names, domains, addresses and account details are blurred. Every figure is left exactly as Google showed it.

Google Business Profile management view for one of the stores, showing a 4.8 rating from 5,452 Google reviews, with the store name, logo, photos, address and phone blurred.
One Store Listing Rated 4.8 from 5,452 Google reviews
Google Business Profile performance screen showing 73,474 Business Profile interactions for September 2024.
Business Profile Interactions 73,474 interactions in September 2024
Google Business Profile calls screen showing 1,884 calls made from the Business Profile in September 2024.
Calls From The Profile 1,884 calls in September 2024

What Was Wrong

  • Limited visibility in the local results that drive walk in traffic
  • Business Profiles left under optimized across all locations
  • Very few local citations, and a thin backlink profile
  • Site architecture that needed work for mobile and for crawling

Local Search Results

+55%website clicks from the profile
+45%calls in six months
+40%positive reviews
4.8average rating, 5,452 reviews

What Was Done

  1. Location level keyword researchTerms assigned per store, such as the searches around one town, so branches stopped competing for the same results and each page had something specific to win. That mapping is the first thing a chain needs.
  2. Business Profile optimization across every storeDetailed categories, real photography, consistent details, and regular posts and questions, treated as an ongoing channel rather than a one off setup.
  3. Dedicated pages for each dispensaryBuilt individually rather than generated, with the meta data, headings, speed and mobile experience handled per page.
  4. Local education contentGuides written for the communities each store serves, answering the questions that come up in that specific market.
  5. Citations and industry relevant linksBuilt through directories and cannabis specific platforms rather than bought, which matters in an industry where link penalties are common.
Read This Carefully

The number worth looking at here is not the interactions, it is the calls. A dispensary customer who phones is usually checking stock before driving over. That makes a call the closest thing to a booked sale that local search produces.

Back To All Engagements
04 Multi-location dispensary Michigan, multiple stores Six months

Michigan Dispensary Chain

Clicks from 36,500 to 151,000, with click through rate up from 4 to 10.4 percent

A well known Michigan chain that was ranking and not being clicked. Impressions were fine. The results themselves were not worth clicking. That is a different problem from being invisible and it needs a different fix, which is why the diagnosis comes before the plan.

Search Console clicks
36,500 151,000
six months against the previous six
Impressions
911,000 1,450,000
six months against the previous six
Click through rate
4.0% 10.4%
the metric that carried this engagement
Organic traffic, third party estimate
43,300
monthly, per Semrush
From The Accounts

The Screenshots Behind These Numbers

Names, domains, addresses and account details are blurred. Every figure is left exactly as Google showed it.

Google Search Console performance report comparing the last six months with the previous six: 151K clicks against 36.5K, 1.45M impressions against 911K, and a click through rate of 10.4 percent against 4 percent.
Search Console Performance 151K clicks from 36.5K, click through rate 10.4% from 4%
Google Business Profile performance screen for store A showing 29,923 interactions for May to September 2024, up 67.9 percent on the same months of 2023.
Store A Interactions 29,923, up 67.9% on May to September 2023
Google Business Profile performance screen for store B showing 38,458 interactions for May to September 2024, down 14.9 percent on the same months of 2023.
Store B Interactions 38,458, down 14.9% on May to September 2023

What Was Wrong

  • Ranking without converting the impression into a visit
  • Content that had never been written with search intent in mind
  • Poor mobile performance on a site where most visits are mobile
  • Weak rankings on the location terms that drive footfall

Local Search Results

+67%interactions at one store
+56%positive reviews across locations
+40%website clicks from profiles
+38%reported footfall to stores

What Was Done

  1. Business Profile work per storeEach listing optimized individually, because a chain is not one entity to Google, it is a set of them that each need to earn their own prominence.
  2. Local keyword integrationLocation terms worked into the site properly rather than appended, so the pages read naturally and still matched the searches.
  3. Review generation and responseA steady flow of recent reviews with replies, which feeds both local prominence and the decision a customer makes when comparing two nearby stores.
  4. Mobile and speed remediationFixed the experience on the device most of these visits actually happen on.
  5. Content built around real questionsProduct guides and blog content aimed at what customers ask before they buy rather than what the business wanted to say.
Read This Carefully

One thing worth being straight about: not every store moved the same way. One store rose 67 percent while another fell about 15 percent over the same window. That is normal across a chain, and it usually comes from something local rather than from the work. A report that shows you only the store that went up is a report you should not trust.

Back To All Engagements
05 Hydroponics eCommerce Michigan, online and retail Twelve months

Hydroponics Supplier

Nearly 4,900 organic keywords for an indoor growing supplier in a saturated market

A catalog business selling growing equipment, up against both local shops and national retailers. Its problems are the ones every cannabis adjacent online store has: technical debt, thin category pages, and no authority to fall back on.

Search Console clicks
8,590
trailing twelve months
Impressions
766,000
trailing twelve months
Organic keywords
4,900
per Ahrefs
Additional monthly visitors
2,000+
organic, per month
From The Accounts

The Screenshots Behind These Numbers

Names, domains, addresses and account details are blurred. Every figure is left exactly as Google showed it.

Google Search Console performance report for the last twelve months showing 8.59K clicks, 766K impressions and an average position of 33.4.
Search Console, Last Twelve Months 8.59K clicks and 766K impressions

What Was Wrong

  • Site speed, mobile performance, and a structure that hindered crawling
  • A deep product range with almost no organic visibility behind it
  • National retailers dominating the terms that mattered
  • Category and product content too thin to compete

Local Search Results

276referring domains
1.2Ktotal backlinks
94%of traffic from the United States
33.4average position, still improving

What Was Done

  1. Keyword research across local and national intentSeparated the terms winnable locally from the ones requiring national authority, and sequenced the work accordingly.
  2. Technical remediationSpeed, mobile responsiveness, and a rebuilt architecture so navigation made sense to a crawler as well as a customer. The free site check reports most of these faults in a minute.
  3. Category and product page optimizationReal content on the pages that sell, with internal linking that pushed authority to where it converts.
  4. Authority contentGuides that establish the site as worth reading in a category where most competitors publish product specifications and nothing else.
  5. Earned link acquisitionTargeted outreach to gardening and agriculture sources rather than bought placements.
Read This Carefully

An average position of 33 tells you this was still early. Impressions grew much faster than clicks, which is exactly what happens when a site starts showing up for terms it is not yet strong enough to win. That gap is the opportunity, not the failure, and it is the next thing to work on.

Back To All Engagements
06 Multi-location, 100 branches United States, nationwide network Six months

Insurance Agency Network

Local SEO across a hundred branch network, with fifteen profiles taken first

Not cannabis, and included on purpose. It is the clearest proof of the thing multi state dispensary chains actually need: running local search across a very large number of stores without it collapsing into a template. That is the same problem a chain of any size runs into.

Search Console clicks
24,500 32,800
six months against the previous six
Impressions
2,360,000 3,340,000
six months against the previous six
Average position
51.5 47.6
across a very large keyword set
Non branded keywords
10,000
ranking organically
From The Accounts

The Screenshots Behind These Numbers

Names, domains, addresses and account details are blurred. Every figure is left exactly as Google showed it.

Google Search Console performance report comparing the last six months with the previous six: 32.8K clicks against 24.5K, 3.34M impressions against 2.36M, and average position 47.6 against 51.5.
Search Console Performance 32.8K clicks from 24.5K, 3.34M impressions from 2.36M
Google Business Profile performance screen for branch A showing 1,975 interactions for May to September 2024, up 34.4 percent.
Branch A Interactions 1,975, up 34.4%, May to September 2024
Google Business Profile performance screen for branch B showing 1,539 interactions for May to September 2024, up 14.3 percent.
Branch B Interactions 1,539, up 14.3%, May to September 2024
Google Business Profile performance screen for branch C showing 549 interactions in September 2024, up 16.8 percent on September 2023.
Branch C Interactions 549, up 16.8% on September 2023
Google Business Profile performance screen for branch D showing 404 interactions in September 2024, up 28.3 percent on September 2023.
Branch D Interactions 404, up 28.3% on September 2023

What Was Wrong

  • Around 100 Business Profiles, most of them unmanaged
  • Location pages needed for a hundred branches without duplicating them
  • Low organic visibility in a competitive local category
  • No consistent content or link strategy across the network

Local Search Results

1,975profile interactions, branch A, up 34%
1,539profile interactions, branch B, up 14%
+30%calls from local search
+30%positive reviews

What Was Done

  1. Full audit before anything was touchedTechnical health, content gaps, and link opportunities mapped first, so the sequence of work was decided by evidence rather than by habit.
  2. Prioritized fifteen profiles rather than all hundredSpreading effort across a hundred locations at once produces nothing measurable anywhere. Concentrating it proves the model, then you scale what worked. That is the approach behind every account on this site.
  3. On page and internal linking overhaulMetadata, structure, and internal links rebuilt so the network passed authority to its own location pages properly.
  4. Citations and listing consistencyConsistent business details across directories, which at this scale is a genuine data management problem rather than an afternoon of edits.
  5. Content aimed at local service queriesWritten for the searches people actually make in each market, plus educational material for the questions that precede them.
Read This Carefully

The lesson a dispensary chain can take from this is about order. Fifteen stores done properly beats a hundred done thinly. The first gives you a result you can point at and repeat. The second gives you a report nobody believes.

Back To All Engagements
Questions

Questions About These Case Studies

Yes. Every case describes work actually carried out, and where a business is named, the figures come from its own Search Console and Business Profile data. Naming a client says who the work was for; it is not a claim that they endorse this site, and no ongoing relationship should be inferred from a write up.
Search Console and Business Profile, not estimates. Every figure states the window it was measured over, because a number without a window is not evidence, and nothing is rounded up to look better.
Nobody can promise that, and these pages do not. Even inside one chain the stores did not move the same way: one location rose 67 percent while another fell over the same window, and the write up says so. What does repeat is the order of the work: clear whatever blocks the crawler, remove whatever caused the penalty, then earn the rankings back.
The period the change was measured over, shown beside every figure. A traffic increase over six months and the same increase over three years are very different claims, so the window is stated rather than left for you to assume.
Filter by the kind of problem, then open the one whose starting state sounds like yours. If none of them does, send the domain through the free audit and the reply will say which pattern your site actually matches, which is more useful than guessing from someone else's story.

Want To Know What Your Own Numbers Would Look Like?

Send the domain and the states or countries you operate in. The audit will tell you where the visibility is going before you commit to anything.

Get Your Free Audit Or see how an engagement like these is run