Skip to main content

Convert & auto-detect product types

A product's type decides how it behaves everywhere else in SKU: a standard or kit product holds its own stock, a bundle explodes into its component lines at sale time and holds no stock of its own. Because you rarely get the type right the first time — you create a plain product and only later realize it should sell as a bundle — the Workshop lets you convert types after the fact, either one product at a time or across many at once, and can even scan your catalog to suggest which standard products look like bundles or kits from their names.

Conversions are guarded, though. Once a product accumulates inventory history, changing its type would strand FIFO layers and movements, so SKU blocks those conversions and tells you why. This guide covers every path: single convert, batch convert, auto-detect, checking restrictions, and the history rules that gate all of them.

For what each type means and how kits differ from bundles, see Product types explained and Kits vs bundles. To assemble the components themselves, see Build bundles & kits in the Workshop.

Before you begin

  • You need permission to edit products (the same permission used to create and edit products — see Product permissions reference).
  • Converting to a bundle or kit requires the product to already have at least one component. Add components first in the Workshop, or provide them as part of a batch conversion.
  • Conversions between inventory-bearing types and non-inventory types are blocked once a product has stock history. Read Why history blocks conversion before converting anything with movements.

The three convertible types

Only three types take part in conversion here:

TypeHolds its own stock?Sells asNotes
StandardYesOne lineA plain sellable product.
KitYesOne lineAssembled from components but tracks its own inventory, like a standard product.
BundleNoExplodes into component linesA virtual grouping; stock comes from the components at sale time.

Standard and kit are inventory-bearing; bundle isn't. That single distinction drives every restriction below. (Matrix, blemished, and manufactured are separate product families and aren't converted through the Workshop — see Product types explained.)

Convert a single product's type

Use this when a product is already a bundle or kit and you want to switch it to the other, or turn it back into a standard product. The Workshop type-change action only accepts bundle and kit products as the starting point — a plain standard product is converted into a bundle or kit through batch convert or by choosing the type when you create it.

  1. Open the Workshop and find the bundle or kit you want to change.
  2. Choose the new typeBundle, Kit, or Standard.
  3. If you are converting to standard, confirm the dialog. The product's component rows are kept (not deleted), so the change is reversible — you can flip it back to bundle or kit later without rebuilding the component list.
  4. Save. SKU applies the new type and, for a convert-to-standard, the product drops off the Workshop list (which shows only bundles and kits).

Rules enforced on a single conversion

The conversion is rejected with a clear message when:

  • The product isn't already a bundle or kit. Only bundle and kit products can be converted through this action; anything else returns an error.
  • The product has sale or assembly history. If the product has any sale or assembly inventory movement, the type is locked and you are told to consider creating a separate SKU instead. See Why history blocks conversion.
  • You are converting to a bundle or kit with no components. A bundle or kit must have at least one component — add components first.

Batch convert standard products

Use this to promote many standard products to bundle or kit at once — for example, after auto-detect surfaces a list of candidates.

  1. Select the standard products you want to convert (the auto-detect flow feeds directly into this).
  2. Choose the target type (Bundle or Kit) for each.
  3. For each product, optionally attach a components list. SKU saves those components before flipping the type, so a converted bundle or kit is never left component-less.
  4. Run the batch. SKU processes each item and returns a summary: how many converted and a skipped list with a reason per product.

Partial success is normal — some products convert while others are skipped. A product is skipped when:

ReasonWhat happened
Already the target typeThe product is already a bundle/kit of that type — nothing to do.
Has sales or assembly history — can't convert to BundleConverting to a bundle requires no sale/assembly movements (see below).
No componentsThe target is a bundle/kit, you provided no components, and the product has none saved. Add components first.
Component save failedThe components you supplied were invalid (for example, they broke a component rule). The product keeps its original type.
Bundle is the strict target

Converting to a bundle is the one batch target blocked by sale/assembly history, because a bundle holds no stock of its own — its component lines take over at sale time, which would strand any movements the product already recorded. Converting to a kit isn't blocked by that rule here, since a kit keeps tracking its own inventory. The single-product path in the app applies the same "no sale/assembly history" guard to any bundle/kit type change.

Batch conversions apply the new type through a real per-product save, so the side effects of a type change — search re-indexing and inventory/report cache invalidation — stay in sync. You don't need to re-index anything afterward.

Auto-detect likely bundles and kits

SKU can scan your standard products and flag ones whose SKU or name reads like a bundle or kit — "3-pack", "Variety Kit", "Assorted Combo" — so you don't have to hunt for them by hand.

  1. Open the auto-detect view in the Workshop.
  2. Pick a mode:
    • Suggestions — only standard products whose name or SKU matches a detection pattern.
    • All — every standard product; ones that match a pattern carry a suggested type and confidence, and the rest show blank pattern fields so you can still convert them manually.
  3. Pick a confidence filter — All, High, or Medium. Choosing Medium shows only medium-confidence matches and excludes the high-confidence ones, so the two lists never overlap.
  4. Review the suggestions. Each row shows the detected pattern, the suggested type, the confidence, whether it has inventory movements (so you can spot conversions that will be blocked), and its current component count.
  5. Select the ones you want and feed them into batch convert.

How patterns map to a suggested type

Detection reads the product's SKU and name together and matches against a fixed rule set:

ConfidenceSignalExamplesSuggested type
HighKeywordbundle, kit, combo, assortment, variety packkit for the word kit; bundle for everything else
HighQuantity phrase3-pack, 3 pack, pack of 6Bundle
MediumQuantity phrase12ct, 6xBundle
MediumKeywordset, pack, collection, pair (matched on whole words)Bundle

Only the literal keyword kit suggests a kit; every other match suggests a bundle. A suggestion is just that — you always confirm the target type before converting, and you can override it.

Two matchers, one rule set

The auto-detect list is filtered in the database (a SQL pattern match, for speed and correct paging) while each row's per-item pattern and confidence are computed in application code. Both read the same keyword and quantity-pattern definitions, so the list count and the per-row labels can never drift apart.

Check restrictions before converting

When you are about to convert a set of products, SKU can tell you up front which ones are blocked by history so the interface can warn you rather than fail mid-batch.

  • Check restrictions takes a list of product IDs and returns, for each, whether it has any sale or assembly movements — a simple blocked / not-blocked flag per product.
  • Restricting movements opens the detail behind that flag for a single product: a paginated list of the actual sale and assembly movements — each showing type, quantity, reference, warehouse, and date — so you can see exactly what's holding the conversion back.

Only sale and assembly movement types count as restricting here. A product whose only history is a receipt, transfer, adjustment, or stock take isn't flagged by these two checks (but see the broader ledger rule in the next section for conversions that drop inventory entirely).

Why history blocks conversion

Two different guards protect inventory integrity, and it helps to know which one you are hitting.

Sale or assembly history locks a bundle/kit's type

The Workshop uses a narrow check: does the product have any sale or assembly inventory movement? If so, its type is locked — converting it would leave those movements attached to a product whose type no longer matches how they were recorded. The fix is to create a separate SKU for the new behavior rather than rewrite the history of the existing one.

Bundles never record their own movements (they expand into their components at sale time), so a bundle → standard conversion is effectively always allowed by this rule.

Any inventory ledger blocks dropping to a non-inventory type

When you change a type on the full product edit screen — not just in the Workshop — SKU applies a broader guard for one specific direction: converting an inventory-bearing type (standard, kit, blemished, manufactured) into a non-inventory type (bundle, matrix). That move would orphan every FIFO layer, movement, and cached number the product holds, so it's blocked whenever the product carries any inventory ledger at all — a FIFO layer or a movement of any type, including a stock take.

This is stricter than the sale/assembly rule on purpose: a product whose only history is an opening stock take reads as "no movements" under the narrow check, yet it still holds a real FIFO layer. Blocking on the full ledger keeps that stock from being stranded. Attempting it returns an HTTP 422 with a message explaining the product has inventory history.

The one always-allowed exception

Standard → kit is always permitted, even when the product already has sale or assembly movements. A kit behaves like a standard product — both track their own inventory and both sell as a single line — so promoting a standard product to a kit never strands anything. Every other type change of a product with sale/assembly history is rejected.

Editing kit components after use

Changing a kit's components (as opposed to its type) isn't blocked by inventory history — you can revise a kit's or bundle's component list at any time. Those saves are validated for a valid configuration only: a save is rejected with a structured HTTP 422 when the component set is empty, includes a product that isn't a Standard or Kit, references the product itself, or forms a circular loop. Rules for what components are allowed, minimum quantities, and nesting live in the Kit & bundle component reference.

Summary of conversion outcomes

ConversionProduct has no historyProduct has sale/assembly movementsProduct has any inventory ledger (for example, stock take)
Standard → KitAllowedAllowed (the exception)Allowed
Standard → BundleAllowedBlockedBlocked (drops to non-inventory)
Kit → BundleAllowedBlockedBlocked (drops to non-inventory)
Bundle → StandardAllowedn/a (bundles hold no movements)n/a
Bundle → KitAllowed (needs components)n/an/a
Kit ↔ Bundle both need ≥1 component

For how stock, opening balances, and FIFO layers behave once a product carries inventory, see View a product's stock and the inventory guides.

Next steps

Video transcript

A product's type decides how it sells — a standard or kit holds its own stock, while a bundle explodes into its components at sale time. The Workshop's Conversion tab lists your products by type, and Suggestions auto-detects standard products that look like bundles or kits from their names. To convert, add a product to the queue and pick its new type. Here a standard becomes a bundle — flagged Needs components, because a bundle or kit must have at least one. Add the components, then Convert. Products that already have stock or assembly history are blocked, to protect their inventory.

Last verified: