A crawler gets 160 characters. A shopper gets 132 products.
Each Pure category page is served by Dutchie on shoppure.com with a good title, a description and a canonical tag — and almost nothing else until the script runs. The products, prices and THC arrive from the same GraphQL endpoint this study captured. Whether Google renders and indexes them is knowable only from inside Search Console, so this page separates what was observed from what would need that access.
Same URL, two readers.
Left: every visible word in the HTML of /stores/pure-warren-rec/products/flower as served, before any script. Right: the first records the shopper sees after the script runs (from the capture). Toggle to compare.
| Name | Brand | Type | Price |
|---|
The page’s <title> also changes after the script: “Flower | Pure - Warren REC” in the HTML, “Flower in Warren, MI | Open Daily” on screen. A crawler that does not execute the script indexes the first.
Five flower pages, measured.
| Store | HTML title | Meta description | HTML size | Visible text | Products in HTML | Flower on screen | JSON-LD |
|---|---|---|---|---|---|---|---|
| Loading… | |||||||
“Flower on screen” is the count of Flower-type records in the capture for that store. “Visible text” counts characters after removing scripts, styles and tags. New Buffalo’s title carries a double space because the store’s name in Dutchie is “ Pure New Buffalo”, with a leading space.
sitemap_index.xml (Rank Math) → page-sitemap.xml: 12 URLs — the homepage, /loyalty/, /faqs/, /locations/, /contact/, /about-us/, /book-a-vendor/, /getting-here/, /plugpass/, two legal pages and /sample-page/. post-sitemap.xml: 22 blog posts.
Store menu URLs listed: 0. The five /mi/<city>/ location pages are not in the page sitemap either; they were reached by links. robots.txt is Cloudflare-managed and allows crawling.
The Dutchie store record feeds every title and description on the menu pages:
- “Pure - Monroe”
- “Pure - Chesterfield/New Baltimore”
- “ Pure New Buffalo” (leading space, no dash)
- “Pure - Oxford REC”
- “Pure - Warren REC”
Five stores, three naming patterns. The fix is one field per store in the Dutchie admin. observed
- The served HTML of each category page carries ~160 characters of text and no product links.
- Products load from
/api-1/graphqlon shoppure.com after the page loads. - No menu URL is in any sitemap. Canonicals point to themselves. Robots meta is index, follow.
- Dutchie’s marketing page says its category and product pages are crawlable. vendor page
- Google generally renders JavaScript, so the products are probably indexable — with a delay and a crawl budget cost that a 150 KB page times five stores times nine categories does not help.
- The WordPress location pages, not the menu pages, are the surface Pure controls fully and the one most likely to rank for “dispensary in Warren”.
- Whether Google has indexed the rendered products: Search Console → URL Inspection on the five flower pages.
- Which pages receive impressions for category queries: Search Console performance report by page.
- Dutchie’s own SEO help articles were behind a bot check on 22 Oct and were not read; their claims are not repeated here.
Give Google the page Pure controls.
- Make the location page the landing page. On each
/mi/<city>/page, add a short section per category with real, maintained facts — the categories stocked, the makers carried, the hours, the deals surface — each linking into the matching menu route. This is text WordPress serves, not text a script fetches. - Fix the five store names in Dutchie so titles and descriptions read the same way everywhere.
- Decide the sitemap after inspection, not before. If URL Inspection shows the menu pages rendered and indexed, add the five store roots and leave categories out (nine near-identical pages per store add little). If not, keep the menu out and let the location pages carry the queries.
- Structured data on the location pages only. A Store/LocalBusiness block with address, hours and phone is uncontroversial. Product or Offer markup for cannabis is not something to add without checking the search engine’s current policy; it is listed here as a question, not a step.
- URL Inspection, five flower pages: “Page is indexed”, rendered HTML contains product names. Recorded before and after.
- Search Console performance, page filter
/mi/: impressions and clicks for “{city} dispensary” queries, 28 days before vs 28 days after. - Re-run the HTML measurement (it ships in the pack) after any Dutchie or WordPress change: title, description and visible text per store should match the standard.