Skip to main content


Whenever you have a bill of materials (BOM), you have a Product and every product has an in-house Part associated with it. While the Product helps on managing the BOM, its revisions and its production lifecycle, the Part itself helps on keeping track of its inventory.


You can have an in-house Part that doesn't have a Product, but not the other way around. An example of this would be PCBs, the physical boards themselves: you want to keep track of how many PCBs you have available to be used in production but the PCB itself is not the (final) product itself. Another example could be mechanical parts that are machined or 3D printed in-house and that don't need a BOM by themselves.

Changing a product's name

To change the name of a product, you change the Part Number of the in-house part it is associated with.


A product can have multiple revisions, each including a single BOM. Each revision can have its own documents and notes.

Production plans and builds can be created for each BOM and help you plan and track production, respectively. More on this below.

Bill of Materials (BOMs)

A bill of materials describes all the parts and quantities needed to produce one unit of your product.

how to import a BOM?

Learn more about it here.

Designators and quantities

Designators are the reference designators that unambiguously identify the placement of a part (or parts) in the product (e.g. C1, C2 or C1-2), which in regards to electronics products would be the printed circuit board (PCB). When creating a BOM line, Designators are optional. However, if defined, the Qty is derived from it, regardless of what you might have manually entered or imported in the Qty field.

A few examples:

C1, C2, C43

When Designators are omitted, the Qty must be defined.

Assigning parts

Assigning a part to a BOM line can be done when manually adding or editing the BOM line or when importing the BOM through a CSV file.

To assign parts in a BOM, those parts must already exist in the workspace. This means that, if they don't, you'll have to import them first and in this case, you might use your BOM's CSV file to import the parts themselves.

The reason for this is that when importing parts, the info about the part should be as complete as possible (at least a Part Number and Manufacturer must be provided), while when identifying parts to be assigned in a BOM you might simply use an Internal PN for example or any other part's field of your choice. This can be configured through the BOM preferences dialog.

BOM preferences

When importing the BOM you can pass information about the part you want to assign to each row. The fields that are matched against existing parts are the ones listed in the BOM preferences dialog, and in that order:

By default, the app tries to match parts by Internal PN, Part Number and Manufacturer, and simply by Part Number. If it can't find any parts that match the Internal PN, or if this field is not mapped, it then tries to match parts by both Part Number and Manufacturer and at last, if still no part has been matched, it tries to match them by the Part Number.

You can however define any other fields, even custom ones, and its order.

value and package

When defined, the Value and Package fields are always considered when matching parts to be assigned.

If the Assign first match option is checked, the app will assign the first part it finds that matches your criteria. Otherwise, no part is assigned but the app will still present you with all parts it found so you can manually pick one among them.

Part matching data

Even before assigning parts, you can manually define part matching data (PMD) for each row in a BOM. This data should provide enough information of what part should be picked for a row, other that the Value and Package fields, if defined. The app will then use this information and present you with suggestions of parts that can be assigned to each row.

However, the most common scenario to use PMD is probably when importing a BOM. In this case, the PMD is automatically set, based on the fields mapped when importing the CSV file. This way, even if no parts are matched (because no such parts exist on your workspace yet), you still have an indication of the data it should match the parts to.

Auto-assigning parts

Parts can be auto-assigned upon importing a BOM, as explained above, or at anytime through the Auto-assign parts... action menu, as long as there's rows in the BOM with parts to be assigned:


A sub-assembly is essentially an in-house part being used in the BOM of another in-house part.

On the top-right corner of the BOM you can set the BOM view to either Single-Level or Multi-Level. Multi-level will allow you to expand sub-assemblies, so you can see its BOMs as in the picture above.

Pricing & availability

The pricing & availability table can be useful to quickly estimate the cost of a BOM or the production of a given batch quantity. You can set the purchasing criteria to if needed or all and the app will quote the BOM considering inventory that you have on-hand or not, respectively. It also tells you which parts you are missing.

For the app to be able to provide you with an estimate cost you need to make sure all the lines also have an estimated cost. This means either the parts used in it have a unit cost defined or, the ones that don't and need to be purchased, have a quote selected. Quotes can be auto-assigned, the same way it's done in purchase lists.

When quotes have been picked, the Availability column tells you how much stock is available on the selected supplier.

From this table you can also proceed to create a production plan or, if your subscription doesn't support it, to create a purchase list for the missing quantities.

Missing inventory

When checking for missing inventory in the Pricing & Availability table, the app only looks at the required quantity and currently available inventory. This means that missing inventory might have already been procured (i.e, it's planned, on-order or in-production) but it's just not available yet. For this reason, the stock balance should give you a better picture of whether you are currently overstocking or understocking. In other words, stock balance should tell you if you need to procure more of a given part, or not.

For improved planning and automated procurement, you should always use production plans whenever planning and scheduling production.

Ownership and inventory restrictions

A product might have an owner. An owner is a Contact. In this case, the owner might as well represent a customer, depending on your use case. The main goal here is to be able to enforce that only inventory that belongs to this product or owner can be used during production.

For products that have an owner, during production, and by default, inventory can only be picked from storage locations that belong to that same owner. This can be changed through the inventory restrictions dialog though, by enabling other storage locations, possibly owned by others, to be used as well.

inventory restrictions

Even if a product doesn't have an owner, you can still use the inventory restrictions dialog to limit the inventory that can be used in production, or rather from where it can be sourced.

These restrictions are applied per product (and all its revisions).