Brevo
Sync contacts to Brevo (formerly Sendinblue) for email and SMS marketing campaigns. Zeotap keeps your Brevo contact lists in sync with your warehouse data, enabling targeted campaigns with up-to-date customer attributes.
Prerequisites
- A Brevo account (free or paid plan)
- A Brevo API key (v3)
Authentication
Brevo uses API Key authentication.
- In Brevo, go to Settings > SMTP & API > API Keys
- Click Generate a new API key
- Give the key a name and copy it (starts with
xkeysib-) - Paste it into the API Key field in Zeotap
Configuration
No additional configuration fields are required for Brevo. Authentication is handled entirely through the API key.
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| List ID | Text | No | Brevo contact list ID to add contacts to. Required for audience syncs. |
To find your List ID, navigate to Contacts > Lists in Brevo. The ID is displayed next to each list name.
Supported Operations
Sync Modes
| Mode | Supported |
|---|---|
| Upsert | Yes |
| Insert | Yes |
| Update | Yes |
Audience Sync Modes
| Mode | Supported |
|---|---|
| Add | Yes |
| Remove | Yes |
| Mirror | Yes |
| Upsert | Yes |
Features
- Field Mapping: Yes
- Schema Introspection: No
Required Mapping Fields
| Field | Description |
|---|---|
| Contact email address (primary identifier) |
Default Destination Fields
email, SMS, FIRSTNAME, LASTNAME, COMPANY, ext_id
Brevo requires contact attributes to be uppercase (e.g., FIRSTNAME, LASTNAME). Zeotap automatically uppercases attribute names when syncing to Brevo.
How It Works
Contact Sync (Upsert Mode)
- Zeotap batches contacts in groups of up to 500
- Each batch is sent to the Brevo Import Contacts endpoint (
POST /v3/contacts/import) - Existing contacts are updated; new contacts are created
- If a List ID is configured, contacts are added to the specified list
Audience Sync (Add/Remove/Mirror)
- Add: Contacts are created/updated, then added to the list via
POST /v3/contacts/lists/{listId}/contacts/add(max 150 per request) - Remove: Contacts are removed from the list via
POST /v3/contacts/lists/{listId}/contacts/remove(max 150 per request) - Mirror: Added/changed contacts are upserted and added to the list; removed contacts are unlinked from the list
Insert Mode
Contacts are created individually via POST /v3/contacts. If a contact already exists, the sync reports an error for that row (use upsert if you want to update existing contacts).
Update Mode
Existing contacts are updated individually via PUT /v3/contacts/{email}. Contacts that do not exist in Brevo will return an error.
Rate Limits
| Endpoint | Standard Plan | Professional Plan |
|---|---|---|
| Contacts endpoints | 36,000 RPH (10 RPS) | 72,000 RPH (20 RPS) |
| All other endpoints | 100 RPH | 200 RPH |
Zeotap automatically retries on 429 Too Many Requests responses with exponential backoff and respects Brevo’s Retry-After headers.
Best Practices
- Use upsert mode for most contact syncs to avoid errors when contacts already exist
- Configure a List ID for audience syncs to manage list membership automatically
- Map attributes in uppercase where possible, matching Brevo’s convention (e.g.,
FIRSTNAME,LASTNAME,COMPANY) - Use the SMS field with international format (e.g.,
+1234567890) for SMS campaigns - Keep batches reasonable — Zeotap automatically chunks requests to stay within Brevo’s limits
Troubleshooting
Authentication failed: invalid API key
Ensure your API key starts with xkeysib- and has not been revoked. Generate a new key from Settings > SMTP & API > API Keys in Brevo if needed.
Contact not found (update mode)
The update sync mode requires that contacts already exist in Brevo. If you are syncing new contacts, use upsert mode instead.
Attribute not recognized
Brevo ignores unknown attributes during import. Ensure the attribute names you are mapping exist in your Brevo account under Settings > Contacts > Attributes.
List ID not found
Verify the List ID exists by navigating to Contacts > Lists in Brevo. The ID is a numeric value visible next to the list name.
SMS field not syncing
The SMS field must include the country code in international format (e.g., +33612345678). Brevo accepts formats like 91xxxxxxxxxx, +91xxxxxxxxxx, or 0091xxxxxxxxxx.
Rate limit exceeded (429 errors)
Zeotap retries automatically with exponential backoff. If errors persist, consider spacing out your sync schedule or upgrading your Brevo plan for higher rate limits.