Phantom BOMs in Odoo: When and How to Use Them

A phantom BOM is a virtual product that explodes into its components. When that is the right tool, and when it is not.

Odoo bills of materials come in two types: a normal manufacturing BOM, and a phantom BOM, also called a kit. The phantom BOM is widely misunderstood. This piece explains what it is and when to use it.

What a phantom BOM is

A phantom BOM, in Odoo, defines a product as a virtual bundle of components rather than as something manufactured. The defining behaviour: when a product with a phantom BOM appears on a sales order or a transfer, Odoo automatically explodes it into its component lines. The components are delivered or moved directly, and no manufacturing order is created. The phantom product itself is, in a sense, not really stocked or built; it is a stand-in that resolves into its parts.

How it differs from a manufacturing BOM

The difference is fundamental. A normal manufacturing BOM means the product is genuinely produced: making it creates a manufacturing order, components are consumed through operations, and a real finished product results. A phantom BOM means no production happens at all; the product simply explodes into its components when used. One produces a thing; the other unbundles into things.

When to use a phantom BOM

A phantom BOM is the right tool when a product is genuinely just a defined collection of components, with no real assembly stage. The classic cases:

Sales kits and bundles. A product sold as a bundle, several items packaged or sold together, where there is no manufacturing involved. The customer orders the bundle; Odoo delivers the components.

Convenient component groupings. A set of components that are always used together, grouped under one phantom product so they can be added to a higher-level BOM as a single line rather than listing each component every time.

In both cases, the common factor is that there is no real production step. The phantom product is an organisational convenience, not a thing that is built.

When not to use a phantom BOM

Do not use a phantom BOM for anything that is genuinely manufactured. If a sub-assembly is actually built, through operations, and stocked as a distinct intermediate item, it should have a normal manufacturing BOM, not a phantom one. The test is simple: is there a real production step that turns the components into the item? If yes, it is a manufacturing BOM. If the item is only ever the sum of its parts with no assembly, a phantom BOM fits.

How to set one up

Setting up a phantom BOM in Odoo is the same as creating any BOM, with the type set to kit, or phantom, rather than the normal manufacturing type. The BOM lists the components. Once that is done, Odoo's exploding behaviour follows automatically wherever the phantom product is used.

The takeaway

A phantom BOM in Odoo defines a product as a virtual bundle that explodes into its components when used, with no manufacturing order created. Use it for sales kits, bundles, and convenient component groupings, anything that is genuinely just a collection of parts. Do not use it for anything that is actually manufactured through a real production step; that needs a normal manufacturing BOM. For how we approach Odoo for manufacturers, see our manufacturing work.

All posts

Got a Topic Worth Posting?

Suggest a Topic

If a question keeps coming up in your operations, it might be worth its own post.