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.
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.
- 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 field.
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:
Mapping limits per destination
Upsert user profile.
Upsert Profile is a Cloud action. The default Trigger is type = "identify"
Optional
Individual's email address. One of External ID, Phone Number and Email required.
Optional
When enabled, the action will use the klaviyo batch API.
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.
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.
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.
Optional
Individual's first name.
Optional
Individual's last name.
Optional
Name of the company or organization within the company for whom the individual works.
Optional
Individual's job title.
Optional
URL pointing to the location of a profile image.
Optional
Individual's address.
Optional
An object containing key/value pairs for any custom properties assigned to this profile.
Optional
The Klaviyo list to add the profile to.
Optional
The ID of the list in Klaviyo that users will be synced to. If defined, we will not create a new list.
Optional
The name of the list that you would like to create in Klaviyo.
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"
Properties of the profile that triggered this event.
Properties of this event.
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.
Optional
A numeric value to associate with this event. For example, the dollar amount of a purchase.
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.
Optional
List of products purchased in the order.
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.
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"
Properties of the profile that triggered this event.
Name of the event. Must be less than 128 characters.
Properties of this event.
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.
Optional
A numeric value to associate with this event. For example, the dollar amount of a purchase.
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.
Optional
When enabled, the action will use the klaviyo batch API.
Remove profile from list
Remove Profile from List (Engage) is a Cloud action. The default Trigger is event = "Audience Exited"
Optional
The user's email to send to Klavio.
Optional
A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system. One of External ID and Email required.
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.
Optional
When enabled, the action will use the klaviyo batch API.
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"
Optional
The user's email to send to Klavio.
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.
Optional
A unique identifier used by customers to associate Klaviyo profiles with profiles in an external system. One of External ID and Email required.
Optional
When enabled, the action will use the klaviyo batch API.
Optional
Individual's first name.
Optional
Individual's last name.
Optional
URL pointing to the location of a profile image.
Optional
Individual's job title.
Optional
Name of the company or organization within the company for whom the individual works.
Optional
Individual's address.
Optional
An object containing key/value pairs for any custom properties assigned to this profile.
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"
Optional
Individual's email address. One of External ID, or Email required.
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.
The Klaviyo list to add the profile to.
Optional
When enabled, the action will use the klaviyo batch API.
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.
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"
Optional
The email address to subscribe. If provided, the associated profile will be subscribed to Email marketing.
Optional
The phone number to subscribe. This must be in E.164 format. If provided, the associated profile will be subscribed to SMS marketing.
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.
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.
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.
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.
Optional
The timestamp of when the profile's consent was gathered.
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"
Optional
The email address to unsubscribe. If provided, the associated profile will be unsubscribed to Email marketing.
Optional
The phone number to unsubscribe. This must be in E.164 format. If provided, the associated profile will be unsubscribed to SMS marketing.
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.
Optional
The Klaviyo list to remove the subscribed profiles from. If no list id is provided, the profile will be unsubscribed from all channels.
Optional
When enabled, the action will use the Klaviyo batch API.
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 | Supported ✅ | Unsupported ❌ | Unsupported ❌ |
| Track Event | Supported ✅ | Unsupported ❌ | Unsupported ❌ |
| Upsert Profile | Supported ✅ | Supported ✅ | Unsupported ❌ |
| Remove Profile | Supported ✅ | Unsupported ❌ | Supported ✅ |
| Subscribe Profile | Supported ✅ | Unsupported ❌ | Supported ✅ * |
| Unsubscribe Profile | Supported ✅ | Unsupported ❌ | Supported ✅ |
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:
- Navigate to Audience > Lists & Segments.
- Click Create List/Segment.
- Choose List.
- Give your list a name and add any applicable tags.
- Click Create List.
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:
- 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.
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.
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
429or 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. 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.
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.
When adding a user to a list, our action makes 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 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.
Batching is only available for events sent through the Upsert Profile action mapping. Other actions in the Klaviyo (Actions) destination don't support batching.
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.
To configure event names in Klaviyo:
- Log in to your Klaviyo account.
- Go to Analytics > Metrics.
- Add or verify the event names (Event Name, Metric Name and Product Event Name) you plan to use in Segment.
- 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.
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.