Bulk Import
If you have an existing ingredient or consumable list in a spreadsheet, you can import everything in one go rather than adding items one by one. This is particularly useful when setting up Brikly for the first time or when onboarding a new supplier with a large product range.
How it works
- Go to CostingBrik > Ingredients (or Consumables).
- Click Import.
- Download the CSV template.
- Fill in your items following the template format.
- Upload the completed CSV.
- Review the preview table and confirm.
Brikly validates every row before importing. Any rows with missing required fields or unrecognised values are flagged so you can correct them before proceeding.
CSV template columns
Download the template from the import modal to get a pre-formatted file with the correct headers. Here is what each column does:
Required columns
| Column | Description | Example |
|---|---|---|
| name | A clear, descriptive name for the ingredient | Semi-skimmed milk |
| supplier | Supplier name - matched to an existing supplier or auto-created | Brakes |
| cost_per_pack | The price you pay per pack (must be zero or positive) | 5.99 |
Measurement columns
| Column | Description | Example |
|---|---|---|
| usage_type | How this ingredient is measured: weight, volume, or unit. If omitted, Brikly infers it from pack_unit | volume |
| pack_size | Numeric size per unit (e.g. 500 for 500ml). Required for weight and volume items | 500 |
| pack_unit | Unit of measurement for the pack size. See accepted units below | ml |
| units_per_pack | Number of individual units in each pack. Defaults to 1 | 12 |
Per-unit measurement columns (optional)
These columns let you specify the actual weight or volume of each individual unit. They are especially useful for items bought by the unit but tracked by weight or volume - for example, canned drinks or bottled sauces.
| Column | Description | Example |
|---|---|---|
| weight_per_unit_grams | Weight of one unit in grams | 330 |
| volume_per_unit_ml | Volume of one unit in millilitres | 330 |
If you buy Coca Cola in cases of 24 cans and each can is 330ml, set pack_unit to each, units_per_pack to 24, and volume_per_unit_ml to 330. Brikly then knows both the purchase format and the actual volume per serving.
Other optional columns
| Column | Description | Example |
|---|---|---|
| category | Category for organising your ingredient library | Dairy |
| brand | Specific brand, if relevant | Yeo Valley |
Always enter your cost_per_pack as the ex-VAT price. This is the price shown on most trade supplier invoices (Brakes, Bidfood, etc.). Brikly uses ex-VAT prices for all recipe costing and margin calculations.
Accepted pack units
| Type | Units |
|---|---|
| Weight | g, kg, oz, lb |
| Volume | ml, l, fl oz, gal, pt, us pt |
| Count | each, unit, piece, pack |
When you omit usage_type, Brikly infers it from the pack_unit:
- Weight units set
usage_typeto weight - Volume units set
usage_typeto volume - Count units set
usage_typeto unit
Example CSV rows
Here are examples covering the most common ingredient types:
name,supplier,usage_type,pack_size,pack_unit,units_per_pack,cost_per_pack,weight_per_unit_grams,volume_per_unit_ml,category,brand
Flour,Local Supplier,weight,1,kg,1,5.99,,,Baking,Baker's Choice
Milk,Dairy Farm,volume,1,l,12,2.50,,1000,Dairy,
Eggs,Fresh Farms,unit,,,12,4.75,,,Dairy,
Olive Oil,Food Wholesale,volume,500,ml,6,8.99,,,Oils,
Coca Cola (330ml cans),Drinks Supplier,volume,24,each,24,20.99,,330,Cold Drinks,
How each row works
Flour - a weight-based ingredient. Bought in 1kg bags, one bag per pack, at £5.99. Brikly converts this to a cost per gram automatically.
Milk - a volume-based ingredient sold in cases of 12 one-litre bottles. The volume_per_unit_ml of 1000 tells Brikly that each bottle is 1000ml, so it can calculate cost per ml.
Eggs - a unit-based ingredient. No pack size or unit needed - just 12 eggs per pack at £4.75.
Olive Oil - a volume-based ingredient. Bought in cases of 6 bottles, each 500ml, at £8.99 per case. Brikly derives the volume from the pack size and unit.
Coca Cola - a volume item bought by the unit. The pack_unit is each because you buy individual cans, but usage_type is volume because you track drinks by volume. The volume_per_unit_ml of 330 tells Brikly each can is 330ml.
Validation rules
Brikly checks every row against these rules before importing:
| Rule | Detail |
|---|---|
| name and supplier cannot be empty | Every ingredient must have both |
| cost_per_pack must be zero or positive | Negative costs are rejected |
usage_type must be weight, volume, or unit | If provided, it must be one of these three values |
| pack_unit must be a recognised unit | See accepted pack units above |
| Weight and volume items need pack_size + pack_unit | Both are required unless the pack unit is a count unit like each |
| pack_size must be positive | If provided, it cannot be zero or negative |
| weight_per_unit_grams must be positive | If provided, it cannot be zero or negative |
| volume_per_unit_ml must be positive | If provided, it cannot be zero or negative |
- Entering VAT-inclusive prices - always use the ex-VAT figure from your supplier invoice.
- Leaving
pack_sizeandpack_unitblank for weight or volume items - Brikly needs these to calculate cost per gram or ml. - Using an unrecognised unit like "litre" instead of "l" - check the accepted units list.
Preview and confirmation
After uploading your CSV, Brikly shows a preview table with all parsed rows. Check that:
- Names and suppliers look correct.
- Pack sizes and units are what you expect.
- Cost per pack values are right.
- Weight and volume per-unit values appear where expected.
If everything looks good, click Upload Ingredients to confirm. Brikly then processes each row and reports back:
- Added - the number of ingredients successfully created.
- Skipped - duplicates that already exist in your library (matched by name, case-insensitive).
- Errors - any rows that failed, with the row number and reason.
Duplicate handling
Brikly checks each ingredient name against your existing library (case-insensitive). If an ingredient with the same name already exists, the row is skipped - it will not create a duplicate or overwrite the existing record.
Skipped duplicates are counted separately in the results summary. They are not treated as errors.
Suppliers
Suppliers referenced in your CSV are matched by name. If a supplier does not already exist in your Brikly account, it is created automatically during the import. You can review and update supplier details later in CostingBrik > Suppliers.
After importing
Once your import is complete:
- Review categories - check that ingredients are in the right categories. You can bulk-reassign categories from the ingredients list.
- Check base units - Brikly sets base units automatically (grams for weight, ml for volume, unit for count). Adjust in Managing Units if needed.
- Link to recipes - your imported ingredients are now available in the recipe builder.
- Verify pricing - spot-check a few items to make sure pack costs and per-unit costs look correct.
If you have hundreds of ingredients, consider importing in batches - one category or supplier at a time. This makes it easier to review and catch any issues.