Short answer: Bulk variant publishing means setting which sales channels each variant appears on, for many variants in one go, from a spreadsheet instead of one variant at a time in the Shopify admin. Altera does it with Variant Published: <Channel> columns in a Matrixify-compatible product spreadsheet: one row per variant, one column per channel, TRUE to publish, FALSE to hide, blank to leave alone. Export, edit, import, and every variant in the file is updated in one job. If you have Matrixify files already, Altera reads them unchanged. Matrixify itself does not support variant publishing at all.
What bulk variant publishing means in Shopify#
A Shopify store sells through sales channels: the Online Store, the Shop app, Point of Sale, Hydrogen storefronts, the Buy Button, the GraphQL App, and marketplace channels such as Facebook & Instagram, Google & YouTube, and TikTok. A product is published or unpublished on each channel separately, and on most channels Shopify also tracks publication per variant.
That per-variant record is what bulk variant publishing changes. In the Shopify admin you reach it by opening a product, opening a variant, and editing its Sales channels section. For one variant that is fine. For every size and colour across a catalogue, it is a spreadsheet job. Two Shopify rules shape how that spreadsheet works:
- A variant inherits the parent product’s publication state by default. You only set a variant where it should differ from the product.
- A variant can only appear on a channel where the parent product is published. Variant publishing narrows a product’s channel visibility, it never widens it.
Point of Sale is the one channel without per-variant publishing. Shopify only allows POS visibility at the product level.
How to bulk publish or unpublish variants with Altera#
Altera is a Shopify import and export app that reads and writes Matrixify-compatible spreadsheets. Bulk variant publishing is a set of columns on its Products sheet.
- In Altera, click Export and select Products. In the Sales Channels field category, tick “Variant Published on Sales Channel” (and “Published on Sales Channel” if you also want the product-level columns). Use the export filters to narrow the export by handle, vendor, or tag.
- Open the exported spreadsheet. There is one
Variant Published: <Channel>column per channel, and each variant row shows its current state. - Set a cell to
TRUEto publish the variant on that channel,FALSEto hide it, or leave it blank to keep the current state. Fill the column down for every variant that should change. - Delete the rows for variants you do not want to touch. Keep the
Handle,Variant ID, andVariant SKUcolumns as they are so each row matches back to the right variant. - Upload the file to Altera, check the product and variant count in the analysis preview, and start the import.
The same file can carry product-level Published: <Channel> columns, so publishing a product to a new channel and hiding some of its variants there is one import, not two.
See the how-to guide with a video walkthrough, or the product field reference for every publishing column.
Bulk variant publishing jobs, with the spreadsheet for each#
Hide one size from the Shop app across every product. Filter the export by vendor or tag, then set Variant Published: Shop to FALSE on every row whose size option is the one you want hidden. The products stay live on Shop; only that size disappears there.
| Handle | Variant SKU | Option1 Value | Variant Published: Shop |
|---|---|---|---|
| cotton-t-shirt | COTTON-TEE-XS | XS | FALSE |
| cotton-t-shirt | COTTON-TEE-SM | SM | |
| linen-shirt | LINEN-XS | XS | FALSE |
| linen-shirt | LINEN-SM | SM |
Unpublish discontinued variants from a marketplace channel. Keep the variants in Shopify for inventory and order history, and set Variant Published: Google & YouTube to FALSE for each discontinued SKU. Nothing else in the row needs a value.
Release a subset of variants to a Hydrogen storefront. Publish the products to Hydrogen with Published: Hydrogen set to TRUE, and in the same file set Variant Published: Hydrogen to FALSE on the variants the new storefront should not show yet.
| Handle | Variant SKU | Published: Hydrogen | Variant Published: Hydrogen |
|---|---|---|---|
| trail-jacket | TRAIL-JKT-SM | TRUE | TRUE |
| trail-jacket | TRAIL-JKT-MD | TRUE | TRUE |
| trail-jacket | TRAIL-JKT-LG | TRUE | FALSE |
Keep wholesale sizes off the public storefront. Case-pack or bulk-size variants that belong on a private GraphQL App channel get Variant Published: Online Store set to FALSE, while the retail sizes are left blank and keep their current state.
Feature one variant in a Buy Button embed. Set Variant Published: Buy Button to FALSE on every variant except the featured one.
In each case the export gives you the current state of every variant on every channel, so you can also use it as a report: filter the spreadsheet for FALSE in any channel column to see which SKUs are hidden where.
Matrixify bulk variant publishing#
Matrixify does not support bulk variant publishing, or any variant publishing. Its documentation states that publication values are read “only in the first row of each product”, so the variant rows in a Matrixify file are ignored for publishing, and its product-level Published and Published Scope columns cover the Online Store and Point of Sale only.
The file itself is still useful. Altera reads and writes the Matrixify spreadsheet format, so bulk variant publishing with a Matrixify file is three steps: add a Variant Published: <Channel> column to the product export you already have, set TRUE or FALSE on the variant rows, and import it into Altera. The Handle, Variant ID, and Variant SKU columns match each row to the right variant, as they already do in Matrixify, and the rest of the file imports unchanged. You are not learning a new app or rebuilding your files.
For the full comparison, see Does Matrixify support variant publishing? and Matrixify sales channel publishing for product- and collection-level channels.
Rules Altera follows for bulk variant publishing#
- In Altera,
TRUEpublishes,FALSEunpublishes, and blank is skipped. A blank cell never unpublishes a variant, so a file that only fills in the cells you want to change is safe to import. - The parent product must be published on the channel first. Altera cannot publish a variant to a channel its product is not on, because Shopify does not allow it. Put a
Published: <Channel>column in the same file to publish the product in the same import. - Altera leaves the parent product’s publication state untouched when it processes
Variant Published:columns. - Altera skips
Variant Published: Point of Saleset toFALSEwith warningPRD062, because Shopify only allows POS visibility at the product level. - Altera only generates columns for channels installed on your store, so a channel you add later gets its column on the next export.
Frequently asked questions#
What is bulk variant publishing?
Setting which sales channels each variant of a product appears on, for many variants at once, instead of opening every variant in the Shopify admin. Shopify tracks publication per variant on most channels, so a product can stay live on the Online Store while one size is hidden from the Shop app. Bulk variant publishing means doing that from a spreadsheet: one row per variant, one column per channel, TRUE or FALSE in each cell, imported in one job.How do I bulk publish or unpublish variants in Shopify?
Use Altera. Export your products with the Variant Published on Sales Channel fields, set TRUE or FALSE in the Variant Published:Can Matrixify do bulk variant publishing?
No. Matrixify reads publishing values from the first row of each product only, so variant rows are ignored, and its product-level columns cover Online Store and Point of Sale only. Altera reads the same Matrixify product file and adds Variant Published:Can I use my existing Matrixify file for bulk variant publishing?
Yes. Altera reads and writes the Matrixify spreadsheet format. Add a Variant Published:Which sales channels support per-variant publishing?
Online Store, Shop, Hydrogen, Buy Button, GraphQL App, and every installed marketplace channel such as Facebook & Instagram, Google & YouTube, and TikTok. Point of Sale is the exception: Shopify only allows POS visibility at the product level, so Altera skips a Variant Published: Point of Sale value of FALSE with a warning.Can I bulk unpublish variants without unpublishing the product?
Yes. Set the variant’s cell to FALSE for the channel you want it hidden from. The product stays published on that channel and the other variants keep their state. Altera leaves the product-level publication state untouched when it processes Variant Published columns.Can I publish a variant to a channel the product is not on?
No. Shopify requires the parent product to be published on a channel before any of its variants can appear there. Add a Published:See the full Altera vs. Matrixify comparison for every difference between the two tools, or the FAQ for more common questions.

