Brevo
Datafly Signal delivers your first-party events server-to-server to Brevo (formerly Sendinblue) using Brevo’s Events API. Each event records a behavioural interaction against a contact, can upsert contact attributes, and is available to Brevo segments and marketing automation workflows (welcome series, abandoned cart, post-purchase, and more).
Because delivery is server-side, no Brevo tracker script runs in the browser, and your event data flows from your own first-party domain.
Prerequisites
- A Brevo account on a plan that includes the Events API.
- A Brevo API key with the Events scope. Create one in the Brevo dashboard under SMTP & API → API Keys.
- A Datafly Signal pipeline already collecting events from your site via Datafly.js.
Configuration
| Field | Required | Description |
|---|---|---|
| API Key | Yes | Your Brevo API key. Sent in the api-key request header. |
Configure in Signal
- In the management UI, open your pipeline and add the Brevo integration.
- Paste your API Key.
- Choose a preset:
- Default (Lifecycle) — page views, sign-up, login, search, lead, and order events.
- Retail — full e-commerce funnel (product views, cart updates, checkout, orders, refunds) for abandoned-cart and post-purchase automation.
- Save and enable the integration.
API Endpoint
POST https://api.brevo.com/v3/eventsAuthentication is the api-key header:
api-key: <YOUR_API_KEY>
Content-Type: application/jsonA successful request returns 204 No Content.
Identity Signals
Brevo matches each event to a contact using the identifiers object, which must contain at least one identifier. Signal sends:
| Identifier | Source | Notes |
|---|---|---|
identifiers.email_id | Visitor email | Sent unhashed — Brevo matches on the plaintext email address. |
identifiers.ext_id | Signal anonymous_id | An external identifier so events fired before a visitor is known still attach to the contact once their email is later observed. |
Unlike advertising pixels and conversion APIs, the Brevo Events API does not accept SHA-256 hashed emails, so Signal does not hash the email for this integration.
Brevo’s Events API has no per-event consent field. Marketing consent in Brevo is managed at the contact and list-subscription level rather than per event.
Event Mapping
Signal’s GA4-style event names map to Brevo event_name values. Event metadata goes under event_properties; contact attributes (such as first and last name) are upserted via contact_properties.
| Signal event | Brevo event_name |
|---|---|
page | page_viewed |
Product Viewed | product_viewed |
Product Added / Product Removed | cart_updated |
Cart Viewed | cart_viewed |
Checkout Started | checkout_started |
Order Completed | order_completed |
Order Refunded | order_refunded |
Signed Up | signed_up |
Logged In | logged_in |
Event names are limited to alphanumeric characters, hyphens, and underscores (max 255 characters).
Example
A Datafly.js call on your site:
datafly.track("Order Completed", {
order_id: "ORD-1001",
revenue: 49.90,
currency: "EUR",
products: [
{ product_id: "SKU-1", product_name: "Trail Shoe", price: 49.90, quantity: 1 }
]
}, {
traits: { email: "jane@example.com", first_name: "Jane" }
});Signal delivers the following to Brevo:
{
"event_name": "order_completed",
"event_date": "2026-06-06T17:39:57Z",
"identifiers": {
"email_id": "jane@example.com",
"ext_id": "a1b2c3d4-anon"
},
"contact_properties": {
"FIRSTNAME": "Jane"
},
"event_properties": {
"order_id": "ORD-1001",
"value": 49.90,
"currency": "EUR",
"products": [
{ "product_id": "SKU-1", "product_name": "Trail Shoe", "price": 49.90, "quantity": 1 }
]
}
}Testing
- Trigger an event on your site (for example, complete a test order) with a known email address.
- In the Signal Event Debugger, confirm the event was delivered with a 204 response from Brevo.
- In Brevo, open the contact for that email and check the Events / activity timeline — your event should appear with its properties.
- If you have an automation listening for the event, confirm the contact entered the workflow.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
400 Bad Request | Invalid event_name characters, or no identifier present | Ensure the event name uses only letters, numbers, -, _; ensure an email or ext_id is available on the event. |
401 Unauthorized | Bad or missing API key | Re-check the API key value in the integration settings. |
402 / 403 | Plan lacks the Events feature, or the key lacks the Events scope | Upgrade the plan or regenerate a key with the Events scope. |
| Event delivered but no contact updated | Email not present on the event | Confirm an identify/traits call supplies the email before or alongside the event. |
| Properties missing in Brevo | Event metadata not mapped | Add the property to event_properties in the blueprint mapping. |