Skip to content

Why Your Dutchie Menu Does Not Show Up In Google

Your menu loads for customers, your pages are indexed, and not one brand you carry reaches search. The cause is a setup decision nobody has revisited, and the diagnosis takes two minutes.

A dispensary menu sealed inside an iframe, the Google crawler blocked outside it, and a search result showing only the brand name
The short answer

Because the menu is embedded in an iframe, so the products belong to your menu provider's domain rather than to your page. Google is crediting the content correctly, just not to you.

Subject: Menu rendering Part of: Can Google read the site at all
In this article

There is a signature to this problem, and once you have seen it you cannot unsee it.

Open Search Console, go to the performance report, and sort your queries by clicks. Look at the top twenty.

If they are all your business name, your name plus a city, and a few near misses on your own brand, then look for what is absent. No product. No strain. No brand you stock.

That means your menu is not in the index. You do not have a ranking problem. You have a visibility problem, and no amount of content will fix it.

That query report is the fastest diagnosis in cannabis SEO. Two minutes, and it tells you whether the next six months of budget should go on writing or on plumbing.

The Search Console query signature of an invisible menu When every top query is your own brand name and none are products or strains, your menu is not in the index. THE TWO MINUTE DIAGNOSIS Search Console, performance report, queries sorted by clicks. MENU NOT INDEXED Brand queries only green leaf dispensary412 green leaf eugene188 greenleaf dispensary reviews96 green leaf hours61 green leaf phone number40 Not one product, strain, or brand you stock. MENU INDEXED Product demand appears blue dream cartridge eugene204 live rosin near me173 green leaf dispensary151 indica gummies oregon118 1g preroll deals springfield87 People who did not already know you exist. Figures illustrative. DispensaryRank
The signature is unmistakable once you know it. Brand queries only means the menu never reached the index.

Why This Happens, And Why It Is Not The Platform’s Fault

Almost every dispensary runs its menu through a third party. That is a sensible decision. Building compliant inventory software with live stock, state traceability reporting, and age verification is not a reasonable use of a retailer’s money.

The problem is not Dutchie, or Jane, or Meadow, or Tymber. It is which integration somebody chose, usually years ago, usually during a rush to open.

The default embed on most platforms drops your menu into the page inside an iframe. An iframe is a window onto a different website, and everything inside it belongs to the domain that served it. Your page contains the window. It does not contain the products.

Here is the part most operators miss. This is not a bug anyone is going to fix. It is how iframes have always worked and how they are supposed to work. The content is being credited correctly. It is simply being credited to somebody else.

What Dutchie Itself Says About This

You do not have to take my word for any of it. Dutchie publishes its own SEO documentation, and it is unusually direct.

The standard embedded menu, it says, will be “partially indexed by Google”. That word is doing a lot of work. Partially indexed is not a synonym for indexed, and the gap between them is every product search in your market.

Dutchie sells more than one way to put a menu on a website, and they do not behave alike in search. Most operators are running the first one without ever having been shown the others.

Four ways a Dutchie menu can sit on your site The default embedded menu is an iframe credited to Dutchie’s domain. A custom domain menu is indexed but separate. A proxied or headless menu puts product pages on your own domain. WHERE THE PRODUCT PAGES LIVE DEFAULT Embedded menu, an iframe Credited to Dutchie The install everyone gets first. Dutchie calls it partially indexed. SUBDOMAIN Menu on its own custom domain Indexed, but separate Fully crawlable. Google treats it as a different site from yours. PROXIED Menu served under your domain Credited to you Same menu, delivered at yoursite.com/menu rather than in a frame. HEADLESS Product data through the API Credited to you You render products into your own pages. The most work, the most control.
Names and tiers change. What does not change is the question: whose domain do the product pages sit on?

Dutchie is the example here because it is the platform I am asked about most. The ladder is the same on Jane, Tymber, Meadow and the rest. There is a default embed that is quick to install, and there is a better option further up that somebody has to ask for.

Product names move around. Check what your contract actually includes before you assume you are stuck.

The Half-Truth That Keeps This Problem Alive

Somebody will tell you Google renders JavaScript now, so a JavaScript menu is fine.

That is true, and it is not the whole story, and the gap between those two things has cost dispensaries a great deal of money.

Google indexes in two passes. The first reads your HTML immediately. The second renders JavaScript and comes back later, from a queue, on a schedule nobody outside Google can see.

For a high authority news site that second pass might arrive in minutes. For a regional dispensary with a modest crawl budget it can be days, and it is not guaranteed to complete.

Google’s two indexing passes The first pass reads HTML immediately. The second pass renders JavaScript from a queue, on a schedule nobody outside Google can see. TWO PASSES, NOT ONE FIRST PASS Reads your HTML Immediate. Whatever is in the source is indexed now, with no conditions. a queue of unknown length minutes for a news site, days for a regional dispensary SECOND PASS Renders JavaScript Deferred, queued, and not guaranteed to complete on a modest crawl budget. Anything that only exists after scripts run is waiting for the pass on the right. DispensaryRank
Anything that only exists after scripts run is waiting for the pass on the right.

So a JavaScript menu is better than an iframe, because at least the content could eventually belong to you. But “could eventually” is a poor foundation for the page carrying your entire catalog. Stock rotates weekly, and the second pass may arrive after the product has sold out.

Three ways a dispensary menu reaches Google An iframe menu is never credited to your domain. A JavaScript menu is credited on a delay. A server rendered menu is credited immediately. HOW YOUR MENU REACHES THE INDEX IFRAME EMBED Never yours Your page window onto another site Crawler receives: page chrome, empty frame Products belong to the provider’s domain, not yours. No delay will ever change that. JAVASCRIPT MENU Yours, on a delay Your page filled in after scripts run Crawler receives: the shell now, products later The second pass is queued and not guaranteed. Stock may have rotated before it arrives. SERVER RENDERED Yours immediately Your page products in the HTML Crawler receives: every product, first pass Via the platform’s hosted SEO option, or by rendering their API into your own pages. DispensaryRank
The same menu, three integrations, three completely different outcomes in search.

An iframe menu is never yours. A JavaScript menu is yours on a delay. A server rendered menu is yours immediately. That is the real hierarchy, and most conversations collapse it into “JavaScript is fine now”, which is exactly how the problem survives.

What It Looks Like On A Real Account

On a fifty store chain, the menu had been embedded the same way on every location page for three years. Search Console showed the pages indexed, and the marketing team reasonably took that as confirmation everything was working.

Not one product name and not one brand they carried appeared in the rendered HTML.

The fix was scoped inside a week. The three years of product and brand searches that went elsewhere were not recoverable.

The detail worth sitting with is that nobody had been careless. The pages were indexed, the site was fast, the design was good, and the agency reports were full of green.

Indexed means Google has your URL. It says nothing about whether Google has your content, and no standard report separates the two. That single ambiguity wastes more cannabis marketing spend than any other technical issue I meet.

The Commercial Problem Underneath The Technical One

There is a second cost here that rarely gets named.

When your products live on your menu provider’s domain, the search value they generate accrues to your menu provider. You pay a monthly fee for the software, then pay again in visibility that lands on somebody else’s asset.

Worth raising when your contract renews, and worth asking before you sign a new one. Put one question to any menu vendor: does your integration place product content in my page’s HTML, on my domain, and can you show me a customer whose product pages rank?

Most sales conversations never reach that question. So most integrations default to the version that is easiest to install rather than the version that is best for you.

How To Check It Yourself

Do not take a tool’s word for it, including mine. Three checks, in the order I run them.

View source, not Inspect Element. This is the ten second version and the one I use most. View source rather than Inspect Element, then search the page for a product you stock and a brand you carry. Inspect shows the live DOM after every script has run, which is why it always looks fine, and why it has misled so many teams. View source shows the HTML as delivered. Products in Inspect but not in view source is the whole problem in one screen.

URL Inspection, Live Test. In Search Console, run URL Inspection on a menu page and choose Live Test. Open the rendered HTML and search it the same way. If the products appear only inside an <iframe> tag pointing at another domain, you have your answer.

Filter the Pages report for your menu URLs. Dutchie menu URLs carry a recognisable string, dtche, and Dutchie’s own documentation suggests filtering Search Console for it. Other platforms have their own marker. What you are looking for is whether any menu URL is indexed at all, and whose domain it sits on when it is.

One trap in that last check. If your menu is hosted by the provider, its sitemap sits on the provider’s domain too, so it cannot be submitted in Search Console the normal way. It has to be referenced from your robots.txt instead. Plenty of hosted menus are invisible for that reason alone, and nobody notices because the setting was never mentioned.

Check it in about twenty seconds

The menu visibility checker detects which platform you run and works out whether the embed is an iframe or JavaScript. Then it counts how many product terms, brand names, and prices survive into the HTML Google reads.

Open the menu visibility checker

How To Fix It

Three options, cheapest first. Be honest about which one your team will actually ship, because a plan nobody executes is worth less than a smaller plan somebody does.

1. Build real content around the embed. Category descriptions, brand explainers, and buying guidance written into the page HTML. This does not make your menu visible and it is not a fix. What it does is stop the page being thin, which removes the immediate penalty risk while you work on the real solution.

2. Ask your provider to move you up the ladder. Most platforms now sell a crawlable hosted menu with its own product URLs. On Dutchie that is a different product from the default embed, not a setting inside it. Ask what your plan includes and what the upgrade costs. A surprising number of operators have never asked, and some are already paying for the better version without it being switched on.

3. Render the menu through their API. Pull product data server side and render it into your own pages. This is the version that wins product and brand searches, because the content is yours, it is always in the HTML, and it sits on your domain.

One thing to expect after option two or three. The moment your menu becomes crawlable, every filter and sort combination becomes a URL, and a crawler will find all of them. That is a good problem to have, and still a real one. What filter URLs do to a crawl budget is worth reading before the rebuild rather than after it.

Options two and three also change your menu URLs. Our guide to dispensary menu migration shows how to map and redirect them, so the upgrade does not cost the rankings you already have.

Why This Hits Chains Harder Than Single Stores

One thin page is a missed opportunity. Forty of them, one per store, built from the same template, is the pattern that precedes a scaled content manual action.

That is how a menu integration decision made in year one quietly becomes a penalty in year three.

And a manual action does not remove the page that triggered it. It removes everything matching the pattern, which means every location you operate, on the same day, with no warning and no staggered recovery.

Do not commission a content program before fixing delivery.

Writing more pages onto a foundation Google can only half read is how agencies burn a quarter of budget with nothing to show for it. If the fix turns out to be a rebuild rather than a setting, that is what our cannabis technical SEO work covers. It is the most common sequencing mistake in this industry, largely because content is easy to sell and menu rendering is not.

One Note On Subdomains

Some operators are told to put the menu on a subdomain, like menu.yourdispensary.com. Dutchie offers this, and its own documentation is honest about the catch: a subdomain menu gets indexed, but Google treats subdomains as separate sites.

So it works, and it is a real improvement on an iframe, but the authority it earns builds up next to yours rather than inside it.

If you go that route: include it in your sitemap, point real internal links at it, and check that the canonical tags on both sides are not contradicting each other. Done carelessly it either outranks your own brand pages or it never ranks at all.

Menu delivery is the technical problem we see most often in dispensary search optimization, so it is the first thing we check on any new site.

If you take one thing away

Fix how the content is delivered before you invest in writing more of it.

Check This On Your Own Site With The Menu Visibility

It runs in your browser, needs no signup, and tells you whether the problem described above applies to you. If it does, the fix is named rather than quoted.

Open the Menu Visibility