Klaviyo integration is a marketing automation platform where you can sync your data between Bloomreach Engagement and Klaviyo itself. It provides a more accurate view of your customers, detailed analytics via advanced reporting, synchronized Engagement segments, and compliance by Bloomreach Engagement consent management.
In this guide, you will learn about:
how the imports and exports of your data work,
how to set up the integration,
what data are synced,
its use cases and limitations.
# How the integration works
After the first successful setup of Klaviyo integration, the initial data load is triggered. It exports an entire current customer base from Klaviyo, as well as all historical consent events (like add/delete from the list). Historical campaign metrics are also exported, but they are limited to the last month only due to possible high volumes.
Then **customer base is updated daily**, and new profiles appear in Klaviyo right after the daily import. Please mind, the consent and campaigns are synchronized every two hours.
The integration uses REST API, which allows the synchronisation of Klaviyo and Bloomreach data. Klaviyo integration syncs customer profiles, lists as consent and campaign (Email & SMS) events from Klaviyo into Bloomreach. Here is the list of tracked events in both Engagement and Klaviyo.
_Klaviyo into Bloomreach:_
Subscribed to List, Unsubscribed from List, Unsubscribed, Unsubscribed from SMS, Consented to Receive SMS
Bounced email, Clicked email, Dropped email, Opened email, Received email, Marked email as spam
Sent SMS, Clicked SMS, Received SMS, Failed to deliver Automated Response SMS, Failed to Deliver SMS, Received Automated Response SMS
_From Bloomreach to Klaviyo_:
# Set up in a nutshell
Before you get to setting the integration up, make sure your project has the following IDs set up correctly:
**email_id** - It is a hard ID, lowercased, trimed. Email address is a primary identifier for customers in Bloomreach Engagement.
**klaviyo_id **- It is a hard ID and represents profile id of a customer in Klaviyo.
**cookie** - It is a soft ID and represents device unique cookie identifier.
This integration requires you to track two hard IDs - email_id and klaviyo_id. You are only able to set up which hard IDs you track during the creation of the project. **Reach out to your CSM** to help you set these up!
## Step 1: Authentication
After you have checked your prerequisites, you need to set up the authentication first. Please follow these steps in order to do so:
To start integrating with Klaviyo, you need to go to your Bloomreach Engagement account. There, go to `
Data & Assets` > `
Integrations` > and select `
You will need the Klaviyo private API key which can be created via the following [page](🔗), in order to send data to Engagement.
To support all data synchronisation, the API key has to have at least: _Profiles Read_, _Metrics Read_, _Events Read_, _Profiles Write_, _List Write_, _Subscriptions Write_.
## Step 2: Customer ID and their property mapping
Under the API key field, you can **find Customer ID and Customer property mapping** between Klaviyo and Bloomreach. Thanks to this mapping, you can decide which customer properties from Klaviyo should be exported on a daily basis to Bloomreach Engagement and under what name they should be tracked.
Our recommendation is to map Customer IDs to existing properties like `
email_id` and `
klaviyo_id`. If you **use Klaviyo as your only source of data**, then we also recommend mapping customer properties to the already existing customer profiles (example of these properties are first_name, or surname). If you **use different sources of data**, our recommendation would be to create new properties and name them as klaviyo_first_name, klaviyo_last_name. You can also decide **not to map customer properties** and then the following customer fiels will not be exported.
Customer properties mapping & different data source
In case you are collecting data from multiple sources like Shopify integration, please be very careful while setting customer attribute mapping! For example, mapping Klaviyo phone to a phone property in Bloomreach means that the phone customer attribute will be overwritten by Klaviyo on a daily basis and then it can also **overwrite a phone number** collected by a Shopify integration, or by a weblayer. That is why we recommend to map those fields with distinct different names, such as klaviyo_phone.
## Step 3: Save the integration
Once all steps above are done, **click on the Save button** and the integration is successfully created. **The initial data load has begun** and customer profiles and campaigns start being retrieved by Bloomreach Engagement. Consent events are triggered only after their mapping is set and saved.
## Consent mapping
Klaviyo does consent categories through lists. Therefore after succesful setup, you can map your Klaviyo lists to specific consent categories in Bloomreach Engagement. Here, we provide you with a list of events related to consent. how they are mapped and what happens in Klaviyo, as well as Engagement.
|Event||Event mapping in Engagment||Event mapping in Klaviyo|
|Subscribed to List||a consent accepted event with the assigned category||_ a profile is added to a list via Klaviyo signup form _ a profile is added to a list with email consent via Quick Add _ a profile is added to a list with email consent via CSV upload _ a profile is added Klaviyo-built integration, or certain third-party integrations|
|Unsubscribed from List||a consent rejected event with the assigned category||a profile is unsubscribing from an email/SMS sent using list|
|Unsubscribed||a consent rejected event for all mapped consents categories for this integration||a profile is unsubscribing from email sent using segment|
|Unsubscribed from SMS||consent rejected event for all mapped consents categories for this integration||a profile is unsubscribing from email sent using segment|
Manual removal in Klaviyo
If you are manually removing profiles from lists, or supressing profiles in Klaviyo, please bare in mind that these actions will not be reflected in Bloomreach Engagement. The reason is based on the Klaviyo API limitations. In case you do changes manually in Klaviyo, make sure to do the same actions in Bloomreach Engagement, too.
Example: you are suppressing a single profile present in multiple lists in Klaviyo and have an active integration with Bloomreach Engagement where you map those lists into specific consents categories. You need to be aware that this action will not be reflected in Bloomreach due to the Klaviyo API limitation and you need to reject consent categories for this profile manually.
### Consent management
Klaviyo does consent categories through lists and its consent management view on customer profiles is basic, displaying if a customer profile is consented. Read more about Klaviyo consent management in their [official documentation](🔗).
In the integration page you can see the following customer property related to the Klaviyo checkmark on a profile level:
SMS Consent mapped as klaviyo_sms_consent
Email Consent mapped as klaviyo_email_consent
These attributes will be set up to true only if a profile is added with marketing consent approved via Klaviyo signup form, Klaviyo subscribe page, Klaviyo upload feature, Shopify form or Shopify checkout with approved marketing communication. In other scenarios it will be set up as false.
Inconsistency in consent statuses caused by Klaviyo API
Currently, due to inconsistency in the previous version of the Klaviyo API, there might be situation that the klaviyo_sms_consent or kalviyo_email_consent is set up as true, but has status unsubscribe, such as _"profile cannot receive email marketing"\_ in Klaviyo. It is caused by inconsistency in the previous version of the Klaviyo API.
Therefore, before sending any marketing campaign to any profiles retrieved by Klaviyo, it is mandatory to check for the klaviyo_sms_consent or kalviyo_email_consent status (set up to true) AND check if those profiles have consent category (mapped from a particular Klaviyo list) set to true as well.
## Webhook settings
If you want to send segments, or filter profiles in Klaviyo from Engagement, you will need to setup a webhook in scenario. You can use webhook templates to easily create a segment that can be exported to the Klaviyo list. With the templates, you can easily:
create a new profile in Klaviyo,
add a profile to the Klaviyo list,
remove a profile from a list in Klaviyo,
However, before using webhooks, you need to set up the right authentication. Please follow these steps to do so:
Go to `
Data & Assets` -> `
Integrations` -> `
Add new integration` -> `
HTTP Authentication Schemas`. Fill in the following fields accordingly.
**Value**: Klaviyo-API-Key your-private-api-key
Rename the title to be Klaviyo related and save it. Klaviyo webhooks can be found in `
Scenarios` > `
Actions - Other`.
### Example of webhook in scenario
Here, we show you how to set up and use the webhook on more practical example. In this example webhook, a **list id** parameter is **mandatory**. To find it, go to your `
Klaviyo account` > select a list you want to manage > copy the url. The value after the `
list/` is the list id which need to be pasted into the Klaviyo webhook template.
For all Klaviyo webhooks you are using, **go to the Editor** inside each Klaviyo webhook and **set up required parameters**. Replace all values called `
<Insert number via Jinja/Manually>` using Jinja available under the bracket icon. In the screenshot below, you can see an example of Add profile to a list webhook with Klaviyo Id attribute.
Last thing to set us is the **authentication**. Go to the settings of the Klaviyo webhook and **enable the Authentication**. From the list, select the previously created authentication method. After it is selected, click done.
Now you can build various scenarios to send filtered profiles or segments from Bloomreach Engagement to Klaviyo. Below you can see an example of a scenario presenting sending profiles from a segment to a list in Klaviyo.
# Use cases
**Advanced reporting** - including profiles and campaign events from Klaviyo
**Synchronisation of lists/segments** - both way integration
**Customer data platform** - all data sources sync into one platform
You can use only the Klaviyo accounts with a number of customer profiles lower then 850,000 and a number of generated events 42,000,000 per hour.
The customer base is updated on a daily basis so new profiles in Klaviyo appear right after the daily import. The consent and campaign events are synchronised every two hours. It means that some events like Subscribed to List, Clicked email, Unsubscribe etc. might take up to 2 hours to to appear in Bloomreach Engagement. For new profiles and profile attributes it might take up to 24 hours.
The integration tracks consent information through Klaviyo lists. In some cases, events such as "Subscribed to List" or "Unsubscribed from List" may not be recorded as events, which is caused by the Klaviyo API. This can occur, for example, when a client is imported via CSV and then the events are not properly tracked.
Available on some instances only
The Klaviyo integration is **available on some instances only. **This means that some single-tenant instances and new multi-tenant instances may need manual activation of the Klaviyo integration by the engineering team first. This is generally requested during a new instance setup or can be requested any time later by contacting our Live chat or your Customer Success Manager.