# Add a product and its parts list > Add your first product and its parts list, by hand or by importing a CSV. The **Add a product** flow creates a product, its first revision and its parts list in one go. You do not need to learn the data model first. You can change anything later. ## Start the flow Use either of these: - Open **Parts & BOMs** and select **Add a product**. - Select **Add product** on the "Set up your workspace" checklist. Both open `/products/new`. Nothing is saved until the last step. ## The four steps 1. **Name it.** Enter a product name. You can also set a short code, used on labels (leave it empty to use the suggestion), and the unit it is counted in: Each, Sets or Kits. 2. **What goes into it.** List the parts. For each part, enter a name and how many go into one product. Then say how you track it. 3. **Import (optional).** Paste or upload a CSV parts list instead of typing every part. Skip this step if you listed the parts by hand. 4. **Finish.** Review the product and its parts, then select **Create product**. ### How you track each part For each part, choose one of three options. The choice sets the part's kind: | You choose | You mean | Part kind | |---|---|---| | By quantity | You count how many you have, like screws or capacitors. | `RAW` | | By serial number | Each one is unique and traceable, like radios or sensors. | `COMPONENT` | | We build it | Something you put together yourselves first. | `ASSEMBLY` | Parts you track by quantity are stocked in bulk, by lot. Parts you track by serial number are received one serial at a time. A part you build is built with its own build order. ## Import a parts list from a CSV On step 3, either paste the text into the **Parts list** box or select **Upload a CSV file**. The CSV can be at most 5 MiB. - The first row holds the column headings. BuildTrace matches them case-insensitively and suggests which heading is which. You can change the match with the drop-downs. - Only the **Part name** column is required. These are optional: **Quantity**, **Part number**, **Manufacturer part #** and **How it is tracked**. - Headings such as `name`, `qty`, `part number`, `mpn` and `tracking` are matched for you. Select **Preview** to read the file. BuildTrace shows each line as New or "Already in your parts", along with any warnings. The import follows these rules: - A blank or invalid quantity becomes 1, with a warning. - A row with a blank name is skipped, with a warning. - The part code comes from the Part number first, then the Manufacturer part #, then the name. - A line is marked as matched when a part with that code already exists. Otherwise it is new. Select **Use these parts** to copy the preview into your parts list and go to the last step. The previewed parts are added to any you typed by hand. ## Create the product On the last step, review the list. Turn on **Lock for production** if the product is final and ready to build. Leave it off to keep editing freely. Select **Create product**. BuildTrace then does all of this in one transaction, so a failure leaves nothing half-made: - creates the product part, as an assembly; - creates its v1 revision; - creates a single-level BOM with your parts as the lines. Parts you track by quantity or by serial number are released when they are created. If you turned on **Lock for production**, the product's v1 revision is released too. A released revision cannot be edited. See [Parts and revisions](https://buildtrace.eu/docs/concepts/parts-and-revisions.md). When it is done, select **Open product** to see it in **Parts & BOMs**, or **Add another**. ## Do the same from a script You can run the same steps through the API. Call `previewProductImport` to check a CSV, then `commitProductImport` to create the product. Both need the `parts:write` scope. Send the `csv` field as raw text or as base64. Use a service-account token. You create service accounts in **Settings**. ## Next [Create your first build order](https://buildtrace.eu/docs/getting-started/first-build-order.md).