Import products

After reading this, you'll be able to import your product catalog into Univents via an Excel template — including tags, location links, accounting accounts, availability, recipes and bundles — and know how a repeated import safely updates existing products instead of duplicating them.

You can bring your entire product catalog into Univents via an Excel file — using a guided wizard right inside the inventory, no support request needed. This is especially useful during initial setup when you want to create many items, recipes, and bundles at once. The same wizard also works for contacts and events — see the overview article Import events, products and contacts via Excel for the mechanics that apply to all three.

Starting the import

  1. Go to Inventory in the menu.
  2. Click Import in the top right corner.
  3. The wizard guides you through five steps: Template → Upload → Mapping → Review → Import.

Step 1: Download the template

Click Download template (.xlsx) to get the Excel template. It already has the right column headers, a few example rows, and a Notes sheet listing the allowed values for every column. You don't have to start from scratch — just fill your products into the existing rows.

Already have your own list with different columns? That works too — in the next step you'll map your columns to the target fields manually.

Step 2: Upload the file

Drag your Excel or CSV file into the drop zone or pick it via the file dialog. Supported formats are .xlsx, .xls, and .csv, up to 10 MB and up to 5,000 rows per import.

Step 3: Map columns

The wizard detects your column headers automatically and suggests a mapping. Only two fields are actually required:

ColumnRequiredNote
NameYesProduct name as shown on the booking page and invoice
Price netYesNet price as a number
TypeNoArticle, Recipe, Bundle, Rental, Service, Digital Product — the German values (Artikel, Rezept, Paket, Verleih, Dienstleistung, Digitales Produkt) work too; defaults to Article if left blank
Billing modelNoe.g. per piece, per guest, per hour
CategoryNoCreated automatically if it doesn't exist yet
Tax rateNoDefaults to 19% if left blank

Every other column (SKU, Supplier item number, description, allergens, stock, minimum stock, dimensions, Kitchen Monitor production fields, and more) is optional — the full list with allowed values is in the Notes sheet of your downloaded template. If you leave the stock field empty for a product, it's automatically created with unlimited stock.

Fill in the Minimum stock column and the product automatically shows up in the reorder view once its stock drops below it — handy for setting the reorder point across an entire catalog at once instead of opening every product's form individually. See Minimum stock & reorder for details.

Unit, content and package — which is which?

A product has exactly three levels, and Univents never converts between them automatically (no automatic ml↔l or g↔kg):

  • Unit — what "1" of this product is: 1 g, 1 ml, 1 bottle, 1 piece. Purchase price, stock, material view, packing list, reorder and the unit on quotes and invoices all refer to it.
  • Content per unit (new, 2026-09-29) — how much a single unit holds, e.g. 1 bottle = 750 ml. Only relevant if recipes should count this ingredient in millilitres or grams instead of bottles — see Creating & using recipes. Blank = recipes keep counting in the unit, as before.
  • Package — the packaging you buy in, plus how many units it holds (e.g. a crate of 6 bottles). It is only used to enter the purchase price per package and to round packing, production and order lists up to whole packages.
ColumnWhat it controlsExample
Unit (formerly: Alternative unit)The product's unit (product form: Unit). Blank = Stück (piece). The old column name still worksg, ml, Flasche (bottle), Portion
Content per unit + Base unitThe content (product form: Content per <unit> and Base unit). Both columns belong together — if only one is filled, the row imports without content and a note appears in review750 + ml for a bottle
Package (formerly: Packaging unit) + Units per package (formerly: Packaging quantity)The package (product form: Package and Units per package). Units per package counts in the unit. Never appears on invoices. The old column names still workKiste (crate) + 5000 with unit g (limes); Kiste + 6 with unit Flasche (wine)
Cost price netPurchase price per unit, up to 6 decimal places0.000645 (per ml), 7.50 (per bottle)
Cost price per packagePurchase price for one whole package — Univents divides it by the units per package and stores the price per unit. Needs units per package23.05 for a crate of 5000 g → €0.00461 per g

Sample row in the template: Prosecco — unit Flasche, content per unit 750, base unit ml, package Kiste, units per package 6.

The old column names (Alternative unit, Packaging unit, Packaging quantity) keep working as aliases — an existing import file doesn't need to be changed.

The wizard's mapping step also still offers the target Unit (legacy) — that is the old, hidden unit column from templates before 24.09.2026; leave it empty unless you deliberately want to maintain it. If an old file carries both columns, Unit and Alternative unit, Alternative unit counts as the unit, as before.

Purchase price per unit or per package

You can give the purchase price in two ways — exactly like in the product form:

  • Cost price net is the price of one unit. If you count in grams or milliliters, that means small amounts; the import keeps up to 6 decimal places (€0.000645 per ml stays 0.000645, not 0.0006). Selling prices are still rounded to 4 places.
  • Cost price per package is the price on your supplier's invoice for a crate, carton or sack. Example, limes: unit g, package Kiste (crate), units per package 5000, cost price per package 23.05 → Univents stores €0.00461 per g and keeps the €23.05 as the per-package entry. When you open the product in the form afterwards, its purchase price is set to "per package".

The rules in short:

  • If the row has no units per package (or it is 0), the cost price per package is ignored and the review step shows a note. If the row also has a cost price net, that one is used.
  • If both columns are filled and don't match, the cost price per package wins — it's the more precise figure. The review step points out the difference. If they match (€7.50 per bottle, €45.00 per crate of six), there's no note.
  • On an existing product, the purchase price is by default only filled in if it is still empty, like every other value. A purchase price you maintained per package in the form is never switched back to "per unit" by a repeated import.

Importing content per unit

If recipes should count this ingredient in millilitres or grams instead of the unit, fill in Content per unit and Base unit together — e.g. 750 and ml for a bottle. Both columns belong together:

  • If only one of the two columns is filled, the review step shows the note "Content per unit and base unit belong together", and the product is created without content — the row itself is not skipped, only the content stays empty.
  • On an existing product, the content is by default only filled in if it isn't already set, like every other field (different with the option “Overwrite existing values with the file”, see below).
  • If you leave both columns blank, nothing changes — the ingredient keeps counting in its unit, as before this update.

Importing recipes and bundles together

The product template includes a second sheet, Rezeptur & Bundles (recipe & bundles). There, you link ingredients and bundle components to their parent product — no need to rebuild those relationships manually after the import.

ColumnRequiredExample
ProductYesBeef Wellington
ComponentYesPuff pastry
QuantityYes0.2
KindYesRezeptur (recipe) or Bundle

You reference the product and component by name or SKU — both sides must already exist in Univents or be included in the same import. If your file contains rows on this sheet, the wizard shows a "Recipe & bundle links detected" note automatically during the Mapping step.

No unit column for ingredients: on this sheet, an ingredient's quantity always counts in the unit of its own product (the Unit column, formerly "Alternative unit") — not in its package, not in its content per unit, and not in a per-row value. 8 for an ingredient with unit g means 8 g. Set the unit once on the ingredient product (see Creating & configuring products) and it's correct in every recipe that uses that ingredient. If the ingredient has a content per unit set and you want it counted in ml instead, enter that quantity directly in the app's recipe editor — this import sheet only knows quantities in the unit.

Importing tags

The Tags column works the same way as for contacts and events: enter several tags comma-separated in one cell, e.g. Hauptgang, Fleisch. A tag that doesn't exist yet is created automatically on import. For an existing product, the tags from the file are added, never replaced — if a product already has three tags and your file only mentions one of them, the other two stay in place.

Linking locations

The Locations column links a product to one or more venues — comma-separated, e.g. Hauptküche, Eventscheune. The locations must already exist in Univents; an unknown name isn't created automatically, it's flagged as a note during review and that link is skipped.

By default, a location is linked as "available". If the product should be a required item at that location — meaning it gets automatically booked into every event held there — append (Required) to the name: Eventscheune (Required). Use this deliberately: an existing link is never upgraded to "required" on a repeated import, even if your file now says so — location links are only added, never changed.

Accounting, availability, automation and ticketing

A few more optional columns cover four areas of the product that used to be reachable only through the inventory form:

AreaColumnsExample
AccountingDebit account, Credit account, Cost center, Revenue account4200, 8400, Bar, 8100
AvailabilitySeason from, Season to, Available from (time), Available to (time), Available weekdays01.05.2026, 30.09.2026, 08:00, 18:00, Monday, Tuesday, Wednesday
AutomationAuto-create shifts, Event duration as shift duration, Auto-send quote, Auto-send order e-maileach yes/no
TicketingIs a ticket, Ticket capacityno, blank

Leaving "Available weekdays" blank means every day — it's the absence of a restriction, not a restriction of its own. The exact allowed values for each column are, as always, in the template's Notes sheet.

Ticket capacity is only applied when the product is already marked Is a ticket — on a product that isn't (yet) a ticket, a capacity on file would otherwise have no effect, because no ticketing flow reads it.

Step 4 & 5: Review and import

Before anything is saved, the Review step shows you, row by row, whether it will be created, updated, or skipped — and, in the Notes column, what's wrong with a row. If not a single row passes, the review offers Back to column mapping (most often a column is mapped to the wrong field) and Upload corrected file right there. Rows with errors don't block the rest of the import — you can download the error list as an Excel file and fix the affected rows separately. Once you confirm the review, the actual Import runs with a progress indicator; at the end you get a report with the number of newly created, updated, and skipped products, plus the recipe/bundle links that were created.

Repeating an import safely

Uploading the same file again doesn't create duplicates: Univents recognizes existing products by their SKU (or, if no SKU is present, by name) and by default only fills in missing fields — existing values are not overwritten unless you explicitly choose the option. That means you can refine a list iteratively and re-upload it multiple times without losing or duplicating existing products.

Important for corrected price lists: without the option, the import does not change a value that is already filled in — not even the selling price. If your file has a different price than the product does, the review step tells you row by row ("Different in your file: Price net …") and the existing value stays as it is. If you want your file to win, use the options in the next section; alternatively, correct single values directly on the product in your inventory.

Overwrite existing products with your file

Do you maintain your catalog in Excel and treat that file as the source of truth? Then the Review step offers two options. Both are off by default — without any action on your side, the import keeps filling in empty fields only.

  • Overwrite existing values with the file: On an existing product, a filled cell replaces the stored value if it differs. The review shows you per row what will be overwritten — for a name change as “old → new”. The name is only changed if the product was found via its item number (SKU), not if it was found by name. A changed selling price also applies to open drafts that haven't been sent yet of quotes and invoices.
  • Empty cells clear the field (only together with the first option): An empty cell in a mapped column deletes the stored value. Excluded are name, price, tax rate, category, allergens and dietary notes, and the ticket quota — these fields stay as they are when the cell is empty. Columns you haven't mapped always stay untouched.

What the import never changes, even with the options: item number, images, switches (e.g. Is a ticket, automations, kitchen production, availability switches), price basis (net/gross), stock and type. Tags, locations and bundle components are still only added to.

The ticket quota is not overwritten even with the option — an empty quota is only filled in. The import never writes a package quantity of 0.

What the review shows you: selling and purchase price as “old → new”, a warning with a counter if a price would be set to 0, removed allergens, and a note if the formatting of a description would be lost (the file only contains plain text).

When a new product is created or a row isn't imported:

  • If the import finds a product only by name, and the file and the stored product have different item numbers, a new product is created — nothing is overwritten.
  • If more than one row of the file hits the same product, every further row is an error (“appears more than once”) and isn't imported.
  • If your inventory holds several products with the same number or name, the row is an error (“ambiguous”) — clean up the inventory first.

Check the review carefully before importing: it is your preview of everything that will be overwritten or cleared.

The same applies to the automation and ticketing columns (e.g. Is a ticket, Auto-create shifts): they're also never changed automatically on an existing product — if your file disagrees with the stored value, the review step flags it instead of silently ignoring it.

Frequently asked questions

My product comes out of the kitchen — type Rezept or the production column? Both, with different jobs: type Rezept turns the product into a recipe with an ingredient list (sheet Rezeptur & Bundles). Production ja/yes additionally unlocks the Kitchen Monitor fields (production lead time, shelf life, production category). A dish your kitchen produces itself gets type Rezept and production yes. An Artikel (item) with production yes stays a regular item — it just shows up in kitchen production as well.

What's the difference between "Type" and "In-house or external production"? Two different things that are easy to mix up. Type says what the product is: Article, Recipe, Bundle, Rental, Service or Digital Product. In-house or external production (called "Production type" in older templates) only says whether your kitchen makes the product itself (In House) or buys it in (External) — in the product form, that field is called "Production type". If the in-house/external column contains a product type such as Recipe or Rental, the review step says exactly that: map the column to Type in the column mapping instead.

My kitchen thinks in grams or milliliters — where do I enter that? Two ways, depending on what you want. If the ingredient should be tracked entirely in grams or milliliters (sales, stock, purchase price, recipe — everything), enter g on the ingredient product itself, in the Unit column (formerly "Alternative unit"; product form: Price & stock → Unit; not in the Rezeptur & Bundles sheet). The recipe editor, Kitchen Monitor and Production List then show that ingredient in grams throughout. You still enter the quantity itself (e.g. 120) in the "Rezeptur & Bundles" sheet.

If instead the ingredient should be sold and stocked by the unit (e.g. bottle) but recipes should still count in millilitres, set Content per unit + Base unit instead (see above, e.g. 750 + ml) — the unit stays "bottle" for sales and stock, and you enter the recipe quantity in ml directly in the app's recipe editor (the "Rezeptur & Bundles" import sheet only knows quantities in the unit).

If you buy in crates, add the package too: package Kiste, units per package 5000. You can then give the purchase price per crate directly — in the Cost price per package column or later in the product form. Univents breaks it down to the price per gram (€23.05 per crate of 5,000 g = €0.00461 per g).

Do I need to create the category in Univents beforehand? No. If a category doesn't exist yet, the import creates it automatically.

What happens if a row has an error? Only that row is skipped — the rest of the file imports normally. The review step shows you in advance which row is affected and why.

Can I update existing products through the import? Yes. The import recognizes existing products by SKU or name and by default fills in only empty fields. With the option Overwrite existing values with the file in the review step, filled cells also replace stored values, the selling price included; the second option Empty cells clear the field deletes values via an empty cell. Without the options, the review step lists before the import which entries differ and will therefore stay unchanged.

What file format is expected? .xlsx, .xls, or .csv, up to 10 MB and up to 5,000 rows. Numbers with a comma decimal separator, as well as German and English values (e.g. "pro Stück" or "Per Piece"), are recognized automatically.

Univents newsletter

Product news and practical tips for event and catering businesses. Roughly once a month, no more.

Import products