How product variants work
Most shop platforms treat a variant as a child of a parent product. The parent holds the name, the description and the shared images. Each child holds the combination a customer actually buys — small in black, a metre length in copper — along with its own code, price, stock level and often its own photograph. WooCommerce calls these variable products, Shopify calls them variants; the idea is the same.
What differs between platforms is what happens to the address. Some keep every combination on a single page and swap the content with a selector. Some give each variant an address of its own. Some do both, appending a parameter when an option is chosen. That one decision drives most of the search and reporting consequences that follow, so it is worth knowing which your shop does before anything else is changed.
Why variants matter
They are where stock and money actually live. Reporting at product level hides that one size sells out constantly while another never moves, that a colour is being discounted into loss, or that returns are concentrated in a single option. Reordering, ad budgets and discounting are all guesswork until the numbers are read variant by variant.
They also decide what shoppers can find. If somebody searches for a particular size or finish and no page of yours mentions it, the shop is invisible for that search even though the item is sitting on the shelf.
Where variants go wrong
Giving every combination its own indexable page is the usual error. The pages differ by a single word, so they compete with each other, split the links between them and read as duplicate content. In most catalogues the right shape is one page per product with the options selectable, a canonical tag pointing at it, and a separate page only where a version has demand of its own.
The second problem is the default. A page that opens on a sold-out or most expensive option loses shoppers who assume the whole product is unavailable or overpriced. The third is disagreement between systems: a feed that submits variants as unrelated products, or analytics that reports only the parent, makes it impossible to join what was advertised with what was actually sold.
How to act on it
Give every variant its own stock keeping unit and use that same code everywhere — website, feed, invoice, courier label, analytics — so one thread follows the item through every system you own. In a product feed, submit each variant as its own item and group them so the platform understands they belong to one product.
On the page itself, show the options without making the shopper hunt for them, mark unavailable combinations rather than hiding them, and update image, price and stock as the selection changes. Then review sales and returns by variant on a regular cycle, because that is where most catalogue decisions are genuinely made. Tidying this up is ordinary, unglamorous ecommerce SEO work, and it usually pays back faster than chasing new keywords.