Bring your products and ingredients into Digital Florists using spreadsheets.
Digital Florists imports product and ingredient data from spreadsheets so you can set up your shop, add a seasonal range, or move from another system in bulk.
This page covers features gated by Admin-tier permissions — typically Settings access. Admins have these by default; your administrator can adjust who has them in Settings > Team.
Ingredient imports support event work. Product imports and shop migrations are included with Orders.
Before importing products, make sure your categories, tax rates, and occasions are set up. The importer matches these by name and rejects rows that reference values that don’t exist.
The product import is a step-by-step wizard. Nothing is saved until you review the changes and confirm.
1
Choose what you want to do
Go to Settings > Products and click Import Products. You’ll see three options:
Add new products — you’re creating products from scratch using a spreadsheet
Update existing products — you want to change prices, descriptions, or other details on products you already have
Prepare an existing export — you have a product file from another platform (like Shopify) that needs converting first
2
Download a template
For new products, pick Blank Template or Worked Example (sample data included). To update existing products, click Export Products For Update for a spreadsheet pre-filled with your current catalogue. You can filter by category if you only want to update part of your range.
3
Fill in your spreadsheet
Open the template in Excel, Google Sheets, or Numbers. See the column reference below for what each column means.The key concept: each row in the spreadsheet is one variant (size), not one product. If a product comes in three sizes, you need three rows, one per size. See understanding variants below for a worked example.
4
Upload and preview
Back on the import page, drag your file onto the upload area (or click to browse). The file must be a .csv or .xlsx file, no larger than 10 MB.Click Preview Changes. Digital Florists reads your file and shows what will happen: which products are new, which are being updated, and what’s changing. Nothing is saved yet.
5
Review and confirm
Check the summary at the top: how many products, how many are new, how many variants, and any warnings.Below the summary you’ll see a detailed list of every change, grouped by product. For updates, it shows the current value and the new value side by side so you can spot anything unexpected.When you’re happy, tick the confirmation checkbox and click Import Products.
First time? Download the Worked Example in step 2. It shows you how to format a product with multiple sizes, categories, and pricing. Delete the sample rows and replace them with your own data.
This is the most important concept to get right. In Digital Florists, a product is the thing your customer sees (e.g., “Red Rose Hand-Tied”), and a variant is a specific size or version of it (e.g., Standard at £35, Large at £50).Each row in your spreadsheet is one variant, not one product.Here’s what a product with three sizes looks like in your CSV:
Product Code
Product Name
Categories
Variant Name
Price
Cost Price
ROSE-HT
Red Rose Hand-Tied
Bouquets, Birthday
Standard
35.00
12.00
ROSE-HT
Red Rose Hand-Tied
Bouquets, Birthday
Large
50.00
18.00
ROSE-HT
Red Rose Hand-Tied
Bouquets, Birthday
Luxury
75.00
25.00
Notice that all three rows share the same Product Code (ROSE-HT). That’s how Digital Florists knows they’re sizes of one product, not three separate products.And here’s a product that only comes in one size:
Product Code
Product Name
Categories
Variant Name
Price
Cost Price
CHOC-BOX
Chocolate Box
Add-ons
Standard
12.00
6.00
What stays the same across rows: Product Code, Product Name, Categories, Description, Occasions, and other product-level details must be identical on every row that belongs to the same product. If they differ, the import will show a warning.What changes per row: Variant Name, Price, Cost Price, Stock, Barcode, Tax Rate, and variant images can be different on each row, that’s the whole point of variants.
If your spreadsheet included image URLs (in the Attachment column), those images are downloaded in the background. You’ll see a message saying how many are being processed
Go to Products to see your updated catalogue
After importing, you’ll need to reset the product cache on your POS for the new products to appear at the till. Go to the POS, tap the cog icon, and select Reset Product Cache.
Here’s every column you can use. Only the ones marked required need a value for new products. Everything else is optional.
The column order in your spreadsheet doesn’t matter. Columns are matched by name, not position. You can rearrange, add, or remove optional columns however you like.
A unique code for the product (like a SKU). If you don’t have codes, you can use the product name. When multiple rows share the same Product Code, they become variants of the same product.
Product Name
Yes (for new products)
The name customers see, like “Red Rose Hand-Tied”.
Categories
Yes (for new products)
Which categories the product belongs to. The first category listed is the primary category used for filtering and display. Add more with commas (e.g., Bouquets, Birthday). For subcategories, use > (e.g., Flowers > Roses). Maximum 5 categories. If a category doesn’t exist yet, it’s created automatically. Important: you can only assign products to the most specific (deepest) category in a tree. For example, if “Add-ons” has subcategories like “Chocolates” and “Candles”, use Add-ons > Chocolates rather than just Add-ons.
Variant Name
Yes (for new variants)
The size or version name, like “Standard”, “Large”, or “Luxury”. If the product only has one size, use “Standard” or “Base”.
Price
No (defaults to 0)
The retail price including tax.
Cost Price
No (defaults to 0)
What you pay for it. Useful for margin reporting.
Tax Rate
Yes (for new variants)
The tax rate to apply. Enter the name of a tax rate you’ve already set up (e.g., “Standard” or “Reduced”). If you have a default tax rate configured in Settings, you can leave this blank.
Barcode
No (auto-generated)
A barcode for POS scanning. If your product already has a barcode, enter it here. For bespoke items or anything without one, leave it blank and one is generated for you.
Description
No
A product description. You can use basic formatting like bold and bullet points.
Occasions
No
Tag the product with occasions like Birthday, Romance, or Sympathy. Separate multiple occasions with commas. These must match occasion names you’ve already set up.
Visible
No
Yes or No. Whether the product appears to staff. Defaults to Yes.
Age Verification
No
Yes or No. Turn on for items like champagne where your driver needs to check ID.
Designer
No
A designer name.
Brand
No
A brand name.
Stock
No
How many you have in stock. Defaults to 0.
Stock Control
No
Yes or No. Whether Digital Florists tracks stock for this variant. Defaults to No.
Product Kind
No
Enter gift_card to mark the product as a gift card, or standard for a normal product. For updates, leave the cell blank to keep the current value or enter __CLEAR__ to reset it to standard. The kind cannot change once the product has been sold.
Attachment
No
A web link (URL) to the product image (shared across all variants). Downloaded automatically in the background.
Attachment Alt Text
No
Descriptive text for the product image.
Variant Attachment
No
A web link to a variant-specific image. Use this when different sizes have different photos. This is a separate column from Attachment: Attachment is the product image, Variant Attachment is for the individual size.
These columns appear when you export your existing products for updating:
Column
Required?
What it does
Match Product Code
Yes (for updates)
Identifies which existing product to update. Filled in automatically when you export your products.
Match Barcode
Yes (for updates)
Identifies which existing variant to update. Also filled in automatically on export.
When updating existing products, blank cells keep the current value. If you want to clear a field (like removing a description), type __CLEAR__ in that cell. Get this wrong and a half-filled spreadsheet won’t wipe the missing fields the way you might expect.
If your products don’t have codes and you want multiple rows to become variants of the same product, use the Product Group column. Give all the rows for one product the same group name (anything you like, “My Bouquet”, “Group A”, etc.) and Digital Florists links them together.
Excel can corrupt long barcodes. It converts them to scientific notation (e.g., 5012345678901 becomes 5.01235E+12), or treats values starting with + or = as formulas. Use the Export Products For Update XLSX file when updating, or format the barcode column as Text in Excel before pasting. Google Sheets handles this without the workaround.
If you have a long list of stems, sundries, or materials to add to your ingredient library, you can import them from a spreadsheet instead of adding them one by one.
1
Open the import
Go to Events > Ingredients to open your Ingredient Library, then click Import CSV.
2
Download a template
On the screen that opens, choose one of the template types and click Download template:
Empty — just the column headers
Sample — headers with two example rows
My ingredients — pre-filled with your existing ingredients (useful if you want to update prices in bulk). You can filter by category if you only want to export a subset.
3
Fill in your spreadsheet
The only column you must fill in is Name. Everything else is optional. See the ingredient columns below for details.
4
Try a dry run first
Upload your file and tick the Dry run checkbox before clicking Import. This shows you what would happen (how many ingredients would be created, updated, or skipped) without saving anything. It’s a safe way to check your file is correct.
5
Import for real
Once you’re happy with the dry run summary, untick the dry run checkbox and click Import again to save the changes.
Ingredients are matched by name and category. If you import an ingredient called “Red Naomi Rose” in the “Roses” category and you already have one with that exact name in that category, it updates the existing one rather than creating a duplicate.
The ingredient name (e.g., “Red Naomi Rose”, “Eucalyptus”, “Cellophane”). Rows with no name are skipped.
Category
No
Which category to file it under (e.g., “Roses”, “Foliage”, “Sundries”). If the category doesn’t exist, it’s created automatically.
Cost
No
What you pay for it (net price).
Price
No
What you charge for it (net price). If left blank but Cost and Markup are provided, the price is calculated automatically.
Markup
No
A multiplier for calculating price from cost. For example, 1.6 means the price is 1.6 times the cost.
Colours
No
Comma-separated colours, like blush, ivory or red, white.
Attachment
No
A web link (URL) to an image of the ingredient. Downloaded automatically in the background.
Is Hire
No
Yes or No. Whether this is a hire item (like a vase or urn) rather than a consumable.
Stock Quantity
No
How many you have. Only used for hire items.
Enforce Stock
No
Yes or No. Whether to enforce stock limits. Defaults to Yes.
Archived
No
Yes or No. Set to Yes to archive an ingredient.
Accepted file types: CSV, TXT, or XLSX (Excel).
Unrecognised columns are safely ignored. Column names are also flexible with spacing and capitalisation (e.g., “stock quantity”, “Stock_Quantity”, and “STOCK QUANTITY” all work).
You don’t have to fill in both Cost and Price. If you provide a Cost and a Markup but leave Price blank, Digital Florists calculates the price for you. For example:
Cost: £0.50, Markup: 1.8 = Price: £0.90
Cost: £1.20, Markup: 2.0 = Price: £2.40
If you’re updating an existing ingredient and it already has a markup saved, that saved markup is used to calculate the new price from your updated cost.
If you’re moving to Digital Florists from another platform, the Data Migration tool converts your existing data into a format you can import.Go to Settings > Advanced > Data Migration.
Export your products from Shopify as a CSV file, then upload it here. Your file is converted from Shopify’s column format into the Digital Florists product import format.You can choose whether to include unpublished/inactive products.Once converted, download the resulting file and upload it through the product import wizard.
Strelitzia
Two options are available:
Products — converts your Strelitzia product export into the Digital Florists format. Download the result and import it via the product import wizard.
Customers — imports your Strelitzia customer list directly. Customer records are deduplicated and tidied during the import.
FloristPro
Upload your FloristPro product export (usually a file called something like designs.xlsx or designs.csv). It’s converted into the Digital Florists format. Download the result and import it via the product import wizard.Accepts CSV or Excel (XLS/XLSX) files.
For Shopify and FloristPro, the migration tool produces a converted CSV file that you then upload through the normal product import wizard. You still get the full preview and review step before anything is saved.
If you use Florist Toolbox to design your arrangements, you can paste a Toolbox code directly into Digital Florists to import a product’s ingredients, labour, and pricing.
1
Copy the export code from Toolbox
In Florist Toolbox, copy the export code for your arrangement.
2
Open the product in Digital Florists
Go to the product you want to update, or create a new one.
3
Open the Toolbox import
On a new product, click Import full product from Florist Toolbox. To pull ingredients into an existing variant, use Import ingredients only on the variant editor.
4
Paste the code and import
Paste the code and click Import.
5
Review ingredient matches
Ingredient names are matched to your ingredient library. Any ingredients that aren’t in your library yet are created automatically.
6
Confirm
Review the matched ingredients and pricing, then click Confirm import.
Yes. Use the Update existing products option in the product import wizard. Export your current products first, make changes in the spreadsheet, then re-upload. The Match columns identify the right products to update.
What happens if my import has errors?
Your file is checked before anything is saved. If there are problems (missing required fields, invalid data, duplicate barcodes), you’ll see a clear error message telling you which row has the issue and what’s wrong. Fix the errors in your spreadsheet and try again.
Can I import Excel (.xlsx) files?
Yes. Both products and ingredients accept XLSX files as well as CSV. When updating existing products, use the XLSX export directly. It preserves barcodes correctly without the formatting issues that CSV files can have in Excel.
Will importing overwrite my existing data?
For products: only fields with values in your spreadsheet are updated. Blank cells keep the current value. To explicitly clear a field, enter __CLEAR__ in that cell. For ingredients: matching is done by name and category. Existing ingredients are updated, new ones are created.
Is there a row limit?
Product imports are limited to 10,000 rows per file. If you have more, split your file into batches. Ingredient imports have no hard row limit but are still subject to the usual upload size limit.
What if I import the wrong file?
For products, you are shown a full preview of every change before anything is saved. If the import fails part-way through, no partial changes are kept.For ingredients, changes are saved as they’re processed, so tick the dry run checkbox first to preview what will happen before committing.
I'm getting an error about a category containing subcategories
Products can only be assigned to the most specific (deepest) category in a tree. If “Add-ons” has subcategories like “Chocolates” and “Candles”, you need to use Add-ons > Chocolates in the Categories column rather than just Add-ons. Use the full path with > to point to the right subcategory.