Prepare your data sources for import into the Brevo CDP

The Customer Data Platform (CDP) is only available on an Enterprise Solution plan, and some options require a Pro plan. To learn more, visit our website or contact our Sales team.

Before you can take advantage of your customer data, you first need to connect your different data sources to the Brevo Customer Data Platform (CDP) so that they are all in one place, ready to be accessed, unified, and leveraged.

Before you start

You can create as many connections as needed and as many of the same nature. For example, if you are using a Brevo integration to create orders or contacts in Brevo, you can connect multiple Brevo accounts as your source and send this data to the Brevo CDP to unify it.

🛢️ Data sources compatible with the Brevo CDP

As part of the CDP setup, our team will connect your Brevo CRM sub-account(s) and a Brevo SFTP server as data sources and destinations in your Brevo CDP. You will be able to connect and import data from other data sources from the Connections menu:

  • Brevo CRM sub-account fed by APIs or plugins and integrations, such as WordPress, WooCommerce, PrestaShop, or Shopify.
  • An external database or data warehouse such as PostgreSQL, MariaDB, MySQL, or BigQuery.
  • An (S)FTP server to which your JSON or CSV files from your ERP, POS, or other systems are uploaded. When importing your data to the Brevo CDP via FTP servers, follow the CSV guidelines to import them correctly.
    ➡️ To learn more, check our dedicated FTP server section in Prepare your data sources to meet the Brevo CDP requirements

❓ How to choose the right data sources for your business?

Choosing the most suitable data sources for your business depends on two factors:

  • What type of data you want to import into the Brevo CDP

    Core business data can be imported to the Brevo CDP through any of our compatible data sources. However, complex data types require FTP or database connections. The table below shows which data sources work with different integration methods:

    Entities Brevo API Plugins and integrations Database or Datawarehouse (S)FTP server
    Contacts
    Products
    Orders
    Orders items
    Companies
    Stores
    Subscriptions
    Interactions
    Tickets

    ➡️ To learn more on about the different types of data you can import into the Brevo CDP and their associated name and types, check our dedicated section Examples of the expected data structure.

  • Where your data is currently stored

    If your data is hosted on a platform with a compatible plugin or database, integration with the Brevo CDP is seamless. For example, if you store products in a Shopify account, you can connect it to Brevo through our Shopify plugin for easy data synchronization. If your platform doesn't have a compatible plugin or database with Brevo—or if you need to import advanced entities—you'll need to use an FTP server, external database, or data warehouse.

💡 Good to know

You can combine different types of data sources with the Brevo CDP to cover all your necessary data types.

🧪 Prepare your data sources to meet the Brevo CDP requirements

Before connecting your data sources to Brevo CDP, you have to ensure that they meet the requirements necessary for correct import. Expand the accordions corresponding to each of the data sources you want to connect to the Brevo CDP to discover their requirements:

⚙️ Brevo API

Each entity you want to import has to follow the same data structure as indicated in the API documentation:

👥 Contacts  📦 Products 🧾 Orders 🗄️ Categories 🏢 Companies
🧩 Plugins and integrations

If you use one of our plugins or integrations to connect your website to Brevo, Check the documentation specific to your plugin or integration in our dedicated section Plugins & Integrations.

❗️ Important
Entities supported may vary from one plugin or integration to another. 
🗂️ FTP server

The Brevo CDP allows you to import structured data from FTP servers (with CSV or JSON/JSONL files) for one-shot or recurring automated imports. When importing your data to the Brevo CDP via FTP servers, your files need to follow a specific format to be imported correctly.

💡 Good to know

You can use your own FTP server, or we can provide one for you. 

Check below for our general and specific file requirements, along with recommendations for your FTP files:

📑 General file requirements

All the files containing your data have to follow the following requirements before importing them into the Brevo CDP:

  • Save your file in one of the following formats:
    .CSV .JSON/.JSONL .ZIP/.GZIP

    Check our specific file requirements for your CSV and JSON/JSONL files.

  • Create one file per entity. An entity is the scope of data you are importing such as contacts, orders, or products for example. 
  • Save your file with UTF-8 or UTF-8 BOM encoding. These types of file encoding allow for reading the content of your file when it contains special characters.
  • Each record in an entity must have at least the source primary key value filled.
    A source key is a column from your file that acts as a unique identifier (ID) for the records of a given entity. For example, for the Contacts entity, the ID could be contact_id or contact_email, and for the Orders entity, the ID could be order_id. You can also combine different columns that will form a unique ID for each record, such as order_id AND product_id for the Order items entity. 

📄 Specific file requirements 

The CSV and JSON files require additional elements to be compatible with the Brevo CDP. Open the tab corresponding to the file you want to import to the Brevo CDP to learn more: 

CSV JSON/JSONL
💡 Good to know

We have created a sample CSV file that you can download and update with your own data.

  • We recommend using a comma, pipe, or semicolon as separator for your CSV file, but other separators are also supported. 
  • The following value types are accepted: plain text string, JSON, number, date, boolean, or list of values.
  • We recommend using timestamp for date format in your source file, but you will be able to convert other formats into timestamps in the Brevo CDP. We can cover most custom date formats, e.g. `YYYY-MM-DD HH:mm:ss`, `DD/MM/YYYY`
  • Define the first line as headers. Since column headers are used for mappings and labels, they have to remain consistent for recurring imports. Their order has no impact on import.
  • Each line must include the same number of columns as the headers.
  • Each line should contain a single record without breaking line characters.
  • If your raw value contains a character that could be mistaken for a CSV separator, either remove it or enclose the entire value in double quotes.
    ➡️  For example

    If your raw value is 1234 Chester field ; road, you can either:

    • Remove the character: 1234 Chester field road, or
    • Enclose your value in double-quotes: “1234 Chester field ; road”.

✅ Recommandations

  • By default, new and updated data are imported every hour to ensure relevant and up-to-date data.  
  • You can use the following naming convention: <entity>-<source>-<subsection>_<date>.csv:
    • Elements surrounded by <> must be replaced with a real value and are required. For example, <entity> will be <contacts> for a file containing contacts.
    • <entity> is one of the business entities described above.
    • <source> is the name of system where the data comes from (e.g. prestashop, pos, etc.).
    • <subsection> is an optional parameter to used to provide additional information. For example, you can have two files of contacts for a single source contacts_prestashop_customers and contacts_prestashop_subscribers.
    • <date> is the date of the day when the file was created. The date must follow the format YYYYMMDD_H24MISS. For instance, a file created on 2024-10-19 at 15:12:39 will have the following suffix _20241019_151239.csv.
  • The file name can be extended with additional information at the beginning (prefix) and directly before the date .csv extension (suffix). Suffixes should be placed before the date.
🛢️ Database or datawarehouse

Databases and datawarehouses, such as PostgreSQL, MariaDB, MySQL, or BigQuery, do not require specific elements to be compatible with the Brevo CDP. However, we highly recommend setting up incremental import by adding a last_updated column to your database or datawarehouse. 

❗️ Important
The last_updated column has to be in a timestamp format and filled with the latest update on your data table that is connected to the Brevo CDP. Indeed, if your data table updates asynchronously and last_update reflects changes from another system, it cannot be used for incremental fetching, potentially preventing contact imports. 

Incremental import allows you to: 

  • Increase performances.
  • Keep up-to-date data as incremental imports fetch new records every hour, ensuring your data stays up to date. Without incremental imports, you can only import new records once a day through a full import.
  • Be more eco-friendly.

💡 Examples of the expected data structure

Your data structure depends on your data source and can adapt to your specific column format. Expand the accordions below to see examples of expected column names and types for some entities:

👥 Contacts
Columns Type
id String
email String
phone String
firstname String
lastname String
birthdate Timestamp
country String
city String
postal_code String
acquisition_source String
gender String
created_at Timestamp
modified_at Timestamp
🧾 Orders
Columns Type
id String
contact_id String
store_id String
status String
channel String
total_amount Float
discount_amount Float
billing_addresss String
billing_city String
billing_phone String
billing_country_code String
billing_postal_code String
billing_payment_method String
billing_region String
created_at Timestamp
modified_at Timestamp
🗄️ Order items
Columns Type
id String
quantity Float
unit_price Float
discount_amount Float
total_amount Float
order_id String
product_id String
variant_id String
created_at Timestamp
📦 Products
Columns Type
id String
sku String
categories String
price Float
name String
description String
parent_id String
url String
brand String
image_url String
created_at Timestamp
modified_at Timestamp
✅ Subscriptions
Columns Type
id String
contact_id String
created_at Timestamp
modified_at Timestamp
type Float
started_at String
ended_at String
amount String
🏷️ Stores
Columns Type
id String
name String
city String
country String
postal_code String
is_open Boolean
latitude String
longitude String
type String
created_at Timestamp
modified_at Timestamp

⏭️ What's next? 

🤔 Have a question?

If you have a question, feel free to contact our support team by creating a ticket from your account. If you don't have an account yet, you can contact us here.

If you’re looking for help with a project using Brevo, we can match you with the right certified Brevo expert partner.

💬 Was this article helpful?

0 out of 0 found this helpful