Skip to contentSkip to navigationSkip to topbar
On this page
Looking for more inspiration?Visit the
(information)
You're in the right place! Segment documentation is now part of Twilio Docs. The content you are used to is still here—just in a new home with a refreshed look.

Klaviyo (Actions) Destination


Destination Info
  • Accepts Page, Alias, Group, Identify and Track calls.
  • Refer to it as Klaviyo (Actions) in the Integrations object

Klaviyo(link takes you to an external page) 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)

benefits-of-klaviyo-actions page anchor

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.

  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(link takes you to an external page) in Klaviyo's UI and copy your API Key into the Segment Settings UI.
(information)

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(link takes you to an external page) to generate a Private API Key. After you've created a key, copy it into the Segment Settings UI field.


Property nameTypeRequiredDescription
API Keypassword
required

You can find this by going to Klaviyo's UI and clicking Account > Settings > API Keys > Create API Key


Build your own Mappings. Combine supported triggers with the following Klaviyo-supported actions:

(information)

Mapping limits per destination

Individual destination instances have support a maximum of 50 mappings.

Upsert Profile

upsert-profile page anchor

Upsert user profile.

Upsert Profile is a Cloud action. The default Trigger is type = "identify"

Property nameTypeRequiredDescription
EmailSTRING

Optional

Individual's email address. One of External ID, Phone Number and Email required.


Batch Data to KlaviyoBOOLEAN

Optional

When enabled, the action will use the klaviyo batch API.


Phone NumberSTRING

Optional

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 CodeSTRING

Optional

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 IDSTRING

Optional

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 NameSTRING

Optional

Individual's first name.


Last NameSTRING

Optional

Individual's last name.


OrganizationSTRING

Optional

Name of the company or organization within the company for whom the individual works.


TitleSTRING

Optional

Individual's job title.


ImageSTRING

Optional

URL pointing to the location of a profile image.


LocationOBJECT

Optional

Individual's address.


PropertiesOBJECT

Optional

An object containing key/value pairs for any custom properties assigned to this profile.


ListSTRING

Optional

The Klaviyo list to add the profile to.


Existing List IDSTRING

Optional

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 createSTRING

Optional

The name of the list that you would like to create in Klaviyo.


Connect to a static list in KlaviyoOBJECT

Optional

When saving this mapping, we will connect to a list in Klaviyo.

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"

Property nameTypeRequiredDescription
ProfileOBJECT
required

Properties of the profile that triggered this event.


PropertiesOBJECT
required

Properties of this event.


TimeDATETIME

Optional

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.


ValueNUMBER

Optional

A numeric value to associate with this event. For example, the dollar amount of a purchase.


Unique IDSTRING

Optional

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.


ProductsOBJECT

Optional

List of products purchased in the order.


Event NameSTRING

Optional

Name of the event. This will be used as the metric name for order completed event sent to Klaviyo. It must be configured in Klaviyo.


Product Event NameSTRING

Optional

Name of the Product Event. This will be used as the metric name for each ordered product configured in the product list sent to Klaviyo. It must be configured in Klaviyo.

Track user events and associate it with their profile.

Track Event is a Cloud action. The default Trigger is type = "track"

Property nameTypeRequiredDescription
ProfileOBJECT
required

Properties of the profile that triggered this event.


Metric NameSTRING
required

Name of the event. Must be less than 128 characters.


PropertiesOBJECT
required

Properties of this event.


TimeDATETIME

Optional

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.


ValueNUMBER

Optional

A numeric value to associate with this event. For example, the dollar amount of a purchase.


Unique IDSTRING

Optional

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.


Batch Data to KlaviyoBOOLEAN

Optional

When enabled, the action will use the klaviyo batch API.

Remove Profile from List (Engage)

remove-profile-from-list-engage page anchor

Remove profile from list

Remove Profile from List (Engage) is a Cloud action. The default Trigger is event = "Audience Exited"

Property nameTypeRequiredDescription
EmailSTRING

Optional

The user's email to send to Klavio.


External IDSTRING

Optional

A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system. One of External ID and Email required.


Phone NumberSTRING

Optional

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 KlaviyoBOOLEAN

Optional

When enabled, the action will use the klaviyo batch API.


Country CodeSTRING

Optional

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

Add Profile to List is a Cloud action. The default Trigger is event = "Audience Entered"

Property nameTypeRequiredDescription
EmailSTRING

Optional

The user's email to send to Klavio.


Phone NumberSTRING

Optional

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 IDSTRING

Optional

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 KlaviyoBOOLEAN

Optional

When enabled, the action will use the klaviyo batch API.


First NameSTRING

Optional

Individual's first name.


Last NameSTRING

Optional

Individual's last name.


ImageSTRING

Optional

URL pointing to the location of a profile image.


TitleSTRING

Optional

Individual's job title.


OrganizationSTRING

Optional

Name of the company or organization within the company for whom the individual works.


LocationOBJECT

Optional

Individual's address.


PropertiesOBJECT

Optional

An object containing key/value pairs for any custom properties assigned to this profile.


Country CodeSTRING

Optional

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 from list

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

Property nameTypeRequiredDescription
EmailSTRING

Optional

Individual's email address. One of External ID, or Email required.


External IDSTRING

Optional

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.


ListSTRING
required

The Klaviyo list to add the profile to.


Batch Data to KlaviyoBOOLEAN

Optional

When enabled, the action will use the klaviyo batch API.


Phone NumberSTRING

Optional

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 CodeSTRING

Optional

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 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"

Property nameTypeRequiredDescription
EmailSTRING

Optional

The email address to subscribe. If provided, the associated profile will be subscribed to Email marketing.


Phone NumberSTRING

Optional

The phone number to subscribe. This must be in E.164 format. If provided, the associated profile will be subscribed to SMS marketing.


Country CodeSTRING

Optional

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 IdSTRING

Optional

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)STRING

Optional

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(link takes you to an external page).


Historical ImportBOOLEAN

Optional

When set to true, the profile will be subscribed as a historical import. This is useful for importing existing profiles into Klaviyo without sending them an email or SMS.


Consented AtDATETIME

Optional

The timestamp of when the profile's consent was gathered.


Batch Data to KlaviyoBOOLEAN

Optional

When enabled, the action will use the Klaviyo batch API.

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"

Property nameTypeRequiredDescription
EmailSTRING

Optional

The email address to unsubscribe. If provided, the associated profile will be unsubscribed to Email marketing.


Phone NumberSTRING

Optional

The phone number to unsubscribe. This must be in E.164 format. If provided, the associated profile will be unsubscribed to SMS marketing.


Country CodeSTRING

Optional

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 IdSTRING

Optional

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 KlaviyoBOOLEAN

Optional

When enabled, the action will use the Klaviyo batch API.


Using Klaviyo with Reverse ETL

using-klaviyo-with-reverse-etl page anchor

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.

ActionAddedUpdatedDeleted
Order CompletedSupported ✅Unsupported ❌Unsupported ❌
Track EventSupported ✅Unsupported ❌Unsupported ❌
Upsert ProfileSupported ✅Supported ✅Unsupported ❌
Remove ProfileSupported ✅Unsupported ❌Supported ✅
Subscribe ProfileSupported ✅Unsupported ❌Supported ✅ *
Unsubscribe ProfileSupported ✅Unsupported ❌Supported ✅
(information)

Info

* 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

using-klaviyo-with-engage page anchor

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.

Update opt-in settings

update-opt-in-settings page anchor

You must update opt-in settings (Single opt-in or Double opt-in) through the Klaviyo UI. Double opt-in is a process through which a new subscriber must confirm their subscription before being subscribed to a given list in Klaviyo.

To learn more about opt-in settings, visit Understanding the double opt-in process(link takes you to an external page).


Dealing with error responses from Klaviyo's API

dealing-with-error-responses-from-klaviyos-api page anchor

429 (Too Many Requests)

429-too-many-requests page anchor

If you're seeing 429 rate limit errors, try enabling batching for the impacted Action. In the mapping configuration, set "Batch data to Klaviyo" to Yes to help reduce rate limits.

If 429 errors persist, Segment automatically adjusts the event delivery rate. There's no fixed rate limit for the Klaviyo destination; Segment adapts based on Klaviyo's capacity:

  • If Klaviyo allows more traffic, Segment increases the send rate.
  • If Klaviyo returns 429 or other retryable errors, Segment slows down.
  • As more events are successfully delivered, the system gradually speeds up.

Retryable errors tell Segment to slow down, while successful deliveries let Segment send events faster.

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(link takes you to an external page). 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(link takes you to an external page).

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(link takes you to an external page) documentation.

How can I unsuppress a profile when adding it to a list?

how-can-i-unsuppress-a-profile-when-adding-it-to-a-list page anchor

When adding a user to a list, our action makes use of the Bulk Profile Import(link takes you to an external page) endpoint (when batching is enabled), and the Add Profile To List(link takes you to an external page) endpoint for non-batched requests. Both of which will not update a users suppression status if they were previously suppressed.

To unsuppress a previously suppressed profile in Klaviyo, use the Subscribe Profile action. This action automatically removes the suppression status for the user when they are subscribed. You can also pair this action with other mappings to suit your workflow.

If this approach doesn't address your use case, reach out to Segment to discuss your specific requirements.

Can batching be enabled for the entire Klaviyo (Actions) destination?

can-batching-be-enabled-for-the-entire-klaviyo-actions-destination page anchor

Batching is only available for events sent through the Upsert Profile action mapping. Other actions in the Klaviyo (Actions) destination don't support batching.

Do I need to configure event names in Klaviyo?

do-i-need-to-configure-event-names-in-klaviyo page anchor

Yes. Event names, including Event Name, Metric Name, and Product Event Name, must be preconfigured in Klaviyo. If an event name isn't set up in Klaviyo, it won't be processed or linked to user profiles.

How do I configure event names in Klaviyo?

how-do-i-configure-event-names-in-klaviyo page anchor

To configure event names in Klaviyo:

  1. Log in to your Klaviyo account.
  2. Go to Analytics > Metrics.
  3. Add or verify the event names (Event Name, Metric Name and Product Event Name) you plan to use in Segment.
  4. Event names are case-sensitive. Ensure the names exactly match the ones used in your Segment integration.

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(link takes you to an external page).

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.

(information)

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.