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:
| Type | Holds its own stock? | Sells as | Notes |
|---|---|---|---|
| Standard | Yes | One line | A plain sellable product. |
| Kit | Yes | One line | Assembled from components but tracks its own inventory, like a standard product. |
| Bundle | No | Explodes into component lines | A 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.
- Open the Workshop and find the bundle or kit you want to change.
- Choose the new type — Bundle, Kit, or Standard.
- 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.
- 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
saleorassemblyinventory 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.
- Select the standard products you want to convert (the auto-detect flow feeds directly into this).
- Choose the target type (Bundle or Kit) for each.
- 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.
- 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:
| Reason | What happened |
|---|---|
| Already the target type | The product is already a bundle/kit of that type — nothing to do. |
| Has sales or assembly history — can't convert to Bundle | Converting to a bundle requires no sale/assembly movements (see below). |
| No components | The target is a bundle/kit, you provided no components, and the product has none saved. Add components first. |
| Component save failed | The components you supplied were invalid (for example, they broke a component rule). The product keeps its original type. |
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.
- Open the auto-detect view in the Workshop.
- 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.
- 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.
- 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.
- 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:
| Confidence | Signal | Examples | Suggested type |
|---|---|---|---|
| High | Keyword | bundle, kit, combo, assortment, variety pack | kit for the word kit; bundle for everything else |
| High | Quantity phrase | 3-pack, 3 pack, pack of 6 | Bundle |
| Medium | Quantity phrase | 12ct, 6x | Bundle |
| Medium | Keyword | set, 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.
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
saleandassemblymovements — 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
| Conversion | Product has no history | Product has sale/assembly movements | Product has any inventory ledger (for example, stock take) |
|---|---|---|---|
| Standard → Kit | Allowed | Allowed (the exception) | Allowed |
| Standard → Bundle | Allowed | Blocked | Blocked (drops to non-inventory) |
| Kit → Bundle | Allowed | Blocked | Blocked (drops to non-inventory) |
| Bundle → Standard | Allowed | n/a (bundles hold no movements) | n/a |
| Bundle → Kit | Allowed (needs components) | n/a | n/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
- Build bundles & kits in the Workshop — add and manage the components a bundle or kit needs before you can convert to it.
- Kits vs bundles — the behavioral differences that make one convertible and the other restricted.
- Product types explained — the full type model, including matrix, blemished, and manufactured.
- Bundle pricing & revenue proration — how a bundle's price splits across its components at sale time.
- Kit & bundle component reference — component rules, minimum quantities, nesting, and circular-reference prevention.
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.