Skip to content

Shop variations

Chris Taylor-Guest edited this page Oct 17, 2026 · 100 revisions

Shop Variations

Shop Variations adds product options to your shop. It comes in two flavours, and you can use either or both on any product:

Where it lives now. The variation tools used to have a Variation tools sidebar link. Everything is on the Variations tab of Shop → Catalogue now, with the import and bulk tools behind an Import & tools sub-tab. Old links still work.

  • Variants - fixed choices like Size and Colour, where each combination can have its own price, stock level, SKU, barcode, weight and photo. (The weight column only appears while the shop is charging postage by weight - that switch lives at the top of Shop → Tax & shipping.) A "Red / XL" jumper and a "Blue / S" jumper are the same product to your customer, but you can price and count them separately behind the scenes.
  • Personalisation - free-form extras the customer fills in: engraving text, a gift message, a paid gift-wrap tick-box, a dropdown of finishes, a date, or an uploaded file (artwork, a photo, a logo). You decide which are optional, which are required, and what each one adds to the price.

It needs the Shop module installed and up to date. Once both are in, every product grows a Variations tab for editing its own options, your Products list (Shop → Catalogue) grows a Variations tab that lists every variation across the whole shop in one place, and a Variation tools entry appears in the Shop section of your admin sidebar for reports and spreadsheet import.

Adding options to a product

  1. Open any product in your shop (Shop → Catalogue → the product).
  2. Go to its Variations tab. It sits right there on the product, alongside Details, Pricing and the rest - there's no separate screen to go off to any more, so you won't lose half-finished edits getting there.
  3. Add an option with Add from attributes, and pick the attribute it should be built from - Size, Colour, Finish, whatever you've set up over on Product Attributes. Options always come from an attribute now, rather than being typed out product by product, so the same twelve finishes are one list everybody draws on instead of forty near-identical lists that drift apart the first time somebody spells "Grey" the other way. You still choose how it looks on the page (a dropdown, a row of pills, colour swatches, or image swatches), and tick only the values this product actually comes in - see Building an option from a list you already have just below.
  4. Add as many options as you need. Two options - say Size and Colour - give you every combination of the two.
  5. Click Generate variants. Cactus creates one behind-the-scenes product for each combination, so the cart, checkout, stock and refunds all just work.

Changed your mind about how an option looks? Every option on the list has its own Dropdown / Pills / Colour swatch / Image swatch picker beside its name, so a Size you set up as a dropdown two months ago can become a row of pills this afternoon without deleting it and typing the values back in. Nothing else moves: the values, their order, and any colours or pictures already given to them are kept, so you can switch to pills and back to swatches and find your colours exactly where you left them.

You'll then get a grid with one row per combination. Set each one's price, stock, SKU and photo, or use the Fill every row boxes above the grid to do the lot in one go. Untick the On sale box to take that combination off sale without deleting it, tick Image up front or 3D up front to put its photo or its model on the product page before anyone has chosen anything (see below), or use the Delete button at the end of the row to be rid of it for good. Click a combination's name (or the little arrow beside it) to open the row up and see every photo on it at a decent size - from there you can pick which ones go up front, make a different one its main photo, or take a single photo off without clearing the lot - handy when a big pile of options throws up combinations you'll never actually sell. To clear out a whole batch at once, tick the box at the start of each row you want gone (or the box in the header to select the lot), then press Delete selected - rather than working down the list one Delete at a time. When there are more columns than fit, the grid scrolls sideways and the first column, the one naming each combination, stays put so you never lose track of which row you're on.

The Returns column has three settings rather than a tick, because a blank has to mean something. Left on As product - where every row starts, and where nearly all of them should stay - the combination follows whatever the product itself says about returns, so a made-to-order range is marked once on the product rather than three hundred times here. Set it to Returnable or No returns only where one combination genuinely differs from the rest: the single stock finish on an otherwise bespoke range, or the one made-to-order finish on a stock one.

The grid carries the same prices the rest of the shop does. Whichever extra price types you've switched on under Shop → General - sale, RRP, trade, cost - each gets its own column here, next to the ordinary price, so a variant can be on offer or carry its own cost figure without you having to think of it as a separate product. Switch one off in the settings and its column goes; the figures already typed are kept, waiting, in case you switch it back. Leave a box empty and that variant simply hasn't got one, which is a different thing from it being zero - an empty sale price means "not on offer", not "free". A variant with a sale price under its normal one is charged and shown at the sale price on the shop, with the normal figure struck through beside it, exactly as an ordinary product would be.

There is a Min qty column beside Stock, for something you will not sell one of - the size you will not send fewer than two of, the finish that is not worth setting up for fewer than ten. It is a floor rather than a batch size, so a customer can order eleven of that finish; they just cannot order nine. Fill it in and the product page's quantity picker opens on that number the moment the shopper settles on that combination, and says so in a line under the button. The count is across the product, not the combination: a minimum of four is met by four of one colour or by one each of four colours, so a customer buying a mixed set is never told to take four of the same thing. Only when the basket still falls short of the number is it held back at the checkout, with a line saying how many more are needed. Leave the box empty and the combination follows whatever the product itself says on its Stock & delivery tab, which is what the greyed-out figure in the empty box is telling you - so a minimum for a whole range is set once on the product rather than typed across three hundred rows. Where two combinations disagree, the larger figure wins for the basket as a whole.

With the sale price switched on, a Sale SKU column sits beside the ordinary SKU one too. Fill it in when a supplier issues a separate code for a discounted variant - order under that code while the offer runs, and the variant's own SKU is left exactly as it is, so anything matched against your usual stock list still finds it.

Because each variation now carries its own price, the product's own Pricing tab steps back: once it has variations, the price boxes there are put away behind a short note pointing you to this grid instead. A figure set on the product as a whole would never be shown to anyone - the shop prices the product from its variations - so there's nothing to fill in there and no risk of the two disagreeing. Anything already typed on that tab is kept, just not editable, so nothing is lost if the last variation is ever removed. Out on the shop - product pages, and every listing and grid of cards - a product whose variations differ in price shows as From £ its cheapest one, rather than a single figure, so a shopper sees where it starts at a glance. Price every variation the same and the "From" is dropped: there's nothing to count up from, so the shop simply states the price, and it goes back to saying "From" the moment one combination costs more than another. If you show RRPs to shoppers, a card carries one here too - the lowest RRP among the variations, printed beside the "From" figure exactly as it is on a product without options, so a grid of cards doesn't quote one on some listings and go quiet on the rest. Only RRPs that sit above what you're actually charging count, which is the same rule an ordinary product's follows.

Edits to the grid are saved by the product's own Save changes button, along with everything else on the product - one button, one save, no wondering which bits went and which didn't. Rows you've touched are highlighted until they're saved, and the tab keeps an amber dot while anything is outstanding. Adding an option or generating the variants happens there and then, since those are jobs rather than typed-in details.

A really big set of options - hundreds of combinations - is built a batch at a time rather than all in one click, because each combination is a genuine behind-the-scenes product and there's a limit to how many can be made in one go. You still only press the button once: the count climbs as it works through the batches and stops when it's done. If you close the tab halfway, nothing is lost - the Continue building options button picks up exactly where it left off, and it only ever adds the combinations still missing, so anything you've already priced is left well alone.

If instead you change your options so there are now more combinations on the grid than your options call for, that same button becomes Rebuild from options - which keeps the combinations you've already priced and only adds or removes the ones that changed.

Click the little square in a row's Photo column to pick that combination's photos from your media library, or upload new ones on the spot - the same picker you get on the product itself. A combination can have as many photos as it deserves: the walnut version shot from the front, the side, and the back all belong to the walnut row. Pick several at once, or come back and add more later - clicking the square again adds to what's there rather than replacing it, and the same picture chosen twice only counts once.

The column has one row's worth of space, so it shows the first photo with a small +2 (or +3, or however many) tucked in the corner to account for the rest. The × beside it clears the whole set for that row. Whichever photos you pick get filed into a variations folder inside the product's own folder in your media library, so all of one product's pictures live together without a hundred variation shots burying the three the listing itself uses. The picker opens in that variations folder too - though you can browse up and into any other folder, and the search box covers the whole library.

If your site has been running a while, your existing variation photos are still sitting in among the product's own. Nothing is wrong with that and nothing is broken; it's just untidy. Moving them is a one-off job for whoever looks after your site, run from their machine rather than from a button, because every picture it moves is a real move at your storage provider - point them at modules/shop-variations/scripts/backfill-variation-folders.mts, and ask them to run it before the small-copy tidy-up described in Managing media.

On the product page, choosing that combination puts all of its photos at the front of the thumbnail strip, in the order you added them, with the product's own pictures following on behind. The first one takes the main stage. So a customer who picks walnut gets the walnut photos to browse, not one walnut photo and then the oak ones.

Showing off a finish before anyone has chosen

That leaves a slight shame: you photograph a desk in six finishes, and a shopper who has picked nothing sees only the one beige catalogue shot on the product itself. The good ones sit in the dark until somebody guesses their way to them.

So each row of the grid has two tick boxes: Image up front, right beside the Image column, and 3D up front, right beside the 3D model column - separate, because the combination with your best photo is not always the one with your best model, and you may only have one of the two to show off in the first place.

Tick Image up front and that combination's first photo joins the product's own gallery straight away. Want a different photo, or several? Open the row by clicking the combination's name and tick Up front under each photo you want shown - they go up front together, in the order they sit on the combination, and the tick box in the row comes on by itself (unpick the last one and it goes off again). A small ×2, ×3 beside the tick box tells you at a glance which rows are showing more than one. It all joins the gallery, before anyone has touched an option, arriving behind the product's own pictures in the thumbnail strip. Tick it on three rows and all three turn up. From there it is an ordinary picture in the gallery: it appears on the product's Images tab alongside the product's own photographs, marked Variation, and you drag it wherever you like among them - see below. The same photos also come first among this product's variation pictures on its tile in a grid, ahead of the rest of the range, and a shopper pointing at that tile is shown one where the product hasn't a second photo of its own - so the finish you've chosen to show off is the one that answers the cursor, not whichever colour happens to be first in the grid.

Tick 3D up front and the same thing happens for that combination's model, if it has one - with the 3D views add-on installed, it joins the opening view behind the product's own model. A combination worth promoting for its model alone is fine too: tick just that box, and even with no photograph of its own the model still turns up.

What you've put up front stays up front until every option has been answered. Picking one option out of three is not a decision, it's a shopper halfway through thinking, and pulling the photograph or the model away at that point - or quietly swapping it for a different one - moves the picture out from under them. So nothing changes while they're still choosing.

The moment the last option lands, the gallery behaves exactly as it always has: that combination's own photographs and model at the front, the product's own behind, and the promoted ones step aside. Press Reset options and they come back, since the shopper is browsing again rather than choosing.

Left unticked, which is how every row starts, nothing changes at all.

Arranging them among your own pictures

Behind the product's own pictures is the right way round most of the time: the photograph you made the cover is the one the page should open on, and the promoted finishes are extras to be clicked. Sometimes it is exactly backwards - the product's own shots are a line drawing, a dimensions diagram or a bare white cut-out, and the handsome photography lives on the combinations. Often it is neither, and what you actually want is the oak one, then your two studio shots, then the walnut.

So a promoted combination's photo turns up on the product's Images tab as a tile in the same grid as the product's own pictures, marked Variation with the combination's name underneath it. Drag it anywhere in that grid, or use its arrows. Whatever order you leave the grid in is the order the shopper gets: the thumbnail strip on the product page, the pictures behind the arrows on its tile in a grid, and the picture the page opens on if you drag one to the front. Point at that tile without clicking and it shows whatever you put second, so a finish dragged into second place is the one that answers the cursor. Press Save as you would for any other change to the product.

Drag a Variation tile to the very front and it becomes the cover in every sense: the product page opens on it, and wherever the product turns up in a grid - category pages, search results, related products, a featured collection - the tile leads with it instead of the product's own photograph. The product's own pictures are still there, just further along the arrows, so a shopper flicking through the tile sees the lot either way. Leave it anywhere else and the tile leads with the product's own cover, exactly as it always did.

Each Variation tile has a description box, the same as the product's own pictures. What you type there is that combination's photograph's description, so it's the one that goes to screen readers and search engines wherever the picture shows up, not only here.

Press the × on a Variation tile to take it off the gallery. That is the Image up front tick going off and nothing more: the photographs stay on the combination it belongs to, ready to be shown again the moment somebody picks that finish, and you can put it back up front from the Variations tab whenever you like. Nothing is deleted.

The note under the grid says the same in a sentence, and none of this appears on products without variations.

Building an option from a list you already have

Typing "Black, Walnut, Oak, Ash, Beech" out again on the fortieth product is nobody's idea of a good afternoon. So the Variations tab doesn't ask you to: options are built from your Product Attributes, using the Add from attributes button.

You'll need Product Attributes installed for this, since it's what supplies the lists. Without it the Variations tab says as much and points you at setting your attributes up first, rather than offering a button with nothing behind it.

Click it and you get your attributes, in their groups, with a count of how many values each one holds. Pick one and you can:

  • Change the option's name. It starts as the attribute's name, because that's usually right, but this product's dropdown can say "Finish" while the attribute stays "Colour". Your version sticks - see below.
  • Choose how it looks - dropdown, pills, colour swatches or image swatches. Cactus has a guess ready: values with colours on them suggest colour swatches, values with pictures suggest image swatches.
  • Tick only the values you want. Everything starts ticked, so bringing the whole lot across is one click, but a chair that only comes in three of your twelve finishes takes only those three.

The values are copied onto the product and are yours from that moment - rename them and reorder them as this product needs. Renaming a copy here changes only this product's copy; the attribute carries on as it was.

Adding a new value is the one thing that does travel back the other way. Type "Sage green" into an option's Add value box and it's added to the attribute behind it as well, so it's waiting on the list the next time any product wants it. That's rather the point: the value you met on this product is exactly the sort that turns up on the next one, and having to go and type it out a second time on the Attributes screen to make it reusable was a small daily tax nobody signed up for. If the attribute already has a value by that name, yours is quietly pointed at the existing one rather than making a second copy of it.

Two values on one option may share a name now - "Black" in melamine beside "Black" in fabric, told apart by their swatches and, behind the scenes, by each value's permanent slug (black-mfc, black-fabric - set on the Product Attributes screen and carried through every spreadsheet as (slug)Name). On a swatch or picture control the shopper sees two different tiles and all is well; on a dropdown or pills, which show text only, two "Black"s would read identically - so the tab says so when it happens, with the slugs shown beside the offending values, and leaves the fix (a different control, or a rename) to you.

Using the same attribute twice on one product

A chair whose frame and seat are both sold in your twelve finishes wants that one Colour attribute twice, not two near-identical attributes set up side by side. So you can add the same attribute to a product as many times as it earns its keep.

The one rule is the one that was always there: two options on a product can't share a name, or the shopper meets two identical-looking dropdowns and your spreadsheet exports have nothing to tell them apart by. So the first helping can happily be called "Colour", and every one after it needs a name of its own - "Frame colour", "Seat colour", "Piping".

The picker makes this easy rather than obstructive. Attributes already on the product say Already added as "Colour" underneath, so you know before you click. Pick one of those and the name box starts empty instead of pre-filled with a name that's already spoken for, with a line explaining why. Type the name you want and Add option wakes up. Type one that's already in use and it says so on the spot, rather than after the click.

Each helping is its own option from then on: its own values, its own ticked subset, its own look. Bring five finishes across for the frame and three for the seat if that's what you sell. And your names stick - a "Seat colour" option built off the Colour attribute is never nagged about the attribute calling itself Colour, because you renamed it on purpose and Cactus can tell the difference between your decision and a drift.

Values you typed in here are treated like any other, since they're on the attribute too - rename one on the Attributes screen and this copy follows. Values typed in before this became the way of things have no attribute behind them, and those are left alone, always. Your option name is never overwritten. If you renamed it to "Finish", it stays "Finish", and Cactus never starts calling it by the attribute's own name instead.

If you uninstall Product Attributes, the options themselves carry on working perfectly well. They're your own copies.

Where an option came from

Under the name of any option built from an attribute you'll see a quiet line saying so - From attributes: Upholstery Colour. Handy when the option is called something else on this product, which is exactly when you'd otherwise have no way of telling what it's tied to.

If the attribute behind it has since been deleted, the line says that instead.

Adding a few more values later

The attribute might list twenty-two colours and this chair only come in four of them, so next to the box where you type a value, a sourced option also offers Add from source, with the number of values the attribute has that this option hasn't taken yet.

Open it, tick the ones you want, add them. The rest stay out of it. If the attribute has nothing left to offer, the button isn't there at all, which is its own small answer to "am I missing anything?".

One thing it won't do is add a value whose name that option already carries - two values with the same name make the combination names ambiguous. It skips those and tells you which.

A sourced value's swatch picture stays filed with the attribute it came from, under Shop → Attributes in your media library - it isn't copied or moved into the product's own folder. The same oak picture serves every product built from that attribute, so there's exactly one of it, in one sensible place. Only pictures for values you type in by hand on a product go into that product's colours folder.

Renaming the attribute, or one of its values

Rename an attribute over on the Attributes screen and every option built from it follows suit, on every product, without you visiting any of them. The exception is an option you deliberately renamed here: that one keeps your name, because that's what overriding it was for.

Edit one of its values - a new label, a new colour, a new picture - and the same thing happens a level down. Every copy of that value updates, and the combinations built on it are re-named to match, so you aren't left with a "Small / Oak" that nobody calls oak any more. A copy is skipped only where this option already has a value by that name, since two of those would make the combination names ambiguous; Cactus says which product that was.

Values typed in here go onto the attribute as well, so they follow along with the rest. Only the older hand-typed ones, from before that was the case, are copies of nothing and are never touched. See Product Attributes for the full account.

If you've switched suppliers on in Shop → Settings → General and set them to cover variations as well as products, the grid gains a supplier column too. It's a dropdown of your supplier list rather than a free-text box, and it ends with Add a new supplier for the ones you haven't got round to recording yet. Useful when the red ones come from one place and the blue ones from another.

Finding one combination in a big grid

Four options with five values each makes six hundred and twenty-five rows, and scrolling through them looking for the oak one in 1600mm is nobody's idea of an afternoon. So above the grid there's a row of dropdowns - one per option, in the order the shopper meets them, with the same value names. Pick a colour and the grid shows only that colour; pick a size as well and it narrows again. Leave an option on Any and it asks nothing.

The dropdowns tidy up after each other: once you've picked a size that only comes in two of your five finishes, the other three drop off the finish list rather than sitting there leading nowhere. Show all puts everything back, and the heading counts what you're looking at - "Variants (8 of 625)" - so a filtered grid never passes for the whole thing.

Two things follow the filter, deliberately. The tick box in the header selects the rows shown, not all six hundred, and Fill the rows shown does what its name says - which is rather the point, since "every row in oak, £340" is why you filtered in the first place. Delete all and Rebuild from options ignore the filter entirely; they were never about a subset.

Other modules can add columns here

Some modules add a column of their own beside Photo, for things that belong to one combination rather than to the product as a whole. If you have Product 3D views installed, that is where its 3D column turns up: drop a model file onto a row and that combination has one. If you have Product Attributes installed and tick Use for variations on an attribute, it adds a column here too, so each combination can carry its own Colour, Material or the like.

Columns like these save as soon as you use them, rather than waiting for Save changes with the rest of the grid. They deal in uploaded files, and a file has either arrived or it hasn't. If you have no such modules, you simply won't see any extra columns.

Renaming an option or a value

Settled on "Colour" and then decided it should say "Finish"? Click the name of any option, or any of its values, type the new one and press Enter. Escape backs out if you thought better of it.

Putting them in order

The order your options and their values appear in is the order the customer meets them on the product page, so it's worth getting right - Size before Colour, or your sizes running S, M, L rather than however they happened to be typed in.

Each option and each value now carries a little grip handle (the dots to its left). Drag an option by its handle to slot it above or below another, and drag a value by its handle to move it along its own row. Values stay within their own option - you can't accidentally fling "Large" into your list of colours. The new order is saved as you drop, and the storefront follows suit; there's nothing to press afterwards. A handle only appears once there's more than one thing to shuffle, since a single option has nowhere to go.

The grid of variations underneath reshuffles to match. Previously it kept whatever order it was built in, so after a drag the rows and the options above them told two different stories until you rebuilt the matrix - which was a lot to ask for what should be a tidying-up job. Nothing is rebuilt now: every variation keeps its own stock figure, price, photographs and code, and anything already ordered is untouched. Only the running order changes. Moving whole options about also re-words the variation names to match, so shifting Colour above Size turns "Dining chair - Small / Oak" into "Dining chair - Oak / Small".

Revealing options in order

Sometimes a later choice only makes sense once earlier ones are made - pick the frame before the glass, the model before the trim. From the second option down, each one carries a tickbox: Only show once every option above it is chosen. Tick it and that option stays out of sight on the product page until the customer has picked every option that comes before it, so they meet the choices one at a time instead of all at once. It waits for all of them, not just the one immediately above - a fourth option set to wait won't appear until the first three are all filled in.

The first option never gets the tickbox, since there's nothing before it to wait on. The tick only hides the option until its turn comes - it doesn't change the combinations, the prices or anything a customer can eventually buy; it just keeps the page from showing every choice at once when they'd rather be led through them. Drag an option that had the tick set up to the top and it quietly stops hiding, on the same "nothing before it" logic.

Changing a swatch colour

Picked a red, then found out the actual red? Click the coloured dot next to any swatch value. The picker and the hex box both open, so you can nudge it by eye or paste in the code you were given. The tick saves it, Enter does the same, and Escape leaves it as it was. A value that never got a colour shows a dotted outline instead of a dot - click that to give it one.

Image swatches

Some choices simply aren't a colour. An oak worktop, a herringbone weave, a marble finish - describing any of those with a single hex code is a losing battle, and "Walnut" in a dropdown asks the customer to already know what walnut looks like.

So pick Image swatch as the option's type and each value carries a picture instead of a dot. Add your values as usual (Oak, Walnut, Ash), then click the dotted square beside each one to give it its picture: choose one you've already got in your media library, or upload it there and then. Click the picture again later if you'd rather use a different one. If the picture is already sitting on your desktop, you can skip the library altogether and drag it straight onto the dotted square - it uploads on the spot, same as dropping a photo onto a variant row.

On the product page each value shows as a thumbnail with its name beside it. The name stays put on purpose - a picture answers "which one is that?" but only the name answers "what's it called?", and a customer who can't see the picture is left with nothing at all otherwise. Hover the thumbnail, or tap it on a phone, and the full picture pops up at a proper size so the grain or the weave is actually visible before anyone commits. Peeking is deliberately kept off the choosing itself - the picture zooms, the name beside it chooses - so a good look never lands a colour in the basket by accident.

A value you haven't given a picture to yet just shows its name, so an option half-way through being set up looks unfinished rather than broken.

Renaming a value tidies up after itself: the variants it appears in are relabelled to match, so nothing is left calling itself Red when it's now Crimson. Your prices, stock, SKUs and photos all stay exactly where they were - there's no need to generate the variants again. Orders already placed keep the name they were bought under, which is rather the point of an order.

Two options on the same product can't share a name, and neither can two values in the same option - Cactus will say so rather than let you build a product with two identical-looking choices.

When two choices are the same product

Once in a while two choices describe the same thing. An office chair offering Black back or Matching back has, in black, exactly one chair to sell: its back is black, and it matches the black seat. Both wordings are honest, and neither is wrong.

Left alone that becomes a small trap. The one chair has to be filed under one of the two, so a customer who picked the other wording finds black greyed out - and greyed out reads as "we don't sell that", when in fact they were one word away from it.

So a variation can be told it also answers to a second choice. It stays filed where it is, with its own price, SKU, stock and photographs; it simply turns up under both wordings, and either route puts the identical thing in the basket. Nothing is duplicated, so there's no second stock figure to keep in step and no risk of the two drifting apart.

Two things it deliberately won't do. It never overrides a real variation: where a combination has one of its own, that one wins, and standing in only happens where there's genuinely nothing there. And it doesn't spread - only the variations you've named answer to the extra choice, so a colour that truly isn't sold with a matching back stays greyed out rather than quietly shipping something else.

There's no button for this on the Variations screen yet; ask and it can be set up for you. It also leaves your catalogue spreadsheet exactly as it is - one choice per column, same as always - so a Pull can't undo it.

Adding personalisation

In the same editor, scroll to Personalisation and add a field. Pick the kind (short text, long text, number, dropdown, tick-box, date, or file upload), give it a label, and say whether it's required.

Each field can add to the price - a flat amount, an amount per character (handy for engraving), or a price per dropdown choice. Whatever the customer types or picks travels through to the order, the confirmation email, and your admin, so you know exactly what to make.

Uploaded files are kept safely and linked from the order. Abandoned uploads (ones that never became an order) are tidied away automatically after a while, so your storage doesn't fill up with orphaned artwork.

On the shop page

Nothing to do. As soon as a product has options or personalisation, its page picks them up on its own: the option choosers and personalisation fields appear above the basket button, the price keeps up with what the customer has chosen, and the photo swaps when their choice has one of its own. The add-to-cart button stays put until they've made a valid, in-stock choice and filled in anything required. As the customer works down the choices, each chooser narrows to fit only the choices above it, never the ones below. So the last chooser shows just what's genuinely left to buy - dead ends and sold-out combinations drop out rather than sitting there greyed - but an earlier chooser never loses an option merely because the exact full combination the customer had in mind isn't one you offer. They can always go back and change a colour or a size without it vanishing under them. Change an earlier choice and the choices below it are kept wherever they still make sense - swap the colour and a size that's still on offer stays picked, rather than making the customer choose it all over again. Only the ones the new choice has actually ruled out give way, and even those aren't quietly binned: the now-impossible value stays on show, struck through and greyed, with a note explaining which earlier choice it clashes with. So the customer can see what changed and why, instead of watching a choice disappear and wondering where it went. And that chooser isn't left sitting empty in the meantime: it lands on the first choice still available to it, so the customer always has a whole, buyable combination in hand - the struck-through one stays on show as a reminder of what they'd had, while the price and the basket button carry straight on rather than waiting for them to pick a replacement.

If narrowing things down that way leaves a later chooser with only one genuine choice left, that one picks itself - the customer isn't made to click something when there's nothing to decide. Picking that value can in turn leave the chooser after it with only one option too, and so on down the row.

This happens on the standard product page layout you already have, and only on products that actually use options - everything else in your shop carries on exactly as before. You don't need to edit a layout or drag anything in.

The thumbnail strip under the photo now behaves the same here as everywhere else: with more photos than fit on one line, the row fades out at the edge and offers a small arrow to walk it along, with a matching arrow and fade appearing at the start once it has moved. Products with options had been quietly missing out on that, which was precisely the wrong way round - they tend to be the ones with the most photos to show. A shopper with no wheel or trackpad had nothing to click.

On a phone, the photo keeps the customer company while they choose. A product with options tends to have a long enough list of choices that the picture would normally scroll clean off the top - just as the customer starts changing the very thing the picture shows. So once it's about to disappear, the photo (or the 3D view, if the product has one) tucks itself in under your site's header and stays put - large, taking up most of the width, with two of the other photos stacked beside it and anything beyond those two scrolling within. Pick a colour and the pinned picture swaps along with it, which is rather the point. Scroll on past the choices and it lets go and leaves with them; scroll back up to the top and the page is exactly as it was. Bigger screens keep the arrangement they already had, where the photo and the choices sit side by side anyway.

From version 0.1.128 the picture also stays put through the accessories box, if you have the Product Add-ons module. It used to let go at the end of the product's own choices, which is a shame, because picking a screen for a desk changes the picture just as much as picking the desk's finish does - and the customer was doing it with the photo already gone off the top.

The choosers arrive with the rest of the page, rather than turning up a moment after it. Up to and including version 0.1.6 they were fetched separately once the page had already appeared, so on a quiet shop that hadn't been visited for a while the customer could sit looking at a product they couldn't yet buy. They're now part of the page from the off.

Every option starts unchosen, and the page opens showing a From price - the cheapest combination you offer - so a shopper knows where the product starts before touching a single chooser. As soon as they've picked a full combination it settles to that combination's own price. Until version 0.1.12 the page helpfully picked a combination for the customer the moment it loaded - which sounds thoughtful right up until someone buys a medium in green because that's what was already sitting there when they reached the basket button. The choice is now theirs to make. Once they've picked something, a Reset options link appears to put everything back to blank, which saves a lot of clicking about on a product with several options. It now sits at the right-hand end of the green Ready to add box just above the basket button, beside the words listing what the shopper has chosen - which is, after all, exactly what it clears. It spent a while just to the right of the price, until the price row grew a VAT switch and the link started shoving the figures onto a second line. While some options are still unanswered there is no green box yet, so the link waits on its own at the right, directly above the button. On a long list of choices it tucks under the words instead of squashing them.

If you'd rather build the page yourself, you still can. The Variant Purchase block does the lot in one, and there are five smaller blocks - options, personalisation, price, add-to-cart and gallery - that you can place independently and they'll stay in step.

The options block has a few looks to choose from in the editor. By default every option's choices are on show at once, one under the next. Switch it to Accordion and each option folds into its own labelled section that the customer opens and closes, which keeps a product with a long list of options from running the page on forever. With the accordion picked, you decide how it opens: every section closed, just the first section open, or all of them open. Unless you've started with all of them open, you can also have each choice carry the customer along - leave the next section closed, open the next section as they go, or open the next and tidy the one they've just finished away behind them. Where a choice settles the following section by itself (only one answer left, so it's answered for them), the carry-along skips past it and opens the next section that still needs a decision. Whichever you pick, the customer can always open and close any section by hand. One thing overrides your choice: when a customer follows a link that lands straight on a particular variation, every option is already answered for them, so the accordion opens all its sections regardless - it would be daft to greet them with the answers folded away.

Colour and image choices have a look of their own too. Left as they are, each shows as a pill carrying both the swatch and its name. Choose Swatch only and the name steps back to a small label that appears when the customer hovers over the swatch, leaving a tidy row of colours or pictures - handy when a product has a lot of them and the names would only crowd the page.

Colour & image previews decides whether pointing at one of those swatches pops a bigger look at it - the full picture, or a proper block of colour rather than a 16px dot. It is on to begin with, and it is now set per screen size: the setting carries the same little desktop / tablet / phone switch the rest of the editor uses, so you can leave the bigger look on for desktop, where it costs a customer nothing to hover past it, and turn it off on phones. Worth doing, because a phone has no hovering: pressing a swatch to choose it is the hover, so the enlarged picture lands over the page whether the customer asked for it or not. Switch it off and the swatch simply gets on with being a swatch - on the Swatch only look the small name label still appears, since that is the only place the name lives. Leave a screen size blank and it follows the wider one, so setting desktop alone still sets all three, exactly as before.

Working through the choices

A product with five options is a small form, and a page that treats it as a loose pile of buttons leaves the customer to work out for themselves how far along they are. So the choosers now read as a sequence, and nothing about the way you set them up has to change - it applies to every product with options, on the standard layout and on one you've built yourself.

Each option is numbered. A circle sits in front of the option's name - 1, 2, 3 - and fills in once that option has been answered. It counts the options the customer can actually see, so an option you've set to appear only after the ones before it doesn't leave a gap in the numbering when it's still hidden.

Choices that cost more say so. Where an option genuinely changes the price, each of its choices carries the figure underneath: "180cm" with "from £246" under it. It only appears where there's something to tell - if every choice for an option costs the same, printing the same number four times helps nobody, so it stays quiet. "From" appears when that choice still leaves a range depending on what comes after it, and drops away when the choice pins the price exactly.

A sale hiding in one choice is pointed at. Where only some of a product's variations are on offer - one width on clearance, say, while the rest are full price - a small red Sale badge lands on the choices that carry the reduction, next to their own names: "180cm Sale". The customer can see which one holds the offer instead of clicking through every combination hunting for it. In a drop-down, where a badge can't be drawn, it reads as a word beside the choice; a colour shown as a swatch with no name beside it wears the badge next to the swatch itself, so the offer is visible while they're looking rather than only once they point at it. It stays quiet where nothing is reduced, and equally where every choice in that row is - marking all four when all four are on offer says nothing the struck-through price beside the basket button hasn't already said. As the customer works down the choices it keeps up: settle on the full-price width and the badges disappear from the choices below it, because there's no longer an offer down that road.

The choice they've made is unmistakable. A chosen value keeps its coloured outline, takes a light tint of your site's main colour, gains a small tick on its corner, and says Selected where the price used to be. At a glance, on a page with six options, the customer can see which rows they've answered and which they haven't.

The basket button waits until they've finished. It stays firmly off until every option has an answer - and rather than a vague "choose your options", it names the ones still outstanding: "Choose Width and Storage first". That wording is now written on the button itself, so the thing they're reaching for is the thing that tells them what it wants, instead of a line of small print underneath that a customer mid-tap never reads. A long list of outstanding options makes for a long sentence, so the button quietly sizes the wording to fit itself - shrinking it a little where that will do, and letting it run to a second line inside the button where it won't. Either way the whole message is there, on a phone as much as on a desk, and the button stays where it belongs beside the quantity box rather than barging onto a line of its own. Pointing at the button still shows the same words as a tooltip. The moment the last option is answered, a green line appears above the button reading back exactly what they've built - "Ready to add: 140cm · 2 Drawer Fixed Pedestal · Black" - so the thing they're about to pay for is written down in words rather than left implied by which buttons happen to be lit.

The picture says whose it is. Once the whole combination is settled and the page is showing that combination's own photograph or its own 3D view, a small Your choice badge sits in the top-left corner of it. It's answering a question a configurator quietly raises: is this the thing I just built, or the one off the catalogue page? Click back to one of the product's general photos and the badge goes, because that one isn't theirs.

Reset options really does reset. As well as clearing the choices and the price, it now puts the picture back too - including the 3D view of the variation they'd configured, which used to stay up looking rather like a live choice long after the choices had gone. The page returns to how it looked when they arrived.

And, for you alone, how many there are. While you're signed in with Shop access, a small dashed box marked staff only sits under the basket button showing the chosen combination's actual stock - Stock: 4 - rather than the cheerful "In stock" everyone else gets. It follows the choices, so it always belongs to the one currently in hand, and it says nothing at all until a full combination is settled, because until then there's no single number to give. Where a variation isn't counting its stock it says so plainly instead of leaving a blank. Customers see none of this, and the figures aren't sent to their browser either. Ordinary products without options get the same thing beside their badges - see the Shop page for that.

And whether it can come back. A third dashed staff only box says what the returns policy makes of the combination in hand - Returns: accepted, or Returns: not accepted followed by the exact sentence a customer would be given. Unlike the other two it speaks before you've finished choosing, on purpose: the answer is nearly always the product's own, so making you build a chair to find out something that was true of the whole range all along would be daft. Once a combination is settled its own answer takes over, and where that row genuinely differs from its product the box adds this option only. Customers see none of it, and it isn't sent to their browser.

And which one to order. Sat with it is a second dashed staff only box giving the chosen combination's own SKU, and its Sale SKU where the supplier has that one on clearance. Like the stock figure it says nothing until the whole combination is settled, and for the same reason: a half-finished choice matches no single variation, so there is no code to give - and a leftover one from the last complete choice would be worse than none, since it's the code you'd go and order. Once the last option is answered it's the code for exactly what's on screen. Customers see neither, and neither is sent to their browser.

The link keeps up with the choices

As the customer picks their way through the options, the address in their browser quietly keeps up: each choice is written into the address as a readable little note of its own - ?seat-colour=oxford-blue&width=1600mm, named after your options and their values. Copy the address at any point - fully chosen, half chosen, it doesn't matter - and whoever opens it lands on the page with exactly those choices already made: same options selected, same price showing, same photo up. Reset options clears the address back to the plain one along with everything else.

Sharing is rather the point. Paste the address into WhatsApp or anywhere else that shows link previews and the preview's picture is the chosen combination's own photograph - the same one the page opens on - not the general catalogue shot. A customer can send "this one, in this colour" and the message shows precisely that.

It plays nicely with the addresses that already existed. Every variation has always had a tidy link of its own (the one the basket uses), and those still work exactly as before - open one and every option is answered for you. Make a different choice on such a page and the address simply switches to the parent product's own address with your choices written on it, so what you copy always says what you're looking at. And the back button is left alone throughout: changing a colour never piles up history to click back through.

Every combination in your sitemap

From 0.1.154, each buyable combination is listed in your site's sitemap at its own address - the same readable one described above. So ?headrest=with-headrest&upholstery-colour=rivet-forge is not merely a link a customer can share; it is a page search engines are told about and can send people straight to, arriving on the exact chair in the exact fabric.

A few things worth knowing before you go looking at the numbers:

  • Only whole combinations count. A half-chosen address is the plain listing with a couple of controls pre-set, so it is left out. Switched-off variations are left out too, as are sold-out ones on a shop set to hide sold-out stock.
  • It gets big. A catalogue of a few hundred products with a colour chart each becomes tens of thousands of addresses. That is the intended effect, but it does mean search engines now have a great deal more of your shop to work through, and they may take their time deciding which of it deserves a place in results. Sitemaps have a hard ceiling of 50,000 addresses, so the module stops at 45,000 and says so in the deployment log rather than quietly producing a file nothing will read.
  • The page now agrees with the sitemap. A product page used to tell search engines that the plain listing was the real page and every configured address was just a copy of it. It still says that for a half-chosen address - but for a whole combination it now stands behind the address you are actually on. Typing the options in a different order, or using one of the alternative value names, still folds onto the one official address.
  • The basket's own variation links are unchanged. Those keep pointing at the plain listing as the real page, exactly as before.
  • From 0.1.172, Google Shopping uses the same address. If you run the Google Shopping module (0.1.11 or later), each variation's listing in the feed links to the very address published here, so the feed, the sitemap and the page all name one address per combination instead of three opinions about it.

On your category pages

A shopper scrolling a category sees a photo, a name and a price. What they don't see is that the chair comes in eleven colours, which is quite often the thing that would have made them click.

So each option now carries a tickbox: Display in categories. Tick it and that option summarises itself on the product's card wherever cards appear - your category pages, your shop home, the "you might also like" row, a featured collection. Colour and image swatches show as a small row of dots or thumbnails; dropdowns and pills show as a plain list of names separated by commas. Either way the option's heading goes in front, so nobody is left guessing what the row of dots is meant to be.

Two settings appear alongside the tick once it's on.

Label. What the option is called on a card, which needn't be what it's called on the product page. "Seat upholstery colour" is a perfectly good heading on a full product page and hopeless on a tile two inches wide, so put "Colour" here and the product page keeps its longer name. Leave the box empty and the card simply uses the option's own name.

Swatches shown (or Options shown, for dropdowns and pills). How many values appear before Cactus stops and adds a +4 to say how many more there are. Eleven colours on a card is a wall of dots; a few and a "+6" tells the same story and leaves room for the price. Three ways to say it:

  • All of them - every value, however many that turns out to be. Where it starts.
  • As many as fit on one line (up to six lines, if you like your cards taller). Cactus fills exactly that many lines of the card and no more, keeping room for the +4 marker at the end. The counting happens on the shopper's screen, so a wide card shows more swatches and a narrow one fewer, and the row never spills past the lines you chose - whatever size the card happens to be drawn at.
  • A number I type - a fixed count, the same everywhere.

However many show, the first swatches always sit on the same line as the heading, with any spill carrying on underneath - the heading never sits alone on a line of its own.

One thing to do first, and only once for the whole shop: the summary needs somewhere to sit on the card, and where it sits is your decision rather than ours. Go to Appearance → Layouts → Shop → Product Card and drag the Card: Variation options piece into your card design - under the name reads well, or above the price. Publish it and every card in the shop follows suit. Until you do, ticking the box quietly changes nothing, which is why the Variations tab reminds you the moment you first tick one.

Options you leave unticked carry on exactly as before and never appear on a card, so a product with a Size, a Colour and three fitting choices doesn't turn its tile into a specification sheet. An option nobody has given any values to yet is skipped as well, rather than printing an empty heading and looking broken.

Showing the photo for the one they're pointing at

A row of swatches tells a shopper the desk comes in walnut. It doesn't show them the walnut desk, which is the bit that actually sells it.

So the Card: Variation options piece carries a setting of its own: Preview the photo when a shopper points at a value. Turn it on (Appearance → Layouts → Shop → Product Card, click the piece, answer Yes) and the values stop being a list and start being something to point at. Hover 120cm and the card shows the 120cm desk. Move on to walnut and it shows the 120cm walnut one. Then a black frame, and there it is in 120cm, walnut, black frame. The choices build up as they go, so the picture is always the whole of what they've pointed at rather than just the last thing.

On a phone, where nothing hovers, a tap does the same job - and it stays put, so they can look properly rather than losing it the moment their thumb moves. Tap the same swatch again to let it go. Whichever value the picture is currently showing is marked, so nobody has to guess which walnut they're looking at.

If you have the 3D module, the little 3D icon comes along for the ride. Point at 120cm walnut, tap the icon, and the model that opens is the 120cm walnut one - the picture and the 3D view never disagree about which desk is being discussed.

A few honest limits. It can only show a photo that exists: a combination nobody has photographed shows the nearest one it does have rather than an empty box, giving up the last choice first, so pointing at a finish that doesn't come in the chosen width leaves the width showing. A product whose variations have no photos of their own carries on as a plain summary. And leaving the setting at No - which is where it starts, including on every card design you've already published - keeps the tile exactly as it is today, with no extra weight in the page.

Browsing every variation

Your Products list (Shop → Catalogue) has a Variations tab beside the usual list of products. It shows every variation across the whole shop in one place - a thumbnail, which product it belongs to, its options (like "Walnut / Large"), price, stock and SKU, and, if you have the 3D module, its 3D file. A variation currently on offer shows its Sale SKU underneath its own, so the code to order under is right there without opening the product.

  • Pick a product from the searchable dropdown to narrow the list down to just that one.
  • Use the Nothing set half of the filter to find the gaps: variations with no image, no SKU, no stock number, or (with the 3D module installed) no 3D file - so you can spot at a glance the ones still waiting for a photo, a code, a count or a model. Any extra columns your other add-ons contribute can be filtered on the same way.
  • Without SKU is the one to reach for after a big import or a new range: it lists every variation nobody has given a code, which is what you want in front of you before the stock file arrives and starts looking for them. A SKU that's nothing but a space counts as not set, on the grounds that it isn't one.
  • Without Stock Number lists variations that track inventory but have never been given a count. A variation genuinely out of stock - its count set to nought - doesn't show up here; that's a real answer, not a gap. Variations that don't track inventory at all don't show up either, since they were never meant to carry a number.
  • Use the Broken links half - Lost image and Lost 3D file - to find the opposite problem: a variation that still has a file recorded against it, but the file itself has gone. That's what you get when something is renamed, moved or deleted in the Media library after a product was pointed at it, and it's the sort of thing you'd otherwise only discover from a customer describing an empty grey box. Picking one of these checks the files there and then, so it takes a moment on a big shop and the answer is held for a few minutes afterwards. A spinner sits beside the filter while it's working, so you can tell the difference between "still checking" and "nothing found". It errs on the side of quiet: a file it can't get a straight answer about is left off the list rather than accused, so anything it does show you is worth looking at. A shop with thousands of pictures can run out of time before every last one has been checked - if that happens it says so underneath the filter, and narrowing to a single product first will get you through the rest.
  • Where several products use the same extra column - an Overall Height attribute, say - you get one column and one filter entry for it, not one per product.
  • It's a read-only overview: click a product's name to jump to its own Variations tab, which is where the actual editing happens.

Variation SKUs are also picked up by the main Products list's own search box, and by your storefront's search - typing a variation's code in either place takes you straight to the listing it belongs to. See "Adding products" in the Shop wiki page.

Reports and spreadsheets

The Variation tools entry in your sidebar holds the shop-wide reports and the spreadsheet import. Editing still happens on each product's own Variations tab.

  • Reports rolls your variant sales up under each parent product, with the best and slowest sellers, so you can see whether it's the small blue ones flying off the shelf.

  • Import / export downloads every variant as a spreadsheet and lets you upload one back - one row per variant, with its options, SKU, Sale SKU, price, stock, Min Qty, Returns, barcode and weight. A blank Min Qty cell means the variant follows the product's own smallest order, and a 1 means the same thing, so leaving the column alone changes nothing. Returns works the same way: blank means the row follows the product, and only a plain No refuses. The extra price types travel too: Sale Price, RRP, Trade Price and Cost Price each get their own column beside the ordinary price, so a big change to any of them is a spreadsheet job rather than a variant-by-variant one. A blank price cell means the variant simply hasn't got that figure; fill it in and upload to set it. Handy for a big price change or setting up lots of variants at once. Create the parent products in the shop first; the spreadsheet fills in their options and variants. The download asks which columns you want first - everything is ticked to start with, and you can cut it down to, say, just the variant code and price. Variant ID always comes along and can't be unticked: it's how each row finds its way back to the right variant when you upload the file again. The option and value columns come as one tick, as do any extra columns other parts of the shop add. Your choice is remembered on that computer for next time.

    Each option value travels as (slug)Name - (black-mfc)Black, say. The bit in brackets is the value's permanent slug from the Attributes screen; the bit after is what shoppers see. That's what lets two values both called "Black" (one melamine, one fabric) sit in the same column without ever being muddled: the slug says which is which, however the label reads. Uploading, the slug wins - change the name after the brackets and that value is renamed; use a slug the option hasn't seen and a new value is created under it. Plain cells without brackets still work exactly as they always did, so an old sheet imports unchanged.

    The export also carries a Variant ID column - each variation's permanent identity. Leave it alone and re-importing an edited file recognises every row even when you've reworded its option values: change "Red" to "Crimson" down the column and the import renames the value (or moves just the edited variations onto the new wording) instead of treating them as strangers and creating duplicates. Rows without an ID - a file from before the column existed, or a row you add by hand for a new variation - still match by their option values exactly as before.

    A choice the spreadsheet invents also reaches the Attributes screen now. Type a finish nobody has offered before into the sheet - "Beech & White", say - and it's added to the attribute the option was built from, exactly as if you'd typed it on the product's Variations tab, so it's on the list every other product picks from and shoppers can filter by it. Before this it landed on the one product and nowhere else, with no picture and no tie to the attribute, so it quietly sat out of the filters and had to be typed a second time on the Attributes screen to become reusable. If the attribute already has a choice by that name yours is pointed at that one instead of a second copy being made, and if the attribute can't take it at all the row is refused with an explanation rather than half-done.

    A rename from the spreadsheet also sorts out what the value is linked to. If the choice you've renamed it to is already on the Attributes screen, the copy on the product quietly re-links to that one and picks up its colour or picture, so a choice called Black is the attribute's Black and behaves like it from then on. Rename it to something the attribute has never heard of and the link is cut instead: the wording is yours, and nothing on the Attributes screen will come along later and overrule it. Previously the link stayed put wherever the name went, which is how a Black leg finish could end up wearing Silver's grey.

Variations made up of other products

A single variation can be a set of other products rather than one thing on a shelf: the oak version of a chair that is really a seat, a back and a base. Open the variation's row in the grid (the arrow beside its name) and use Made up of other products below its photos. Add the parts, say how many of each, and save.

That variation's stock then follows its scarcest part and the Stock cell in the grid turns read-only, because there is nothing to type. The rest of the product's variations carry on as they were. If any one part is out, only that variation shows as out of stock. Needs Shop 0.1.509 or later. How it works is described on the Shop page, under "Products made up of other products".

Good to know

  • A variant only appears through its parent product - it never turns up as its own item in the shop grid, search or sitemap.
  • VAT comes from the main product, not from each variation. Whichever tax you pick on the product itself now applies to every one of its variations, and it keeps up on its own when you change it - including when the change arrives from a Google Sheet. There is no per-variation tax box to go hunting for, which is just as well, because there never was one. Until now a variation quietly kept whatever the tax happened to be on the day it was created, so a shop that sorted its VAT out afterwards could show a price with tax on the product page and then charge without it at the basket. Variations already on your site are put right for you.
  • A variation's name and web address follow the product's. Both are built from the listing they belong to - "Impulse Cantilever Crescent Corner Office Desk - 160cm / Right Hand / Maple / Silver", at an address to match - and they now keep up when the listing is renamed or its address is rebuilt on the Search tab. Until now they were fixed at the moment the combinations were generated, so a product renamed afterwards had a basket full of lines quoting a name it hadn't gone by for months, at an address to match. Every variation already on your site has been put right, so the link in the basket is the one you'd expect. Long combinations are no longer chopped off halfway either, which is what used to leave two different sizes sharing an address with a "-2" stuck on the end.
  • You can link straight to a variation. The web address a variation carries in the basket - the one with its colour and size in it - now opens the product page with exactly those choices already made, rather than the customer having to pick them all again. Drop that link in an email or an advert, or hand it to a customer, and whoever follows it lands on the right product already set to the right combination, price and photo and all. Until now those links led nowhere, which rather defeated the object.
  • Other blocks can follow the chosen variation. The page now announces which variation the customer has settled on, so a block from another add-on can react to it - the delivery add-on's shipping options do exactly that, showing what every variation agrees on until a combination is chosen and then the real services for that one. Nothing to switch on: it happens by itself, and a shop without those add-ons carries on as before.
  • A listing is only sold out when every variation is. If your shop is set to hide products that have sold out (Settings → Shop → General → Out of stock products), a listing with variations is judged on the whole set: one colour running out never takes the listing with it, and it disappears only when the picker on its page has nothing left to offer.
  • A choice that's simply run out now says so. Where every version of a colour or size is off the shelf, hovering it reads Out of Stock rather than the old, rather unhelpful "unavailable" - which had customers assuming something was broken. A choice ruled out by an earlier pick still explains itself the way it always did, naming the clash or pointing at where the choice is to be had, because that isn't a stock problem and shouldn't pretend to be.
  • You can still pick a sold-out choice yourself. Signed in with shop access, the picker lets you select combinations that are out of stock, so you can check a colour, show a customer the photos, or read the stock figure off the page. The basket button still refuses, and customers still can't get near it. A variation you've switched off stays off for everyone, yourself included - that one's your decision, not the warehouse's.
  • Personalisation prices are always worked out on our side at checkout, so nobody can tinker with the total.
  • Deleting a product deletes its variations too. Remove a product that carries variations and its behind-the-scenes variant products go with it, codes and all. They used to linger invisibly and sit on their codes, which then blocked those codes for anything you imported later.
  • A code that's already taken now says who has it. If a spreadsheet import (or a Google Sheet Pull) tries to give a variation a code some other product already holds, the import carries on with everything else and reports the clash by row, naming the product in the way - rather than failing that variation quietly on every run.
  • Removing this module leaves the behind-the-scenes variant products in place; tidy them up from the shop if you no longer want them.

Wiki: Home · Managing pages · Appearance and design · Managing users · Managing media · Modules · Gazette · Boards · Directory · Shop · Shop Variations · Reply Catcher · Gemini Watermark Remover · Configuration reference

Clone this wiki locally