Shelfable
Back to Research & Playbooks
Practitioner Playbook

We Had 33 Products in Shopify. Only 17 Were Showing Up.

Shelfable·August 31, 2026·7 min read
Read on Substack
We Had 33 Products in Shopify. Only 17 Were Showing Up.

Good ideas travel faster when you share them; forward this to someone who’d find it useful.


We had 33 active products in Shopify. Only 17 were visible on the storefront — navigable by a customer through collections or search.

Flaunt Your Ink is a D2C tattoo aftercare and men’s grooming brand running on Shopify. About six weeks into an engagement assessing the brand’s AI visibility, FYI’s founder raised a simple question: why can’t I see half my products?

We were investigating because AI-powered discovery — Google AI Mode, ChatGPT product results, Perplexity — doesn’t consume a merchant’s canonical product record. It consumes whatever representation each system receives. If the representation is incomplete, the product doesn’t exist on that surface. We needed to understand what was actually leaving the store.

The products were active in Admin. They had titles, descriptions, prices. From inside Shopify’s Admin panel, the catalog looked present. The problems only appeared when we followed the products outside the catalog — to the live storefront, the Google Merchant Center feed, and the external systems trying to represent these products to buyers.

We assumed it would be one problem with one fix. We opened the feed. Then we kept finding layers.

We eventually realized “not showing up” described several different failures. Some products weren’t published. Some were published but missing fields required downstream. Some were present in the feed but with incorrect data. Some were present in one feed but absent from another. These weren’t variations of the same bug. They were four distinct failure types, each hiding behind the same symptom.


Take one product: the Oil & Acne Control Facewash, from FYI’s flaunt MEN grooming line. Active in Shopify Admin. Two variants — 50ml and 100ml. Priced, described, tagged. By every measure inside the Admin dashboard, a live product.

Then you look from the outside. No featured image in Shopify — the featuredMedia field was null. No barcode or GTIN assigned. No Google Shopping category metafields populated. The product was structurally incomplete in ways that only become visible when you check what external systems can actually receive.

Here’s what each of those missing fields actually costs. No image means the product fails the image requirement for Google Shopping and every other commerce surface we tested — a hard prerequisite, not a quality signal. No GTIN meant the product lacked one of the identifiers Google uses for product matching. That isn’t automatically fatal — Google supports products without GTINs when the appropriate identifier fields are handled correctly. But the feed wasn’t clearly communicating that situation. The product landed in an ambiguous identifier state rather than a clean exemption. No category metafields meant one important classification signal was missing from the representation being sent downstream — making the product harder to classify consistently across the surfaces we were testing.

Any one of those gaps would degrade the product’s eligibility. Together, they made the Facewash ineligible on the commerce surfaces we tested — despite being active in every sense that mattered inside Shopify.

That was one product. The pattern repeated across most of the flaunt MEN line.


The first real surprise wasn’t what was missing from individual products. It was how many systems were involved.

We assumed FYI had one feed going to Google Merchant Center — the native Shopify sync through the Google & YouTube channel app.

There were two.

The native sync covered the aftercare product line — cleanser, healing gel, moisturiser, sunscreen. This pipeline was clean. Titles, descriptions, and images all traced directly back to Shopify’s product data.

A separate supplemental feed, built and maintained by a marketing agency managing FYI’s Shopping campaigns, covered the bundle and kit product line. This pipeline didn’t trace back to Shopify. It was a separate data source, edited separately, with no connection to the source-of-truth catalog.

Same source. Different representations.

Neither pipeline is inherently wrong. Plenty of brands run exactly this architecture — an agency-managed feed layered for paid campaigns, alongside an organic sync for everything else. The problem isn’t the architecture. It’s what nobody had checked in the supplemental layer.


We pulled the actual description text for every SKU in the supplemental feed and read it line by line. Ten of ten bundle-line SKUs had the same problem: keyword-stuffed text, the same phrases repeated dozens of times in a single field — seasonal gift terms, unrelated to the product, clearly the output of a bulk content generation tool rather than anyone writing for a specific SKU.

Worth being precise about where this came from. Shopify’s actual product descriptions — the ones a customer sees on the site — were clean and well-written throughout. We compared them directly against the supplemental feed entries for the same products. The spam existed only in the feed — a completely separate data path. Nobody writing FYI’s website copy did this. The keyword stuffing was introduced during the feed generation process, in a layer nobody was reading.

Google Merchant Center was receiving descriptions that bore no resemblance to the products on the site. Any downstream system relying on that representation was no longer working from FYI’s actual product copy.

The website wasn’t wrong. The feed was wrong.


Back to the Facewash. Active in Admin. No image. No GTIN. Not in the supplemental feed. Technically in the native Shopify sync — but without an image, the product failed the image requirements for the Shopping surfaces we were testing.

This was the pattern across the flaunt MEN line. Products that were structurally active but structurally incomplete. Each missing a different combination of fields — image here, identifier there, category metafields empty across the board. No single field explained everything. But the cumulative effect was the same: these products could not appear on the external surfaces we checked, despite being “live” in Shopify.


Once we started tracing individual products end to end, a handful of smaller disconnections turned up.

A product sat in Draft status in Shopify — never fully published. That single root cause explained three separate symptoms we’d logged as unrelated: a GMC disapproval, a dead landing page, and the product’s absence from the site’s main collection page. One fix resolved all three, because we traced the chain instead of patching each symptom individually.

Product A was correctly described in Shopify. Product B was correctly described in Shopify. Somewhere between Shopify and Google, the two descriptions switched places. The swap only existed in the export layer — invisible to anyone checking the website, visible only to someone checking what Google was actually being told. A customer who clicks through from a Shopping result and lands on a product whose description doesn’t match what they just read has a friction moment that nobody on the merchant’s side can see, because the discrepancy exists only between two systems — neither of which shows the comparison.

Then we found a problem in our own audit. Our initial metafield query returned only the first 50 entries per product. On well-enriched SKUs with 60 or more metafields, that query silently truncated. Five core products appeared to have gaps. They didn’t. Every field was populated. The catalog wasn’t missing data. Our diagnostic query was.

The same shape of problem — two systems that were supposed to carry identical information, quietly drifting apart — shows up at enterprise scale too, just with more zeros. We’ve seen it inside a catalog roughly a thousand times this size, where the disconnections are proportionally harder to find.


A commerce catalog is not a database. It is a distribution system.

AI doesn’t interact with your Shopify Admin. It interacts with representations of your catalog — the feed, the storefront, the structured data on the page, the merchant platform listing. Every system that consumes your product data is working with a copy, and every copy can omit fields, transform fields, or introduce errors the source system doesn’t show. The divergence is only visible if you check the destination, not just the origin.


We started with a simple question: why can’t I see my products?

The answer was four types of failure, each hiding behind the same symptom:

Publication failure — a product that never left Shopify. It existed in the database but never made it to the storefront or any downstream system. Representation failure — a product that left, but incomplete. Missing fields made it ineligible on surfaces that required them. Transformation failure — product data that changed incorrectly somewhere in the pipeline. The source was clean; the output wasn’t. Reconciliation failure — two systems carrying different versions of the same product, each internally consistent, none of them matching.

The lesson wasn’t that Shopify had 16 missing products. It was that “active in Shopify” was an incomplete definition of being live. A product can exist in the catalog and disappear in distribution.

Since this audit, we’ve begun closing the gaps — writing category codes, SEO fields, and product attributes. The Oil & Acne Control Facewash still needs an image before it clears every surface. But the metafields that were empty across the board when we started are no longer empty.

That gap — between what the store knows and what actually leaves it — is the subject of this series. Part 1 covers the structural layer: why your Shopify catalog contains more product data than any external system can see. Part 3 covers the organizational layer: who’s responsible for each piece of the pipeline, and what happens when the answer is “nobody.”


This is Part 2 of The New Shelf’s Shopify Playbook — a three-part practitioner assessment of what Shopify gives you for AI visibility and where it falls short.

Apply this research to your store

How does AI search see your store right now?

We run real category queries across ChatGPT, Perplexity, and Google AI Mode, inspect your catalog representations, and send you a plain-language report. Completely organic; we never ask for logins or ad spend.

Request your report

Two fields. A person reviews it and emails you back within 48 hours.

Please use your business email — free inboxes can’t be verified.
By requesting, you agree we may email your report and one follow-up. Nothing else. See our privacy note.
Explore all 16 research playbooks