---
title: CSV Import / Export
description: "# Quick Start 1. Enable the CSV Import feature. 2. Click CSV Import…. 3. Export the templates you need. 4. Translate the templates. 5. Import the completed templates. 6. Check your translations. ## Enable CSV Import Enable **CSV Import** under…"
url: "https://support.inmood.ch/handbook/csv-import-export/"
updated: "2026-10-25"
---

# CSV Import / Export

# Quick Start

1. Enable the CSV Import feature.
2. Click CSV Import….
3. Export the templates you need.
4. Translate the templates.
5. Import the completed templates.
6. Check your translations.

## Enable CSV Import

Enable **CSV Import** under **Settings → In-App Purchases**. This unlocks CSV import and template export. You also need **Unlimited Languages** to work with languages beyond your app’s Primary Language. See [In-App Purchases](https://support.inmood.ch/handbook/in-app-purchases/).

## Before You Start

Use **Languages…** to select your supported languages **before** starting the process.

![](https://support.inmood.ch/wp-content/uploads/2026/10/Languages.png)

Before exporting or importing **app texts**, click the appropriate **platform card** in the main window. 

## Click CSV Import

Select your app, then click **CSV Import…** beside **Languages…** to open the import and export dialog.

![](https://support.inmood.ch/wp-content/uploads/2026/10/CSV-Import-button.png)

### Export Templates

In the CSV Import dialog, select the template you want:

- **App:** app texts, including Name, Subtitle, Description, Promotional Text, What’s New, Keywords, Support URL, Marketing URL and Privacy Policy URL.
- **Subscriptions:** Display Name and Subscription Description, identified by Product ID and language.
- **In-App Purchases:** Display Name and Description, identified by Product ID and language. Currently, only Non-Consumable products are supported.

Click **Export Template…**, choose where to save the file, give it a name or use its default name and click **Save**. Repeat for each template you need.

App text templates use the selected platform and version. Subscription and in-app purchase templates use the selected app’s product catalog, regardless of the selected platform card.

Templates contain the current values for your supported languages, including local drafts. Existing translations are included; empty fields remain empty.

**Note:** Name, Subtitle and Privacy Policy URL are shared app information across platforms.

## Translate Templates

Open the template in **Numbers** and translate the texts there, or use an AI service of your choice to fill missing translations.

Tell your AI that the **language** column contains the target language code for each row. It is the first column in App.csv; product templates start with **identifier**, followed by **language**. Keep language codes, column headers and Product IDs unchanged.

Save the completed file as UTF-8 CSV. If you use Numbers, export the table back to CSV before importing it into AbbzThor.

## Import Templates

1. Click **CSV Import…** in AbbzThor.
2. Select the matching template: **App**, **Subscriptions** or **In-App Purchases**.
3. Click **Choose CSV File…** and select your completed template.
4. Read the import summary and check any reported errors.

Note: The import updates local drafts. It does not upload anything to App Store Connect. Import each template separately.

## Check Translations

Review the imported texts in AbbzThor before uploading. Check the wording, language, character limits and any warnings. See [Check Translations](https://support.inmood.ch/handbook/check-translations/).

## File Format

Save your file as UTF-8 CSV. Templates use a **comma (,)** to separate columns, matching your CSV export from Numbers. The importer also accepts older **semicolon-separated** files and detects the separator from the header automatically. The first row contains the column names. Each following row contains one language for the app, or one product and language for subscriptions and non-consumables.

Fields containing commas must be enclosed in double quotation marks. In Numbers, choose **File → Export To → CSV**, use **UTF-8** and leave **Include table names** unchecked. Numbers handles the required quoting during CSV export; enter normal text in its cells without adding CSV wrapper quotes yourself. Use language codes such as **de-DE** or **en-US**, matching the language in the app.

## Lists in Numbers

CSV contains plain text, not cell formatting. Avoid Numbers’ built-in bullet and numbered list formatting for descriptions: automatically generated list markers may be omitted during CSV export.

Enter list markers directly as part of the cell text instead. **Option + -** types an en dash **–** on a Mac; this worked in our Numbers CSV export test. A directly entered **•** also worked. A hyphen **-** may trigger Numbers’ automatic list formatting and then disappear from the exported text. Disable automatic list formatting if Numbers converts your typed marker into a formatted list. Markers that remain actual cell text are preserved during import.

On a Swiss Mac keyboard, **Option + Shift + H** can be used to type **•**. The shortcut depends on the keyboard layout. You can also copy **•** from here or insert it using macOS Character Viewer.

### Check the exported file

If list markers are missing after importing, open the exported CSV as plain text and check whether they are present. The importer preserves list characters contained in the CSV; it cannot restore formatting that was omitted during export.

## Columns

- **App:** language,name,subtitle,description,keywords,promotional_text,whats_new,support_url,marketing_url,privacy_policy_url
- **Subscriptions:** identifier,language,name,description
- **In-App Purchases (Non-Consumables):** identifier,language,name,description

For app texts, **language** identifies the language to update. For products, **identifier** and **language** together identify the entry. For both **Subscriptions** and **In-App Purchases**, **identifier** is the exact **Product ID (Product Identifier)** you specified when creating the product in App Store Connect, for example **com.example.app.premium_monthly**. It is not the display name, reference name, subscription group identifier or numeric Apple ID. Copy the Product ID exactly, including capitalization and punctuation. Importing text does not change the identifier.

Include only the text columns you want to update. Keep the language column and, for products, the identifier column.

## Double Quotes and Special Characters

Enclose a field in **double quotation marks (")** if it contains the file’s separator (normally a comma), a line break or a double quotation mark. Single quotation marks (') do not serve this purpose.

A comma inside quotation marks belongs to the text: "Buy once, keep forever" is one field.

To include a double quotation mark in the text, write it twice and enclose the whole field in double quotation marks: "Includes the ""Premium"" package".

For a description spanning several lines, keep the actual line breaks inside the quoted field. Do not start a new CSV entry for each paragraph.

### Example: two product translations

identifier,language,name,description
premium_monthly,de-DE,Premium monatlich,"Alle Funktionen, jederzeit verfügbar"
lifetime,en-US,Lifetime,"Buy once, keep forever"

## Empty Fields and Local Changes

**Empty fields and missing text columns leave existing values unchanged.** An empty quoted field ("") is also empty. To delete an existing text, clear it directly in the app.

The import applies text to local drafts without a preview. It does not upload changes to App Store Connect. Review the imported texts in the app before uploading them.

### Example: update only the name

language,name,subtitle
de-DE,Mein neuer App-Name,

This changes the German app name. The existing subtitle and all text columns omitted from the file remain unchanged.
