
Redirects, retired products, alt text
Manage product redirects, discontinued products and URL structure
The posting asks for someone who builds cleanly and QAs every component before launch. So I ran that pass on bulletproof.com: all 127 products and 110 collections in the public Shopify feed, every product page, the promo FAQ, the WordPress sitemaps and the new agentic storefront, on September 27. Ten findings, five working tools and a plan for the five months.





bulletproof.com, public data, September 27, 2026
From an ordinary browser session in Michigan, with no logins, I read Shopify's public product and collection feeds, then opened every product page and recorded what search engines and shopping agents see. Anything I couldn't see from outside is labeled as a question for the team.
The job description lists six areas. Instead of claiming I can do them, this page does a small, real piece of each on your store.

Manage product redirects, discontinued products and URL structure

Complete quality assurance on every component prior to launch

Verify promotional accuracy against the promotional calendar

Seasonal and campaign merchandising updates

Manage canonicals and internal linking

Manage Agentic storefront by adding in custom questions to Knowledge Base
Each one comes with what I saw, why it matters to the business, and what I'd ship. Where the cause lives in admin settings I can't see, I say so.

Sept 27, 2026 · one of four live products that 404
The product feed lists Collagen Protein 14.3 oz ($36.99), The Original Coffee Pods 10ct ($12.99), The Mentalist Pods 10ct ($12.99) and Brain Octane C8 MCT Oil 14 oz ($25.99) as published and available. Each product URL returns the store's “page not found.” I confirmed all four in a normal Chrome session.
The Mix-Ins grid also still links a retired chocolate collagen product that now redirects to /collections/collagen.
Anything that reads the feed — Google Shopping, the Shop app, AI shopping agents on the new agentic storefront — can offer a product that dead-ends. To a shopper, a 404 on a live product reads as “gone,” not “out of stock.”
The cause isn't visible from outside, so step one is each product's Markets and template settings. If they should sell, fix and retest. If they're retired, unpublish and 301 each to its closest live size (prefilled in the redirect map) and repoint the Mix-Ins link.

In stock · not in the sitemap · linked three times from the homepage
Enhanced Creamer, Pumpkin Spice ($32.99, 491 reviews) is pictured in the homepage BOGO banner and linked from the homepage three times. Its page says noindex, nofollow and it's left out of the sitemap.
Nine more standalone products do the same, including Brain Octane Packets (4,193 reviews) and Enhanced Creamer Original 14 packets (1,927). In all, 29 product pages are noindex; the other 19 are packs and sizes that point their canonical at a base product, which looks deliberate.
Pumpkin spice has one season. Every week it's hidden, searches for a keto pumpkin spice creamer land somewhere else — and nofollow tells Google not to follow the page's links into the rest of the catalog.
Confirm with the SEO agency, clear the hide-from-search setting on the ten standalones and request indexing. On the 19 packs, keep the canonical and review the noindex — Google advises against sending both signals.


Same day, same promo, two different rules
The homepage says BOGO 50% is “No code needed,” ending 09.29.26. The Coupon Restrictions FAQ says Buy 1 Get 1 takes a code at checkout (BOGO50).
Its third worked example says two $16.99 items come to $31.98 (it's $33.98), discount to $16.00 (half is $16.99) and total $87.96 (it's $88.95). It also promises “the full list of Kits and Bundles is provided below.” No list follows.
This is the page shoppers and Customer Care open when a discount looks wrong. When it disagrees with the banner and with arithmetic, the next step is a ticket or an abandoned cart.
Write the FAQ's examples from the discount as configured, add “FAQ and banners match the live promo” to the promo checklist, and publish the promised kits list.



An illustration of the FAQ's stated rule, not a screenshot
14 products carry an exclude-promo tag. The FAQ's exclusion list names two: the Whole Body Vibration Plate and the 3 oz. Brain Octane. The other twelve are supplements — the four gummies, Greens Powder jar and packets, Magnesium, CoQ10, Zen Mode, Clarity Focus, Turmeric Curcumin and Gut Health Collagen.
They're also tagged sale with no compare-at price, so no strikethrough warns anyone. 62 products are tagged coupon_eligible; 51 carry neither tag.
The FAQ says one excluded item blocks a coupon for the whole cart. If the tag drives that rule, a shopper with Greens Powder in the cart types BOGO50, it fails, and nothing on the page explains why. I can't see the discount settings from outside, so this starts as a question.
One source of truth for eligibility — the discount's product list or a single metafield — with the FAQ's exclusion list generated from it.

One of 22 empty collections
Labor Day Sale and 4th of July Sale have zero products, are indexable and are in the sitemap. Labor Day does say the sale has ended and links to current deals — good — above an empty grid and filters with nothing to filter.
The other 20 look like app and quiz plumbing: 8 quiz “stack path” collections, 7 “Product Group” collections, 2 Rebuy collections, Protein Bars, Protein Crisp Bars and VIPs Only.
Seasonal URLs are worth keeping; they pick up links every year. But an empty grid wastes the traffic they collect, and an empty Rebuy or quiz collection can quietly blank the widget that reads it.
Between seasons, keep the URL and fill the grid from the current offer under the “ended” note. Build the Black Friday page the same way, and check which app reads each empty utility collection before deleting anything.





Brain Octane C8 MCT Oil, 16 oz. — all five images, as stored in Shopify
All 484 images across the 127 products have an empty alt field. The theme covers for it — only 80 of 3,221 images on the live product pages lack alt — by falling back to the product title, so every image of a product gets the same label.
The files are well named, which makes this a fast fix: hand-pouring-16oz-bulletproof-mct-oil-in-tbsp…
The alt field in the product record is what image search, Shopping feeds and agents read — not the theme's fallback. Five identical labels also tell a screen-reader user nothing about the pack shot versus the supplement facts.
Alt text written once, in the product record, on every product build. The writer drafts all 484 and exports a CSV in Shopify's import format.

Greens Powder Packets sets its canonical to /product/greens-powder-jar — singular “product” — which returns 404. The live page is /products/greens-powder-jar. The packets page is also noindex.
Google ignores a canonical that points to an error page and picks its own. It's one character, and exactly what a pre-launch checklist catches.
Fix the value wherever the override lives (likely a metafield), redirect the typo path as a safety net, and add “canonical target returns 200” to the launch check.
The title tag on 4 of the 15 recipe-hub product pages. All 15 match.
WordPress publishes 965 posts and 15 “recipes that use this product” pages. All 15 have the same title tag. Several are for products that aren't in the Shopify feed any more, such as Chocolate Bars, Collagen Bars and FATwater, and three old sweepstakes and giveaway pages, one dated 2020, are still in the page sitemap.
Fifteen pages with one title compete with each other, and a retired-product recipe page sends ready-to-buy readers nowhere.
A title template (“Recipes with {product} | Bulletproof”), a “Shop {product}” link to the live product on each page, 301s from retired products to their closest current one, and the old sweepstakes out of the sitemap.
Tag counts from the public product feed
“Best sellers” appears as best-sellers (16), bestsellers (12), best-seller (1) and bestseller (1). coffee-fave (59) and coffee-favorites (30) overlap. Three High-Protein Iced Coffee products say UK in their shipping tag where every other product uses GB, the country code. Gift-with-purchase items use three tags.
Smart collections and Rebuy, Nosto and shipping rules match tags exactly. A collection built on one spelling misses the rest; a rule that checks GB misses the three that say UK.
A tag dictionary in the SOP, one bulk edit to merge, and a pre-launch check that rejects tags that aren't in the dictionary.
Simplified from the live page · the same gap on all 120 live products
Product JSON-LD is on all 120 live product pages and 118 carry review ratings. None of the offers includes shippingDetails or hasMerchantReturnPolicy. Twenty product pages share a meta description with a sibling, in 8 groups, and 13 pages use the same H1, “Ground Coffee.”
Shipping cost and the return window are what Google can show next to the price. If Merchant Center already carries both, this is low priority — worth confirming with the SEO agency.
Both properties added to the Offer in the theme's JSON-LD from the published shipping and return policies, then a Rich Results test on one product per template.
Each tool runs on the September 27 snapshot of bulletproof.com's public data and exports something a Shopify admin can import or a team can work from. Nothing here touches the live store.
Every product in the feed, run through the checks I'd run before a launch: page loads, index and sitemap status, canonical target, alt text, meta description, tag spelling and promo eligibility. Tap a row for the detail and the fix.
| Product | Price | Page | Index | Canonical | Alt text | Tags | Defects |
|---|
The dead ends from findings 01 and 07 with a proposed target for each, editable, and exported in the two columns Shopify's URL redirect import takes. Below, the 29 noindex product pages sorted into a decision list for the SEO agency.
URL redirects
| Include | Redirect from | Redirect to |
|---|
Index decisions
First, the FAQ's three published BOGO examples, recalculated. Then a cart built from real products: BOGO 50% on the lowest-priced half of eligible units, with the exclusion and subscription rules as the FAQ states them. Amounts are in cents, rounded the way the FAQ's own first example rounds.
The FAQ's worked examples
Build a cart
Rules
Result · code BOGO50
Drafts for all 484 product images. The coffee and Brain Octane card series (pack front, back label, “Why Bulletproof,” roast scale, flavor notes) use templates I wrote after looking at the cards; the rest are written from the filename and flagged for a human pass. Edit any draft, then export Shopify's product CSV columns: Handle, Image Src, Image Alt Text.
Import note: test the CSV on two or three products first. Shopify matches rows on Handle and Image Src, and a full-catalog import is worth running only once the drafts have had a human read.
Shopify now serves an agentic storefront for bulletproof.com — a UCP profile at /.well-known/ucp (version 2026-08-25) and an agents.md. The posting asks for custom Knowledge Base questions. The first ones I'd add are answers the catalog already holds but shoppers can't see: 48 live products carry a shipping-banned tag by country.
Drafts only. Each rule should be confirmed with operations before it goes into the Knowledge Base, and the three products tagged UK instead of GB need a look first.
The posting asks for written SOPs for the recurring builds. This is the first draft I'd bring to week one, written against what this review found. It downloads as Markdown for a Wrike task or a shared doc.
The contract lands on Black Friday, the holidays and the New Year wellness season. The fixes from this review go first, so the big promos run on a clean catalog, and it ends with SOPs someone else can run.
Your qualifications list, one row at a time. Where I haven't done something, the row says so.
I'm Mousa Batarseh, a web and e-commerce specialist in Metro Detroit. For seven years I've run storefronts end to end for retail and wholesale brands: Shopify and WordPress stores for two textile brands in parallel, catalog migrations of 14,000+ SKUs with redirects intact, and campaign pages for a multi-location Michigan retailer, built with its marketing team and measured in GA4.
This review is the contract as I read it: build cleanly, QA everything, keep promotions honest, and write it down so it stays fixed.
Mousa Batarseh · (248) 810-1816 · Remote, US