← All notes

Which Shopify products should not be published to the online store?

Separate point-of-sale, wholesale, internal, and retired products from genuine mistakes, choose between draft, archived, and unpublished, and record the decision so audits stop repeating it.

Any honest review of a mature catalog turns up dozens of products that are not available to online shoppers. Most of them are supposed to be that way. The useful work is not clearing the list — it is deciding which entries were intended, and making that decision legible to whoever looks next.

Left undone, this is the reason availability checks stop being run. A report that mixes forty deliberate exclusions with five genuine mistakes gets skimmed once and ignored afterwards.

Products that usually belong off the online store

Point-of-sale exclusives come first: items sold only in a shop, or products whose online price you deliberately do not publish. Then wholesale and account-only lines that reach buyers through a separate catalog, price list, or channel entirely.

After that come the records that were never products in the retail sense — packaging materials tracked as inventory, service line items, fee placeholders, samples, and the test product every store has and nobody deletes. Finally the retired ones: last season's colorway, a discontinued size, a collaboration that ended.

Draft, archived, and unpublished mean three different things

Draft is a statement about readiness. The product is not finished, and it is not for sale anywhere. Use it while a listing is being built, not as a parking space for things you have decided against.

Archived is a statement about the product's life. It is out of the working catalog and out of your default admin views, which is what you want for a discontinued item you may need to reference against old orders.

Active but unpublished from the Online Store is a statement about a channel, and it is the right choice for the products that genuinely still sell — in store, wholesale, or through a marketplace — but not on your website. This is the distinction most catalogs get wrong, usually by archiving something that is still being sold at the counter.

Match the mechanism to the reason. If someone can still buy the product somewhere, it should be active and unpublished from the channels it does not belong to. Archiving it to tidy a report removes it from the workflows that still need it.

Write the exception down where the next check can see it

A decision that lives only in someone's memory has to be made again every quarter. Give the deliberate cases a marker your process can read: a tag such as pos-only, a vendor value you control, or a collection that exists purely for internal grouping.

One caution about tags. Themes and apps can read them, and some themes surface tags in filters or on the product page, so choose a value you would not mind a customer seeing. If that risk is unacceptable for your theme, use a vendor convention or a dedicated collection instead.

The cost of excluding too broadly

Broad exclusions are quiet. Exclude a whole vendor and every future product from that supplier disappears from your checks — including the one that was meant to launch online next month. The same happens with a collection that someone later starts adding new items to.

My rule of thumb is that an exclusion rule should describe something permanent about the product, not something temporary about its state. "Sold only in our retail shop" is a durable fact. "Not ready yet" is not, and belongs in the product's status instead.

A short pass to run once

Take the current list of products that are not available online, and put each one in exactly one bucket: intended and marked, intended but not yet marked, or a mistake. The middle bucket is the work. Once it is empty, the third bucket is a genuinely short list, and it stays short.

Then look at your markers a couple of times a year, when supplier relationships or channels change. An exclusion that made sense two years ago is the most likely reason a product nobody can find is also a product nobody is checking.