Eleven of seventeen store links on the homepage go nowhere.
The global header offers Flower, Pre-rolls, Vapes, Edibles, Concentrates, Topicals, Deals and Brands before a shopper has chosen a store. Each of those links is built with an empty store slug — /stores//products/flower — and returns a 404 page. The same header sits on the Locations and Loyalty pages.
Every /stores/ link on four pages, and what it returns.
Links were read from the saved HTML of each page and requested again with a plain browser user agent on 22 Oct 2026 (statuses re-checked without following redirects). “301/308” means the link redirects to a store page, which is fine. “404” is the site’s own “Page Not Found” template.
| Link in header / footer | Status |
|---|---|
| Loading… | |
| Link in header / footer | Status |
|---|---|
| Loading… | |
Path tracer
Pick where the shopper lands and what they click. The result is the real link the page carries and the real status it returned on 22 Oct 2026 — not a simulation.
Once a store is chosen, two of six category buttons land on “All”.
Dutchie’s category routes on shoppure.com are /products/vaporizers and /products/concentrates. The header’s Vapes button links to /products/vapes; the footer carries both concentrates and a misspelt concetrates. Dutchie answers an unknown category with the full product list: the heading reads “All”, the page title becomes “Cannabis Dispensary in Warren, MI | Open Daily”, and the list includes every product in the store, drinks and accessories as well as concentrates.
These return HTTP 200, so no monitoring catches them. Only a person clicking “Vapes” and seeing drinks does.
| Button | Links to | Shopper sees |
|---|---|---|
| Flower | /products/flower | Flower ✓ |
| Pre-rolls | /products/pre-rolls | Pre-Rolls ✓ |
| Vapes | /products/vapes | “All” — every product |
| Edibles | /products/edibles | Edibles ✓ |
| Concentrates (footer, 2nd) | /products/concetrates | “All” — every product |
| Topicals | /products/topicals | Topicals ✓ |
Each store has two addresses.
WordPress serves a location page at /mi/warren/ (indexable, canonical to itself, about 3,300 characters of text, not in the sitemap). Dutchie serves the store menu at /stores/pure-warren-rec/ (canonical to itself, not in the sitemap). The Locations page links to the second. Neither address is in any of the site’s sitemaps, which list 12 pages and 22 blog posts and no store pages at all (checked 22 Oct and again 23 Oct 2026).
Title: Warren - Pure Cannabis
Canonical: itself · robots: index, follow
In any sitemap: no
Links to: the Dutchie menu, category routes, specials
Title: Cannabis Dispensary in Warren, MI | Open Daily (after script)
Canonical: itself · robots: index, follow
In any sitemap: no
Store name in data: “Pure - Warren REC”; New Buffalo’s is “ Pure New Buffalo” with a leading space
The smallest fix that holds.
- Make the header store-aware. If a store cookie exists, build category links with its slug. If not, send category clicks to
/locations/with the chosen category remembered, so the next click lands on the right shelf. This is a Breakdance header template change plus one small script; the Dutchie embed is untouched. - Correct two slugs.
vapes → vaporizers,concetrates → concentrates, and remove the duplicate footer link. Five minutes once the template is open. - Pick one address per store. Keep
/mi/<city>/as the page Google indexes, link it to the Dutchie menu, and add the five/stores/…roots to the sitemap only if Pure wants them indexed (see page 03 before deciding).
Alternatives considered. Default every pre-choice click to Monroe (the behaviour /stores// already has): fast, but sends Warren shoppers to a store more than 40 miles away. Geolocate: Dutchie already geolocates inside the menu, but the WordPress header does not see it. Store-aware links are the only option that respects a shopper’s own choice.
- Breakdance header and footer templates (WordPress admin).
- How the store cookie is set today — the Dutchie embed or WordPress? Visible only in the admin.
- Search Console: how many of these 404s Google has already recorded.
- Whether Pure prefers the location page or the menu page as the search landing page.
How to know it worked.
Re-run the link check (the same script that built FIG. 02 ships in the pack as tools/entry_links.py). The pass condition is simple: zero 404s among header and footer links on the homepage, Locations and Loyalty pages, and every category button’s page heading equal to its label.
Checkboxes are local to your browser; nothing is sent anywhere.