Skip to main content
Uploading Bill of Materials (BOMs)

How to Export and Upload your BOMs in bulk

Lucas Judson avatar
Written by Lucas Judson
Updated this week

Overview

The BOM uploader allows you to create or update BOMs for output products in bulk. When uploading, you must provide all necessary details for each BOM, grouped by product. Any errors during upload will generate a downloadable error CSV for correction.


Steps to Upload a BOM

  1. Export Existing BOMs or Download the Template. This ensures your CSV format meets system requirements

    • To Export

      • Navigate to Settings > Export Data > Export Bill of Materials

    • To start from a blank template

      • Navigate to Settings > Import Data > Import Bill of Materials.

  2. Fill Out the Template

    • Populate each row with the required fields or make edits to existing rows.

    • Group rows by Output Product Name for BOMs associated with the same product.

      • 🛑 ALL INGREDIENTS FOR THE BOM MUST BE INCLUDED HERE! Ingredients on a pre-existing BOM that are left out of the upload will be deleted from the BOM. We highly recommend exporting to edit existing BOMs

  3. Upload the CSV

    • Return to the BOM uploader, select your file, and initiate the upload.

  4. Review Error CSV (if applicable)

    • If errors occur, download the error CSV for troubleshooting.

    • Correct the issues and re-upload the updated file.


CSV Formatting Requirements

Mandatory Columns

  • Output Product Name: The exact name of the product (Must match an existing product).

  • Ingredients: Each row must have either an Ingredient Product Name, Ingredient Product Filter(s), or a Cost Type.

    • Ingredient Product Name: The exact product name of the ingredient (Must match an existing product)

    • Ingredient Product Filter: The filters used to create a dynamic BOM ingredient (Where only products included in the filter can be used to fulfill the BOM)

      • Ingredient Product Category Filter: Product Categories that the ingredient may belong to

        • Can list multiple, separated by commas

      • Ingredient Product Subcategory Filter: Product Subcategories that the ingredient may belong to

        • Must list the parent category in brackets next to the subcategory. Can list multiple separated by commas

          • Example: AAA [Bulk Flower], AAA [Shake]

      • Ingredient Product Tag Filter: Product Tags on products that the ingredient could be

        • Can list multiple, separated by commas

      • Ingredient Product Group Filter: Product Groups that the ingredient product may belong to

        • Can list multiple, separated by commas

    • Cost Type: The exact name of the Additional Cost required to produce the output product

  • Quantity: The amount of the ingredient required.

    • Only required if an Ingredient Product Name or Ingredient Product Filter is listed for the row.

  • Unit Type: The unit of measurement for the quantity

    • Must match the ingredient product's unit type if a Ingredient Product Name is specified.

    • Only required if an Ingredient Product Name or Ingredient Product Filter is listed for the row.

  • Cost Type Quantity: Amount of the associated Cost Type required

    • Only required if a Cost Type is listed for the row.

Optional Columns

  • BOM Name: Must be the same across all rows for a single output product.

  • Description: Must be the same across all rows for a single output product.

  • Cost Description: Describe the Cost Type associated with the row

    • Example: Cost Type - Labor, Cost Type Quantity - 1, Cost Description - Hours of production technician labor


Validation Rules

  1. Completeness of BOM Data (VERY IMPORTANT)

    • A BOM upload must include all ingredients for a product.

    • If a CSV includes only part of an existing BOM, existing BOMs will be overwritten entirely by the new upload.

  2. Unit Type Validation

    • The Unit Type of the ingredient in the CSV must match the unit type associated with the Ingredient Product Name.

    • Mismatches will result in the error:

      • “Unit Type Mismatch”

  3. Filter and Category Validation

    • Filters like Category, Subcategory, Group, or Tag must reference existing records.

    • If a filter does not exist, the row will fail with the error:

      • “Filter Type [Insert Name] Does Not Exist”

    • Subcategories require their parent category in brackets (e.g., Subcategory [Category]).

  4. Ambiguous Subcategories

    • If subcategories with the same name exist in multiple categories, and no clear association is provided, the upload will fail with the error:

      • “Ambiguous Subcategory”

  5. Data Integrity Checks

    • Rows with Ingredient Product Name cannot also include ingredient filters.

    • Costs and Ingredients must be in separate rows.


Error CSV Details

If your upload fails, the system will generate an error CSV containing an error message of what must be corrected. You can use this CSV to make your corrections and re-upload or return to your original to make the corrections


Best Practice

  • Export Existing BOMs: Use the Export BOMs option to generate a pre-filled template for updates. This will reduce the possibility of accidentally deleting ingredients that existing in the app but not on the upload CSV

Did this answer your question?