How to import glossary terms in bulk with CSV
You must have a paid Klaviyo account and Smart Translations enabled to use this feature. You also need permission to edit translation settings. Learn how to enable Smart Translations.
Import an existing glossary
Klaviyo's Smart Translations feature uses a glossary to control how specific terms are translated — brand names, product names, slogans, or technical terms that need a consistent translation across every campaign.
If you already maintain a glossary in another translation system (DeepL, Lokalise, Phrase, an internal spreadsheet), you can import it directly into Klaviyo as a CSV instead of recreating each entry by hand.
When to use CSV import
CSV import is useful when you want to:
- Bring an existing glossary into Klaviyo from a TMS (Translation Management System) like DeepL, Lokalise, Phrase, or memoQ.
- Add a large batch of terms at once (dozens or hundreds), rather than typing each one in the UI.
- Migrate a glossary maintained in a shared spreadsheet to a single source of truth in Klaviyo.
For just a handful of terms, adding them manually one-by-one in the glossary panel is usually faster.
Keep a copy of your source file. You can also export your saved glossary as CSV or JSON. To create a CSV backup you can re-import:
- Click Export CSV in the glossary panel.
- Choose Simple CSV and All language pairs.
- Click Export to download the file.
Export is unavailable while edits are unsaved or saving, or when the glossary is empty. JSON files cannot be imported into Klaviyo.
Prepare your CSV file
File format
- Encoding: UTF-8
- File type:
.csv - Delimiter: comma (
,) - Header row: required (see below)
Wrap terms that contain commas in double quotes, such as "hello, world", so the comma stays within the term.
Each term can contain up to 200 characters. Your saved glossary can contain up to 3,000 entries, including existing entries when you use Add.
Sample file
source term | target term | source locale | target locale |
|---|---|---|---|
hello | bonjour | en | fr |
hello | hallo | en | de |
tschüß | good bye | de | en |
Required columns
Every row must include 4 columns:
source term— the term in the source languagetarget term— how the term should be translatedsource locale— the BCP-47 locale tag of the source languagetarget locale— the BCP-47 locale tag of the target language
All 4 headers must be present in the first row of the file. Column order does not matter.
Locale codes (BCP-47)
Locale codes follow the BCP-47 standard. The most common form is a two-letter language code, optionally followed by a region:
en— Englishen-US— English (United States)en-GB— English (United Kingdom)fr— Frenchfr-CA— French (Canada)de— Germanja— Japanesept-BR— Portuguese (Brazil)
Use a locale supported by Smart Translations. If a regional variant is not supported, the importer uses a supported variant of the same language when it can resolve one. Otherwise, the row is skipped. For example, en-US is imported as en, and pt-BR as pt. Supported variants such as en-GB and fr-CA are kept. Use the resolved locale when checking for conflicting translations.
Multiple language pairs in one file
A single CSV can include entries for many language pairs. Rows that share the same term and locale are grouped into one glossary entry. For example:
source term | target term | source locale | target locale |
|---|---|---|---|
hello | bonjour | en | fr |
hello | hola | en | es |
hello | hallo | en | de |
bonjour | hola | fr | es |
These 4 rows describe 1 glossary entry with English, French, Spanish, and German terms. The last row repeats a pair already linked through hello, so it does not create another entry. This is useful if you maintain one master glossary that powers translation in several locales.
Glossary terms are symmetric
Each glossary entry defines a bidirectional equivalence between terms. If you import:
source term | target term | source locale | target locale |
|---|---|---|---|
hello | bonjour | en | fr |
Klaviyo will:
- Translate
helloasbonjourwhen translating English → French. - Translate
bonjourashellowhen translating French → English.
This means you cannot define asymmetric mappings such as:
source term | target term | source locale | target locale |
|---|---|---|---|
hello | bonjour | en | fr |
bonjour | hi | fr | en |
Both rows map bonjour to a different English term, which is a conflict within the CSV. The importer keeps the first mapping and skips the conflicting row with a warning (see Troubleshoot import errors).
If you need different English translations for bonjour depending on context, glossary terms aren't the right tool — they're meant for terms that translate the same way every time.
Import modes
When you import, choose one of 2 modes:
- Add keeps existing glossary entries and appends entries from the CSV. It does not check incoming entries for conflicts with the saved glossary. Compare your file with the saved glossary before importing: conflicting entries can change which translation is used.
- Replace all replaces your entire saved glossary with the valid entries from the CSV. Rows skipped during validation are not included.
Replace all deletes the entire current glossary.
Use Replace all only when the CSV includes every entry you want to keep. There is no undo. Export your saved glossary before replacing it so you have a backup.
Import the file
- Go to Settings > Translations > Glossary.
- Click Import CSV.

- In the dialog, choose Add or Replace all.

- Click the file area and select your
.csvfile (or drag the file into the area). - Click Next. Klaviyo validates the file but does not save anything yet. You'll see a preview screen.
- Review the preview:
- Total rows is the number of nonblank data rows, excluding the header.
- Valid entries is the number of glossary entries created from the file. Multiple rows can be grouped into 1 entry, so this can be lower than the total row count.
- Rows skipped — how many were dropped due to validation issues.
- If warnings appear, review which rows were skipped or changed before proceeding. To fix the file, click Select a different file, upload the corrected file, and choose the import mode again.
- Click Import to save the changes.
After a successful import, the dialog closes and the glossary panel shows your saved terms. Use Source Language and Target Language to review each imported language pair.

If a file-level error blocks validation, you'll see an Import failed screen instead of the preview. Fix the error and select a different file to try again.

Troubleshoot import errors
Klaviyo shows validation messages explaining what needs attention. File-level errors block the import; row-level warnings identify rows that are skipped or changed.
File-level errors
These stop the import entirely. Fix them and try again.
"The uploaded file is empty."
What it means: The file is empty or contains no nonblank data rows.
What to do: Make sure the file isn't 0 bytes and has at least 1 data row plus the header.
"Missing required headers: …"
What it means: The header row doesn't include all 4 required columns.
What to do: Check the first row contains source term, target term, source locale, and target locale. Header order doesn't matter; spelling does.
"No valid glossary entries were found in the file."
What it means: After validation, no row could be imported.
What to do: Open the file and check that the data rows match the expected format.
"The file could not be read. Please ensure it is saved in UTF-8 encoding."
What it means: The file isn't UTF-8 encoded
What to do: Re-save the file from your spreadsheet tool with UTF-8 encoding. In Excel, use Save As → CSV UTF-8.
"A term exceeds the maximum length and was skipped."
What it means: At least 1 term contains more than 200 characters. Although the message says the term was skipped, this error blocks the entire import.
What to do: Shorten each source and target term to 200 characters or fewer, then upload the corrected file.
Row-level warnings
These identify rows that are skipped or changed. You can import the remaining valid entries if no file-level error blocks the import.
"Row N: empty term value"
What it means: The source or target term cell is blank.
What to do: Fill in the missing term, or remove the row.
"Row N: empty locale code"
What it means: The source or target locale cell is blank.
What to do: Fill in the missing locale (e.g. en, fr-CA).
"Row N: unsupported locale. Skipped."
What it means: The source or target locale cannot be resolved to a language supported by Smart Translations.
What to do: Use a standard locale code like en, fr, de, pt-BR. See Locale codes.
"Row N: conflicting translation for the same term and locale. Skipped."
What it means: The row gives a locale a different term from another row in the same glossary entry. This also happens when different source and target terms resolve to the same locale.
What to do: Decide which translation is correct and remove the duplicate.
"Row N: term conflicts with an existing entry. Skipped."
What it means: The row connects terms that were placed in 2 different entries while processing this CSV. This warning concerns entries in the file, not entries in your saved glossary.
What to do: Review the related rows in the CSV and remove or reorganize conflicting mappings. Switching import modes will not fix a conflict within the file.
"Row N: a leading formula character was stripped for safety"
What it means: A source or target term or locale started with =, +, -, or @, which spreadsheet apps would interpret as a formula.
What to do: This warning allows the row to import after the leading character is removed, as long as the resulting terms and locales are valid. CSV quotes do not preserve the character. If it is part of the intended term, add or edit that term manually in the glossary after importing.
Generic validation error
If you see “A validation error occurred. Please check your file and try again.” check that the file matches the expected format. The saved glossary is limited to 3,000 entries; Add counts existing entries too. If the combined total exceeds this limit, remove entries or use a reviewed replacement file that stays within the limit. Contact support if the error persists.
Additional resources
- How to enable Smart Translations
Learn how to enable Smart Translations for messages so you can send campaigns and flows in multiple languages based on the language preferences of your audience. Klaviyo can translate email content to 60+ languages.