Klaviyo (Actions) Destination
Klaviyo is a powerful email platform focused on ecommerce that helps companies make more money. It supports segmentation based on category and event triggers like product bought, page viewed, email engagement, or amount spent.
It measures opens, clicks, revenue generated, breakdown of generated revenue based on custom attributes (like campaign type or amount gained per recipient), and provides trend reports, cohort analysis, and subscriber growth.
Klaviyo lets you send personalized newsletters, automates triggered emails, product recommendations, welcome campaigns, order announcements, push notifications, and syncs your data to Facebook custom audiences.
Benefits of Klaviyo (Actions)
Klaviyo (Actions) provides the following benefits:
- Simple setup - Klaviyo (Actions) has a streamlined default setup process making it easier to get started in a way that “just works”.
- More control - Actions-based destinations enable you to define the mapping between the data Segment receives from your sources, and the data Segment sends to Klaviyo.
- Default property mappings - Default mappings from the Segment like event, timestamp, and more, allow data to be mapped correctly without any setup required.
Segment automatically migrated all classic Klaviyo destinations configured in Cloud mode to the Klaviyo (Actions) destination in June 2024.
If you are a Klaviyo classic user, view information about steps you might need to take in the Migrate to the Klaviyo (Actions) destination documentation.
Getting started
- From the Segment web app, click Catalog.
- Search for Klaviyo (Actions) in the Catalog, select it, and choose which of your sources to connect the destination to.
- Navigate to Account > Settings > API Keys in Klaviyo’s UI and copy your API Key into the Segment Settings UI.
Generate a Private API Key with full access to Klaviyo's Accounts, Campaigns, Events, List, Profiles, Segments, and Subscriptions APIs
Create a key by going to Klaviyo’s UI and clicking Account > Settings > API Keys > Create API Key to generate a Private API Key. After you’ve created a key, copy it into the Segment Settings UI.
Destination Settings
Setting | Description |
---|---|
API Key | Required. You can find this by going to Klaviyo’s UI and clicking Account > Settings > API Keys > Create API Key |
Available Actions
Build your own Mappings. Combine supported triggers with the following Klaviyo-supported actions:
Mapping limits per destination
Individual destination instances have support a maximum of 50 mappings.
Upsert Profile
Upsert user profile.
Upsert Profile is a Cloud action. The default Trigger is: type = "identify"
Field | Description |
---|---|
Type: STRING Individual’s email address. One of External ID, Phone Number and Email required. |
|
Batch Data to Klaviyo | Type: BOOLEAN When enabled, the action will use the klaviyo batch API. |
Phone Number | Type: STRING Individual’s phone number in E.164 format. If SMS is not enabled and if you use Phone Number as identifier, then you have to provide one of Email or External ID. |
External ID | Type: STRING A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system. One of External ID, Phone Number and Email required. |
First Name | Type: STRING Individual’s first name. |
Last Name | Type: STRING Individual’s last name. |
Organization | Type: STRING Name of the company or organization within the company for whom the individual works. |
Title | Type: STRING Individual’s job title. |
Image | Type: STRING URL pointing to the location of a profile image. |
Location | Type: OBJECT Individual’s address. |
Properties | Type: OBJECT An object containing key/value pairs for any custom properties assigned to this profile. |
List | Type: STRING The Klaviyo list to add the profile to. |
Existing List ID | Type: STRING The ID of the list in Klaviyo that users will be synced to. If defined, we will not create a new list. |
Name of list to create | Type: STRING The name of the list that you would like to create in Klaviyo. |
Connect to a static list in Klaviyo | Type: OBJECT When saving this mapping, we will connect to a list in Klaviyo. |
Order Completed
Order Completed Event action tracks users Order Completed events and associate it with their profile.
Order Completed is a Cloud action. The default Trigger is: type = "track"
Field | Description |
---|---|
Profile* | Type: OBJECT Properties of the profile that triggered this event. |
Properties* | Type: OBJECT Properties of this event. |
Time | Type: DATETIME When this event occurred. By default, the time the request was received will be used. The time is truncated to the second. The time must be after the year 2000 and can only be up to 1 year in the future. |
Value | Type: NUMBER A numeric value to associate with this event. For example, the dollar amount of a purchase. |
Unique ID | Type: STRING A unique identifier for an event. If the unique_id is repeated for the same profile and metric, only the first processed event will be recorded. If this is not present, this will use the time to the second. Using the default, this limits only one event per profile per second. |
Products | Type: OBJECT List of products purchased in the order. |
Event Name | Type: STRING Name of the event. This will be used as the metric name in Klaviyo. |
Track Event
Track user events and associate it with their profile.
Track Event is a Cloud action. The default Trigger is: type = "track"
Field | Description |
---|---|
Profile* | Type: OBJECT Properties of the profile that triggered this event. |
Metric Name* | Type: STRING Name of the event. Must be less than 128 characters. |
Properties* | Type: OBJECT Properties of this event. |
Time | Type: DATETIME When this event occurred. By default, the time the request was received will be used. The time is truncated to the second. The time must be after the year 2000 and can only be up to 1 year in the future. |
Value | Type: NUMBER A numeric value to associate with this event. For example, the dollar amount of a purchase. |
Unique ID | Type: STRING A unique identifier for an event. If the unique_id is repeated for the same profile and metric, only the first processed event will be recorded. If this is not present, this will use the time to the second. Using the default, this limits only one event per profile per second. |
Remove Profile from List (Engage)
Remove profile from list
Remove Profile from List (Engage) is a Cloud action. The default Trigger is: event = "Audience Exited"
Field | Description |
---|---|
Type: STRING The user’s email to send to Klavio. |
|
External ID | Type: STRING A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system. One of External ID and Email required. |
Phone Number | Type: STRING Individual’s phone number in E.164 format. If SMS is not enabled and if you use Phone Number as identifier, then you have to provide one of Email or External ID. |
Batch Data to Klaviyo | Type: BOOLEAN When enabled, the action will use the klaviyo batch API. |
Add Profile to List (Engage)
Add Profile To List
Add Profile to List (Engage) is a Cloud action. The default Trigger is: event = "Audience Entered"
Field | Description |
---|---|
Type: STRING The user’s email to send to Klavio. |
|
Phone Number | Type: STRING Individual’s phone number in E.164 format. If SMS is not enabled and if you use Phone Number as identifier, then you have to provide one of Email or External ID. |
External ID | Type: STRING A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system. One of External ID and Email required. |
Batch Data to Klaviyo | Type: BOOLEAN When enabled, the action will use the klaviyo batch API. |
First Name | Type: STRING Individual’s first name. |
Last Name | Type: STRING Individual’s last name. |
Image | Type: STRING URL pointing to the location of a profile image. |
Title | Type: STRING Individual’s job title. |
Organization | Type: STRING Name of the company or organization within the company for whom the individual works. |
Location | Type: OBJECT Individual’s address. |
Properties | Type: OBJECT An object containing key/value pairs for any custom properties assigned to this profile. |
Remove Profile
Remove profile from list
Remove Profile is a Cloud action. The default Trigger is: event = "Identify"
Field | Description |
---|---|
Type: STRING Individual’s email address. One of External ID, or Email required. |
|
External ID | Type: STRING A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system. One of External ID, Phone Number and Email required. |
List* | Type: STRING The Klaviyo list to add the profile to. |
Batch Data to Klaviyo | Type: BOOLEAN When enabled, the action will use the klaviyo batch API. |
Phone Number | Type: STRING Individual’s phone number in E.164 format. If SMS is not enabled and if you use Phone Number as identifier, then you have to provide one of Email or External ID. |
Subscribe Profile
Subscribe Klaviyo profiles to Email marketing, SMS marketing, or both.
Subscribe Profile is a Cloud action. The default Trigger is: type = "track" and event = "User Subscribed"
Field | Description |
---|---|
Type: STRING The email address to subscribe. If provided, the associated profile will be subscribed to Email marketing. |
|
Phone Number | Type: STRING The phone number to subscribe. This must be in E.164 format. If provided, the associated profile will be subscribed to SMS marketing. |
List Id | Type: STRING The Klaviyo list to add the newly subscribed profiles to. If no List Id is present, the opt-in process used to subscribe the profile depends on the account’s default opt-in settings. |
Custom Source ($source) | Type: STRING A custom method or source to detail source of consent preferences (e.g., “Marketing Event”). The default is set to -59, as this is the $source value associated with Segment. |
Consented At | Type: DATETIME The timestamp of when the profile’s consent was gathered. |
Batch Data to Klaviyo | Type: BOOLEAN When enabled, the action will use the Klaviyo batch API. |
Unsubscribe Profile
Unsubscribe Klaviyo profiles from Email marketing, SMS marketing, or both.
Unsubscribe Profile is a Cloud action. The default Trigger is: type = "track" and event = "User Unsubscribed"
Field | Description |
---|---|
Type: STRING The email address to unsubscribe. If provided, the associated profile will be unsubscribed to Email marketing. |
|
Phone Number | Type: STRING The phone number to unsubscribe. This must be in E.164 format. If provided, the associated profile will be unsubscribed to SMS marketing. |
List Id | Type: STRING The Klaviyo list to remove the subscribed profiles from. If no list id is provided, the profile will be unsubscribed from all channels. |
Batch Data to Klaviyo | Type: BOOLEAN When enabled, the action will use the Klaviyo batch API. |
Using Klaviyo with RETL
Klaviyo (Actions) Destination can accept RETL data. You can send the models you created in your data warehouse source. Follow the steps to create your data warehouse source and set up models.
Action | Added | Updated | Deleted |
---|---|---|---|
Order Completed | |||
Track Event | |||
Upsert Profile | |||
Remove Profile | |||
Subscribe Profile | * | ||
Unsubscribe Profile |
* Though technically possible, it may not be the most intuitive approach to using RETL.
e.g., Triggering a Subscribe Profile action when a user is deleted from a Model that queries unsubscribed users.
In order to add users to a list, use the Upsert Profile Action and fill out the List field with the Klaviyo list to add the profile to.
Follow these steps to create a list in Klaviyo:
- Navigate to Audience > Lists & Segments.
- Click Create List/Segment.
- Choose List.
- Give your list a name and add any applicable tags.
- Click Create List.
Using Klaviyo with Engage
Klaviyo (Actions) Destination can accept your Engage data. If you wish to add a profile to a list associated with the Engage audienceId, you don’t need to create a list in Klaviyo. During the first sync with the Add Profile To List (Engage) Mapping, Segment creates a list with the same ID as your audience.
To add and remove profiles in Klaviyo with Engage Audience data:
- Create and configure your Engage Audience.
- Navigate to Engage > Engage Settings > Destinations and click Add Destination.
- Select Klaviyo (Actions).
- Select your Audience Space as the source, and name your destination.
- On the Mappings tab, click Add Mapping and select Add Profile To List (Engage).
- Click Save and make sure to enable the mapping.
- On the Mappings tab, click Add Mapping and select Remove Profile from List (Engage).
- Click Save and make sure you enable the mapping.
- Enable the destination.
- On the Engage > Audiences > (your audience) page, click Add Destination and select the destination created.
- In the settings that appear in the side panel, toggle the Send Track option on, and don’t change the Audience Entered/Audience Exited event names.
- Click Save Settings.
FAQ
Dealing with Error Responses from Klaviyo’s API
429 Too Many Requests
If you’re encountering rate limiting issues, consider enabling batching for the Action receiving these errors. To enable mapping, navigate to the mapping configuration and set “Batch data to Klaviyo” to “Yes”. This adjustment might help alleviate the rate limiting problem.
409 Conflict
In most cases, you can safely ignore a 409
error code.
When you use the Upsert Profile mapping to send Identify events, Segment first attempts to create a new profile in Klaviyo. If the first request returns with a 409
error code, Segment sends a second request to update the existing profile with the given profile ID.
Can I send Engage Audiences to a pre-created Klaviyo List?
No. Engage audiences are designed to initiate the creation of new lists in Klaviyo when you use the “Add Profile to List - Engage” mapping. You cannot link Engage lists to existing Klaviyo lists and cannot edit the List ID for Engage audiences.
How can I unsuppress a profile when adding it to a list?
When adding a user to a list, our action make use of the Bulk Profile Import{target=”_blank”} endpoint (when batching is enabled), and the Add Profile To List{target=”_blank”} endpoint for non-batched requests. Both of which will not update a users suppression status if they were previously suppressed.
To ensure a suppressed profile gets unsuppressed, you can use the “Subscribe Profile” action. When a profile is subscribed in Klaviyo, it automatically unsuppresses any previously suppressed user. You can combine this action with other actions to achieve your goal. If this solution does not fully address your use case, please contact us at friends@segment.com so we can consider your specific requirements.
Engage
You can send computed traits and audiences generated using Engage to this destination as a user property. To learn more about Engage, schedule a demo.
For user-property destinations, an identify call is sent to the destination for each user being added and removed. The property name is the snake_cased version of the audience name, with a true/false value to indicate membership. For example, when a user first completes an order in the last 30 days, Engage sends an Identify call with the property order_completed_last_30days: true
. When the user no longer satisfies this condition (for example, it’s been more than 30 days since their last order), Engage sets that value to false
.
When you first create an audience, Engage sends an Identify call for every user in that audience. Later audience syncs only send updates for users whose membership has changed since the last sync.
Real-time to batch destination sync frequency
Real-time audience syncs to Klaviyo (Actions) may take six or more hours for the initial sync to complete. Upon completion, a sync frequency of two to three hours is expected.
Settings
Segment lets you change these destination settings from the Segment app without having to touch any code.
Setting | Description |
---|---|
API Key (required) |
password . You can find this by going to Klaviyo’s UI and clicking Account > Settings > API Keys > Create API Key |
This page was last modified: 19 Aug 2024
Need support?
Questions? Problems? Need more info? Contact Segment Support for assistance!