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.
- Restored - items you had previously removed that have been brought back, with their supplier price updated from the CSV. This line only appears when a row restored something.
- Skipped - rows that matched something already in your library and were not imported. They are counted together as duplicates, see Duplicate handling below.
- Errors - any rows that failed, with the row number and reason.
Duplicate handling
Brikly checks each name in your CSV against your existing library (case-insensitive) and decides what to do with the row from what it finds:
- The item is already in your library. The row is skipped. Nothing is created and nothing is overwritten, so an import cannot quietly change a price you have already set.
- You removed the item earlier. The row brings it back rather than adding a second copy. The item is restored in place, its supplier offering is restored with it and repriced from your CSV, and any recipe still holding a line for that item starts costing again.
A restored item keeps the details your CSV does not carry: its own category, unless the CSV names one, and, for ingredients, its density and the weight or volume it already had recorded per unit. An ingredient you had marked as Free comes back free, so it keeps showing as Free rather than taking the price in your CSV. A consumable keeps the base unit it was set up with, and comes back uncategorised where the category it used to sit in has since been deleted. To change a restored item's weight or volume per unit, edit it after the import rather than relying on the CSV columns.
Two situations are still skipped even though the item is not live:
- The item is location-specific rather than shared. Brikly leaves the row alone instead of creating a shared copy of something that only ever existed at one site.
- The supplier link is still live. The item was removed but its link to the supplier named in your row was not, so there is nothing for the import to restore.
Skipped rows 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.