Klaviyo (Actions) Destination

Destination Info

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

  1. From the Segment web app, click Catalog.
  2. Search for Klaviyo (Actions) in the Catalog, select it, and choose which of your sources to connect the destination to.
  3. 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"

Click to show / hide fields

Field Description
Email 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.

Country Code Type: STRING

Country Code in ISO 3166-1 alpha-2 format. If provided, this will be used to validate and automatically format Phone Number field in E.164 format accepted by Klaviyo.

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"

Click to show / hide fields

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"

Click to show / hide fields

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"

Click to show / hide fields

Field Description
Email 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.

Country Code Type: STRING

Country Code in ISO 3166-1 alpha-2 format. If provided, this will be used to validate and automatically format Phone Number field in E.164 format accepted by Klaviyo.

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"

Click to show / hide fields

Field Description
Email 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.

Country Code Type: STRING

Country Code in ISO 3166-1 alpha-2 format. If provided, this will be used to validate and automatically format Phone Number field in E.164 format accepted by Klaviyo.

Remove Profile

Remove profile from list

Remove Profile is a Cloud action. The default Trigger is: event = "Identify"

Click to show / hide fields

Field Description
Email 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.

Country Code Type: STRING

Country Code in ISO 3166-1 alpha-2 format. If provided, this will be used to validate and automatically format Phone Number field in E.164 format accepted by Klaviyo.

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"

Click to show / hide fields

Field Description
Email 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.

Country Code Type: STRING

Country Code in ISO 3166-1 alpha-2 format. If provided, this will be used to validate and automatically format Phone Number field in E.164 format accepted by Klaviyo.

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"

Click to show / hide fields

Field Description
Email 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.

Country Code Type: STRING

Country Code in ISO 3166-1 alpha-2 format. If provided, this will be used to validate and automatically format Phone Number field in E.164 format accepted by Klaviyo.

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 Reverse ETL

Klaviyo (Actions) Destination can accept Reverse ETL data from your data warehouse sources. Follow the steps in Segment’s Reverse ETL setup guide 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, this may not be the most intuitive approach to using Reverse ETL.

In order to add users to a list, use the Upsert Profile Action and fill out the List field with the Klaviyo list you’d like to add the profile to.

Follow these steps to create a list in Klaviyo:

  1. Navigate to Audience > Lists & Segments.
  2. Click Create List/Segment.
  3. Choose List.
  4. Give your list a name and add any applicable tags.
  5. Click Create List.

Using Klaviyo with Engage

Klaviyo (Actions) Destination can accept your Engage data. If you want to add a profile to a list associated with an 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:

  1. Create and configure your Engage Audience.
  2. Navigate to Engage > Engage Settings > Destinations and click Add Destination.
  3. Select Klaviyo (Actions).
  4. Select your Audience Space as the source, and name your destination.
  5. On the Mappings tab, click Add Mapping and select Add Profile To List (Engage).
  6. Click Save and make sure to enable the mapping.
  7. On the Mappings tab, click Add Mapping and select Remove Profile from List (Engage).
  8. Click Save and make sure you enable the mapping.
  9. Enable the destination.
  10. On the Engage > Audiences > (your audience) page, click Add Destination and select the destination created.
  11. 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.
  12. 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 batching, 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.

403 Forbidden

Some customers experience 403 errors when sending audience data to Klaviyo through Segment. This occurs due to Klaviyo’s security measures blocking requests from shared IPs, which are common when using cloud-hosted platforms, like Segment, that use dynamically generated IP addresses.

To reduce the number of 403 errors that you encounter, enable IP Allowlisting for your workspace. For more information the range of IP addresses Klaviyo uses for integration traffic, see Klaviyo’s How to allowlist Klaviyo integration traffic IP addresses documentation.

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 endpoint (when batching is enabled), and the Add Profile To List 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: 14 Oct 2024



Get started with Segment

Segment is the easiest way to integrate your websites & mobile apps data to over 300 analytics and growth tools.
or
Create free account