Import guide
Bring your wine list into Cave from a spreadsheet, from a Cave export, or from CellarTracker. The file is read on your device and is never sent anywhere.
Download the example file (cave-example.csv). It has ten lines, three racks and one area, and imports cleanly.
What you can import
- A sheet of your own, made in Excel or Numbers: one line for each wine and each place it is stored in.
- A Cave export (Settings > Data > Export CSV). It imports back into the same places, which makes it a backup you can restore.
- A CellarTracker list (the CSV you download from CellarTracker). Places are not imported; see “What is not imported” below.
Step by step
1. Prepare the columns
Put the column names in the first row of your sheet, one column for each piece of information (see the table below). Only Vintage and Producer are required. Each following row is one wine, with its Quantity of bottles. To place bottles, add Rack and Row columns.
2. Save as CSV
In Excel: File > Save As, then choose CSV UTF-8 (Comma delimited). In Numbers: File > Export To > CSV. UTF-8 keeps accents intact.
3. Send the file to your iPhone
Use AirDrop, iCloud Drive, a mail attachment or any other way to put the file in the Files app.
4. Start the import
In Cave, open Settings > Data > Import CSV and choose the file. (Under the button, File format explains the columns inside the app.)
5. Read the preview
Nothing is added yet. The Import preview shows how many wines are new (+), how many add bottles to wines you already have (=), and how many lines are skipped (!), each with its reason in Skipped rows. Check before importing lists what needs your attention: bottles that would be left without a place, racks that change, duplicates. A Places section lists the racks and areas that will be created or filled.
6. Choose or create the cellar
The Into row shows the cellar that receives the bottles. Pick one, or “New cellar” if you have none. If your file has a Cellar column, each line goes to the cellar it names (created if it does not exist) and, if every line names one, the row says “from the file”. Lines without a Cellar value go to the cellar you picked.
7. Import, then undo if needed
Tap the Import button (for example “Import 46 bottles into Maison”). A message with an Undo button stays for 10 seconds (30 seconds for more than 50 bottles). After that, Settings > Data > Undo last import stays available until your next import or until you quit Cave. Undo removes the imported bottles, the wines that import created, and the racks, areas, rows and cellars it created when they are still empty. Racks it had enlarged go back to their size.
The columns
Column names are not case sensitive, and accents, spaces, _ and - do not matter (Cuvée or drink_from both work). Columns you do not need can be left out, and unknown columns are ignored.
| Column | Also accepted | Example | Notes |
|---|---|---|---|
| Vintage (required) | 2019, NV | A year from 1800 to 2200. NV (or 1001) means non-vintage. An empty or other value skips the line (“Vintage missing”). | |
| Producer (required) | or a Wine column | Domaine Exemple | If there is no Producer column, the Wine text is used (a leading year or NV is removed). An empty producer skips the line. |
| Cuvee | Les Vieilles Vignes | The wine’s name next to the producer. | |
| Colour | Color, Type | Red | Write it in your own language: Red, White, Rose, Sparkling, Sweet (or Dessert), Fortified, or the same words in French (Rouge, Blanc, Rosé, Effervescent, Doux, Muté...), German, Spanish, Italian, Chinese, Japanese, Korean or Arabic. Case and accents do not matter. A text containing Sparkling, Fortified or Sweet wins, so “White - Sweet” is sweet. An empty Colour is read as red. A word Cave does not know is also read as red, and the preview tells you (“will be red: colour not understood”); you can change the colour afterwards. |
| Appellation | SubRegion | Chablis | SubRegion is used when Appellation is empty. |
| Country, Region | France | ||
| Designation | Classification | Premier Cru | |
| Varietal | Grapes | Pinot Noir | |
| Quantity | 6 | Number of bottles, 1 to 1000. Empty means 1. Zero, a negative number, text or more than 1000 skips the line (“No bottles”). | |
| Size | volume_ml | 750, 75cl, 1.5L, Magnum | Empty or unreadable means 750 ml. A plain number of 50 or more is millilitres, a smaller one is litres. Named sizes: Piccolo, Half or Demi, Magnum, Jeroboam, Double Magnum. |
| Price | purchase_price | 48.50 | A number per bottle. Currency signs are ignored. 1,250.50 reads as 1250.50 and 12,50 as 12.50. |
| Store | purchase_place | Wine shop | Where you bought it. |
| BeginConsume, EndConsume | drink_from, drink_until | 2025, 2032 | Your drink window, as years from 1900 to 2200. Other values are ignored. keep_until is read the same way. |
| Cellar | Home, Cave, Maison | Maison | Only if you have several homes or cellars. Matched by name without case or accents. |
| Rack | Casier | Rack A | The name of the rack, or of an area. Cut after 40 characters. |
| Row | Shelf, Rangee, Rang, Etagere | 3, Row 3, R3, Top | A number from 0 to 40, or a name. See “How places work”. |
| Slot | Position, Emplacement | 4, Slot 4, S4, #4 | Optional. A number from 1 to 40. |
A line that does not have the same number of cells as the header (for example an unclosed quote or a missing comma) is skipped as “Malformed row”. Put a cell that contains the separator between double quotes, which Excel and Numbers do for you.
How places work
- Put the place on the same line as the wine. A line with Quantity 6, Rack A, Row 2 puts 6 bottles in row 2 of Rack A.
- Racks, rows and cellars named in the file that do not exist yet are created. A rack that already exists in the cellar is reused (names are compared without case or accents); missing rows are added at the end.
- Row numbers may start at 0. In a new rack the file then gets a row 0, then row 1, and so on. On a rack you already have, a row 0 is added in front.
- Same size for all rows. In a new rack without slots, every row holds as many bottles as the fullest row of the file, up to 99 per row. Bottles that do not fit are imported without a place, and the preview tells you. A row over 40 bottles gets a reminder to check the Quantity column.
- Slots. If the file gives a Slot, the rack has slots: each row gets as many slots as the highest slot or the fullest row (at most 40). A line of several bottles takes the next slots in turn; if a slot is taken, the next free one is used.
- Areas. A rack name with no Row (and no Slot) on any of its lines is an area: a loose place such as a floor or boxes, holding any number of bottles.
- A line with a Rack but no Row, in a rack that has rows, is imported without a place. The same applies to a Row or Slot with no Rack, or to a value Cave cannot read (a row above 40, for example). The preview warns you before anything is added.
- An existing area cannot receive rows, and an existing rack cannot receive lines without rows. Slot columns are ignored for an existing rack that has no slots.
Worked example
The example file contains these place lines (other columns left out):
| Wine | Quantity | Rack | Row | Slot |
|---|---|---|---|---|
| Domaine Exemple, Les Vieilles Vignes 2019 | 6 | Rack A | 1 | |
| Domaine Exemple, Chablis 2020 | 3 | Rack A | 2 | |
| Chateau Modele 2015 | 12 | Rack A | 2 | |
| Chateau Modele, Reserve 2018 | 6 | Rack B | 0 | |
| Maison Specimen, Brut NV | 2 | Rack B | 1 | |
| Cave Demo, Grand Vin 2016 (Magnum) | 1 | Rack B | 1 | |
| Domaine Fictif, Riesling 2021 | 2 | Rack C | 1 | 1 |
| Domaine Fictif, Gewurztraminer 2021 | 1 | Rack C | 1 | 5 |
| Domaine Exemple, Rose de Saison 2022 | 12 | Floor | ||
| Domaine Exemple, Doux 2017 (375 ml) | 1 | Floor |
The preview shows four places:
- Rack A: 2 rows, 21 bottles. Row 2 is the fullest (3 + 12 = 15), so both rows hold 15.
- Rack B: 2 rows, 9 bottles. Row 0 comes first (6 bottles), then row 1 (3). Both rows hold 6.
- Rack C: 1 row of 5 slots, 3 bottles, in slots 1, 2 and 5.
- Floor: an area with 13 bottles, because its lines have no row.
Tips and common problems
- “This does not look like a CellarTracker list export”: the first row has no Vintage column, or no Producer or Wine column.
- A colour is read as red: Check before importing lists the values Cave did not understand. Use one of the colour words above, then import again (or change the colour in Cave afterwards).
- Accents look wrong: save as CSV UTF-8. Cave also reads Windows and Mac text files, but UTF-8 is the safest.
- A line is skipped: the preview names the reason under Skipped rows (Vintage missing, Empty producer, No bottles, Malformed row, Pending, Already imported, Already in Cave, Not in the cellar).
- Bottles left without a place: look at Check before importing; usually a Row is missing for a rack.
- Importing the same file twice: the preview tells you when you already imported a file with the same name, size and number of lines on this device. Bottles that are already in the rack or area the file names are skipped. The switch Add them anyway (duplicates) imports them regardless. A Cave export carries a bottle identifier, so bottles already in Cave are skipped. A CellarTracker line already imported is skipped as “Already imported”.
- Same wine as one you already have: wines are matched by producer, cuvee and appellation (without case or accents), and the bottles are added to the existing wine.
- Limits: a file of at most 5 MB and 5000 lines, at most 1000 bottles on one line. Bigger files must be split.
What is not imported
- CellarTracker Location and Bin: they are free text. The preview says so; place the bottles in your racks afterwards. Add Rack and Row columns to your file if you want places.
- CellarTracker Journal (notes and tastings), and ratings and notes columns of any file.
- CellarTracker lines marked Pending (still on order).
- From a Cave export: bottles that are drunk or given away are not restored.
- Label photos.
Privacy
The file is read on your device. Cave has no server, so the file and your list are not sent to us or to anyone else. If you use iCloud, your cellar then syncs through your own account like the rest of your data. See the privacy policy.