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

FieldRequiredDescription
API KeyYesYour Brevo API key. Sent in the api-key request header.

Configure in Signal

  1. In the management UI, open your pipeline and add the Brevo integration.
  2. Paste your API Key.
  3. 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.
  4. Save and enable the integration.

API Endpoint

POST https://api.brevo.com/v3/events

Authentication is the api-key header:

api-key: <YOUR_API_KEY>
Content-Type: application/json

A 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:

IdentifierSourceNotes
identifiers.email_idVisitor emailSent unhashed — Brevo matches on the plaintext email address.
identifiers.ext_idSignal anonymous_idAn 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 eventBrevo event_name
pagepage_viewed
Product Viewedproduct_viewed
Product Added / Product Removedcart_updated
Cart Viewedcart_viewed
Checkout Startedcheckout_started
Order Completedorder_completed
Order Refundedorder_refunded
Signed Upsigned_up
Logged Inlogged_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

  1. Trigger an event on your site (for example, complete a test order) with a known email address.
  2. In the Signal Event Debugger, confirm the event was delivered with a 204 response from Brevo.
  3. In Brevo, open the contact for that email and check the Events / activity timeline — your event should appear with its properties.
  4. If you have an automation listening for the event, confirm the contact entered the workflow.

Troubleshooting

SymptomLikely causeFix
400 Bad RequestInvalid event_name characters, or no identifier presentEnsure the event name uses only letters, numbers, -, _; ensure an email or ext_id is available on the event.
401 UnauthorizedBad or missing API keyRe-check the API key value in the integration settings.
402 / 403Plan lacks the Events feature, or the key lacks the Events scopeUpgrade the plan or regenerate a key with the Events scope.
Event delivered but no contact updatedEmail not present on the eventConfirm an identify/traits call supplies the email before or alongside the event.
Properties missing in BrevoEvent metadata not mappedAdd the property to event_properties in the blueprint mapping.