Lytics Customer Data Platform allows you to use real-time customer activity across various channels to trigger Brevo workflows. Instead of a static, list-based approach to automation workflows, Lytics allows you to create dynamic audience segments that sync with Brevo and update in real-time as customers flow in and out of them. For example, a segment of known visitors with an affinity for a certain topic could trigger an email workflow with targeted messaging.


To set up and authorize the Lytics Brevo integration, log into your Lytics account and click on the Data menu tab. Then, click on the Jobs tab. Here, you will see existing jobs and have the option to create a new one.

If you choose to create a new job, you’ll see a list of available integrations organized alphabetically in tiles. Scroll down and click on the Brevo tile.


You will always have two options, to Export Users from Lytics into Brevo or to Import Users & Activity from Brevo. Either option will prompt you to setup the integration if it’s your first time. You should see this setup screen after clicking one of the options:


Click on “Create New Authorization” and you’ll be prompted to enter your a label, an API key, and a short description. You can describe your authorization in any way you like. This can be a useful way to tell multiple integrations apart.


The initial account authorization only needs to be performed one time.

Configure Your Sync:

Now that the account is authorized, you can begin exporting or importing your users.

Exporting Users


In the export scenario, you’ll click on the “Export Audience” button. From there, select the Brevo List that you want to import and the Lytics audience segment that you want to sync them into from the dropdowns. You should also select the Email field. Finally, you'll want to map each Lytics field to a Brevo field.


By default, the advanced options are set to continuously import and to add users who already exist in the selected Lytics segment.


Finally, click on the “Complete” button located below the advanced options section.


Note: You can export segments by clicking on the Brevo tile within the Integration section of the Data menu tab (as demonstrated above). Alternatively, if you are within the Audience tab, you can also click on a specific segment and then click on the export button in the upper righthand corner to begin the export workflow.

Import Users & Activity


In the Import scenario, you’ll click on the “Import Audiences and Activity Data” button. Next, you’ll select the individual Brevo List(s) that you want to import by clicking on them. As you click on a list it moves from the left column to the right column. You can also click on the blue + and - buttons to do this.


By default, campaign activity data and transactional data will be synced.

In the advanced options tab, you can also specify a certain time of day and timezone for the sync.


Finally, click on the “Complete” button located below the advanced options section


Once import has started a new data stream will be created called brevo_users


The following fields are included in the default mapping of the brevo_users stream:

Source FieldLytics User FieldDescriptionType
FIRSTNAMEfirst_nameFirst Namestring
NAMEnameFull Namestring
SMSmobile_phone unique idMobile Phone Numberstring
blacklistbv_blacklistBrevo Email Blackliststring
email(EMAIL)email unique idEmail Addressstring
emaildomain(EMAIL)email_domainEmail Domainstring
set(list_id)bv_listsBrevo lists the email belongs to[]string
sms_blacklistbv_sms_blacklistBrevo SMS Blackliststring

The following fields are included in the default mapping of the brevo_activity stream:

Source FieldConditionalLytics User FieldDescriptionType
count(event)IF eq(event, "click")bv_clickctBrevo click countint
count(event)IF eq(event, "opened")bv_openctBrevo Open countint
count(event)IF eq(event, "delivery")bv_sendctBrevo Send Countint
email(email)email unique idEmail Addressstring
emaildomain(email)email_domainEmail Domainstring
max(epochms())IF eq(event, "click")bv_lastclick_tsBrevo Last clickdate
max(epochms())IF eq(event, "opened")bv_lastopen_tsBrevo Last Opendate
max(epochms())IF eq(event, "unsubscribed") OR eq(event, "unsubscribe")bv_unsub_tsBrevo Unsub datenumber
max(epochms())IF eq(event, "opened")last_active_tsLast Activedate
min(epochms())IF eq(event, "click")bv_firstclick_tsBrevo First clickdate
min(epochms())IF eq(event, "opened")bv_firstopen_tsBrevo First Opendate
reasonIF eq(event, "unsubscribed") OR eq(event, "unsubscribe")bv_unsubreasonBrevo Unsubscribe Reasonstring
set(camp_id)bv_campaignsBrevo Campaign the send was a part of[]string
set(custom)bv_custom_tagsBrevo X-mailing custom[]string
set(list_id)bv_listsBrevo lists the email belongs to[]string
set(message_id)bv_messagesBrevo Message Id[]string
set(tag)bv_tagsBrevo Email Tag[]string
urlbv_email_urlBrevo Urlstring
valuect(event)bv_email_eventBrevo Email Eventsmap[string]intsum
valuect(hash(urlmain(url)))IF eq(event, "click")hashedurlsHashed Urls Visitedmap[string]intsum
valuect(hourofday())IF eq(event, "opened")bv_hourlyopenBrevo Hourly Eventsmap[string]intsum
valuect(hourofweek())IF eq(event, "opened")bv_hourofweekBrevo Hour of Week Eventsmap[string]intsum
valuect(yymm())IF eq(event, "opened")bv_monthlyBrevo Opens By Monthmap[string]intsum

The following fields are included in the default mapping of the brevo_sms_activity stream:

Source FieldConditionalLytics User FieldDescriptionType
count(event)IF eq(event, "blocked")bv_sms_blockedctBrevo Blocked Countint
count(event)IF event IN ("softBounces", "hardBounces", "bounces")bv_sms_bouncedctBrevo Bounced Countint
count(event)IF eq(event, "delivered")bv_sms_deliveredctBrevo Delivered Countint
count(event)IF eq(event, "replies")bv_sms_replyctBrevo Reply Countint
count(event)IF eq(event, "sent")bv_sms_sentctBrevo SMS Sent Countint
count(event)IF eq(event, "unsubscription")bv_sms_unsubctBrevo Unsub Countint
eventbv_sms_last_eventBrevo Last SMS Eventstring
max(epochms())IF eq(event, "blocked")bv_sms_lastblocked_tsBrevo Last SMS Blockeddate
max(epochms())IF event IN ("softBounces", "hardBounces", "bounces")bv_sms_lastbounced_tsBrevo Last SMS Bounceddate
max(epochms())IF eq(event, "delivered")bv_sms_lastdelivered_tsBrevo Last SMS Delivereddate
max(epochms())IF eq(event, "replies")bv_sms_lastreply_tsBrevo Last SMS Replydate
max(epochms())IF eq(event, "sent")bv_sms_lastsent_tsBrevo Last SMS Sentdate
max(epochms())IF eq(event, "unsubscription")bv_sms_lastunsub_tsBrevo Last SMS Unsubdate
min(epochms())IF eq(event, "blocked")bv_sms_firstblocked_tsBrevo First SMS Blockeddate
min(epochms())IF event IN ("softBounces", "hardBounces", "bounces")bv_sms_firstbounced_tsBrevo First SMS Bounceddate
min(epochms())IF eq(event, "delivered")bv_sms_firstdelivered_tsBrevo First SMS Delivereddate
min(epochms())IF eq(event, "replies")bv_sms_firstreply_tsBrevo First SMS Replydate
min(epochms())IF eq(event, "sent")bv_sms_firstsent_tsBrevo First SMS Sentdate
min(epochms())IF eq(event, "unsubscription")bv_sms_firstunsub_tsBrevo First SMS Unsubdate
phoneNumberbv_mobile_phone unique idBrevo Mobile Phone Numberstring
reasonIF event IN ("softBounces", "hardBounces", "bounces")bv_sms_bounce_reasonBrevo Bounce Reasonstring
set(messageId)bv_messagesBrevo Message Id[]string
valuect(event)bv_sms_eventBrevo SMS Eventsmap[string]intsum