Temporarily suspend a variant

Is it possible to temporarily hide or suspend a variant?

I run a made to order business so I don’t track inventory. Lots of products are available with the same variants. (size and colour) if a colour is temporarily out of stock, I would like to hide the colour. At the moment, I would have to do this by going to each product and removing the colour.

Yeah you can do this without touching inventory

it’s called unpublishing a variant

open the product, go to the Variants section, click the Publishing column on that color, deselect the sales channel (Online Store), Save

the variant disappears from the storefront but stays in your admin

flip it back on whenever the color is available again, nothing is lost

and you don’t have to do it product by product

select all the products that share that color on the Products page, open the bulk editor, and change variant publishing there in one go

so one action hides that color everywhere, not one edit per product

works fine for made-to-order since it’s publish/unpublish, not a stock number

That helps a little! Then I don’t need to delete the colour, unpublishing it makes so much more sense.
The only thing I could figure out was how to do that in bulk.
If I have 10 items, with 5 sizes and 5 colours. Doing a bulk edit means I would have to scroll through a list of 250 lines to find all the “red” ones that are unavailable and check off.
But unpublishing per product is a good start thanks

Cheers,

Hi @Leanne_Jane

We can add a setting in the Theme Customizer such as Hide unavailable/out-of-stock colour variants with an ON/OFF option.

When a colour is unavailable, it would simply be hidden from the colour swatches on the product page instead of deleting or unpublishing the variant. This keeps the variant data intact and allows the colour to be shown again when it becomes available.

Best regards,
Devcoder :laptop:

Fair, 250 rows is rough, and the bulk editor won’t filter down to one color

2 ways to make it less painful:

Sort the inventory list by the color option first, then open the bulk editor. all the Red rows sit together instead of scattered, so you’re editing one block, not hunting

Or go through CSV. export your products, flip the published / sales-channel column for the color you want gone, re-import. Shopify itself points to CSV for the bigger changes, and it’s the fastest when a color goes on and off a lot

And devcoders’ idea is solid too if this happens often. hiding the unavailable color in the theme (a swatch that greys out) keeps the product live and just drops the one option, no per-variant editing at all. more setup up front, but then it’s automatic

For a made-to-order shop that toggles colors a lot, i’d lean theme-side for the repeat cases and keep unpublishing for the odd one-off

One CSV caveat: Shopify’s native product CSV treats Status/Published at the product (Handle) level, not as a per-variant switch. For a safe test:

  1. Products → Export → all products as CSV.
    1. In Excel/Sheets, filter Option1 Value and Option2 Value for the colour (for example, Red), but keep every row for each matching Handle.
      1. Keep Status/Published consistent across all rows for that Handle (Published=TRUE if the product should stay live). Setting Published=FALSE hides the whole product, not just Red.
        1. Re-import one Handle first and verify it. Then use the bulk editor’s variant publishing column for the Red rows; the CSV is useful for finding the products, but cannot safely unpublish only one variant.

Use the filter to filter your color. This will bring up only products that have that color. Then select all, bulk edit. Choose columns, Sales Channels. Collapse the Products. Then expand and find that product’s variant, double click on Sales Channels, uncheck the channel you want to exclude for that variant. This is very easy, especially for only 10 or less products.

Note - unpublishing a variant may not hide its variant selector button/swatch on the product page. If it’s a multi-option product, most likely the theme will cross it out because it sees only available and unavailable. You may have to unpublish all variants of a particular option in order for the theme to actually hide it.

Since you have ~250 variants to change each time, there’s another option if you’re comfortable using the Admin API.

Variant-level publishing was added in API 2026-07, so you can unpublish only the matching variants without changing inventory or deleting anything.

For example:

mutation UnpublishVariant($id: ID!, $input: [PublicationInput!]!) {
  publishableUnpublish(id: $id, input: $input) {
    publishable {
      ... on ProductVariant {
        id
        title
      }
    }
    userErrors {
      field
      message
    }
  }
}

with:

{
  "id": "gid://shopify/ProductVariant/123",
  "input": [
    {
      "publicationId": "gid://shopify/Publication/456"
    }
  ]
}

Then use publishablePublish when that color should be available again.

This keeps inventory untouched and avoids theme-specific hiding logic.

yeah, this is where Shopify’s variant setup gets annoying. there isn’t really a native “temporarily disable this variant everywhere” switch that lets you hide, say, the blue colour across every product without editing each product individually.

if you’re not tracking inventory because everything is made to order, i’d look at using an app that can manage variant availability globally, or handle the availability logic in the theme so a colour can be marked unavailable without deleting it from every product. deleting the variant isn’t ideal anyway because you’re changing the product data just to reflect a temporary supply issue, and you’d have to recreate it later.

Hi @Leanne_Jane :raising_hands:

For a made-to-order store, I can see why removing a color from every product individually would become frustrating, especially when the same color is used across a large catalog.

Rather than deleting the variant each time, one approach is to manage the customer-facing options separately from your Shopify inventory. That way, when a particular color is temporarily unavailable, you can stop customers from selecting it without having to rebuild the variants across all your products.

For example, Easify Custom Product Options lets you create reusable option sets for things like Color and Size. You can manage the options in one place and control which choices are presented to customers, which can be more convenient for a made-to-order setup.

If you’re using the same Color/Size options across many products, this can also save you from making the same changes repeatedly on individual product pages.

The important distinction is that this approach controls the options customers can select, rather than changing your underlying Shopify inventory. So when a color becomes available again, you can make it selectable without having to recreate the whole setup.

It would be worth checking how your current variants are structured, though, because if these are native Shopify variants and you need to completely disable those variants at the backend level, the solution would be different.:heart:

Use Group by on the product itself

Open the product and scroll to Variants. Change Group by from Size to Colour.

Red is now one row instead of five. Tick that row and every size in that colour is selected.

Click the button next to Bulk edit and pick Manage publishing.

Turn Online Store off.

Click Done, then Save. The Publishing column now shows that colour is no longer on every channel.

Before and after on a test product:

Notes

You have to unpublish every size in that colour.

That is what @Maximus3 was warning about. Unpublish the whole Colour row and it disappears properly.

If you want one switch for all products at once

Add a Custom Liquid block to your product page. Theme editor > Product information > Details > Add block > Custom Liquid.

Paste this and put your colour names on the first line:

{% assign hidden_colours = 'Red' | split: ',' %}
<style>
  {%- for c in hidden_colours %}{% assign c = c | strip %}
  .variant-option__button-label:has(input[value="{{ c }}"]),
  .variant-option__swatch:has(input[value="{{ c }}"]) { display: none !important; }
  {%- endfor %}
</style>
<script>
  (function () {
    var hidden = {{ hidden_colours | json }}.map(function (c) { return c.trim(); });
    function pick() {
      document.querySelectorAll('.variant-option').forEach(function (fs) {
        var inputs = Array.prototype.slice.call(fs.querySelectorAll('input[type=radio]'));
        var on = inputs.filter(function (i) { return i.checked && hidden.indexOf(i.value) > -1; })[0];
        if (!on) return;
        var next = inputs.filter(function (i) { return hidden.indexOf(i.value) === -1; })[0];
        if (next) next.closest('label').click();
      });
    }
    document.addEventListener('DOMContentLoaded', pick);
    pick();
  })();
</script>

  • One edit hides that colour on every product. Change 'Red' to 'Red, Mustard' for more than one.
  • It also moves the selection off the hidden colour, so a product that opened on Red now opens on the next one.
  • It hides the swatch, it does not block the variant. Someone with a saved link could still order it. Unpublishing does block it.
  • The colour name has to match your option value exactly.

Regards,
Ploqo

Yes, I’ve actually run into this exact issue with my store. Since I also work with made-to-order products, I don’t really want to manage inventory just to temporarily disable a colour.

What I’ve found is that the easiest solution is to hide/disable the specific variant rather than removing it from every product individually. That way, when the colour becomes available again, you can simply reactivate it without having to rebuild all those product options.

Has anyone found a good Shopify app or built-in way to disable a variant across multiple products at once? That would save a ton of time compared with editing every product individually.