Export data from Klaviyo
Learn how to export data from Klaviyo, including how to integrate Klaviyo with a data warehouse.
Data objects
When understanding how to export data from Klaviyo and sync it into another system, it helps to first understand Klaviyo’s data model (i.e., what data Klaviyo collects and how it’s organized).
Metrics, as the key data object representing a given person’s activity and engagement with your brand and messaging, are the most commonly requested data objects to export from Klaviyo. Metrics are actions represented as timestamped records that include JSON-formatted payloads that can contain an unlimited quantity of key-value pairs, including arrays and further-nested JSON. Klaviyo automatically records Metrics for email, push, and SMS-related activity such as "Received Email", "Opened Email", "Clicked Email", and more. Some other common objects that may be exported include Profiles, Lists, and Unsubscribes.
Exporting data
You can find a complete list of our available APIs for exporting Klaviyo data on our API docs. Here are some of our more frequently used export APIs:
-
Get Metrics Info
Returns a list of all the metrics in your account. -
Get Events for All Metrics
Returns a batched timeline of all events in your account. -
Get Events for a Specific Metric
Returns a batched timeline for one specific metric. -
Query Event Data
Exports aggregate counts of event data from Klaviyo, optionally filtering and segmenting on available event properties. -
Get Profile
Retrieves all the profile properties for a profile, using theprofile_id
. Can also request specific fields using sparse field-sets. -
Get Profile’s Events for All Metrics
Returns a batched timeline of all events for a person when you pass in theprofile_id
as a filter. -
Get Profile’s Events for a Specific Metric
Returns a batched timeline of all events for one specific Metric for a given person when you pass theprofile_id
andmetric_id
as filters. -
Get Lists
Returns a listing of all of the lists in an account. -
Get List Info
Returns information about a list. -
Get List Members
Gets all profiles in a given list. -
Get Segment Members
Gets all profiles in a given segment. -
Get Campaigns
Returns a list of all the campaigns you've created. -
Get Campaign Info
Returns summary information for the campaign specified. -
Get Campaign Recipient Estimation
Returns summary information about email recipients for the campaign specified. -
Get All Templates
Returns a list of all the email templates you've created.
Example: how to export data
Klaviyo exposes data for export through REST APIs associated with these data objects. You can use these to extract information, optionally using parameters to refine the information returned. As an example, a simple curl request to retrieve a list of each unique metric observed in the account via the Klaviyo Metrics API would look like this:
curl --location 'https://a.klaviyo.com/api/metrics/' \
--header 'revision: {latest revision header}' \
--header 'Accept: application/json' \
--header 'Authorization: Klaviyo-API-Key {your private API Key}'
The GET call returns a JSON object with all the fields of the specified dataset as a reply. In this illustrative example, the account has three unique metrics. The resulting JSON would look like:
{
"data": [
{
"type": "metric",
"id": "KxhW33",
"attributes": {
"name": "Clicked Email",
"created": "2020-01-28T13:33:15+00:00",
"updated": "2020-01-28T13:33:15+00:00",
"integration": {
"object": "integration",
"id": "0rG4eQ",
"name": "Klaviyo",
"category": "Internal"
}
},
"links": {
"self": "https://a.klaviyo.com/api/metrics/KxhW33/"
}
},
{
"type": "metric",
"id": "JUzjai",
"attributes": {
"name": "Added to Cart",
"created": "2020-01-29T13:19:30+00:00",
"updated": "2021-08-27T08:41:10+00:00",
"integration": {
"object": "integration",
"id": "7FtS4J",
"name": "API",
"category": "API"
}
},
"links": {
"self": "https://a.klaviyo.com/api/metrics/JUzjai/"
}
},
{
"type": "metric",
"id": "XNJ6uB",
"attributes": {
"name": "Placed Order",
"created": "2023-04-19T03:01:44+00:00",
"updated": "2023-04-19T03:01:44+00:00",
"integration": {
"object": "integration",
"id": "7FtS4J",
"name": "Shopify",
"category": "eCommerce"
}
},
"links": {
"self": "https://a.klaviyo.com/api/metrics/XNJ6uB/"
}
}
]
Use case: integrating Klaviyo with a data warehouse
If you’d like to extract data from Klaviyo to a data warehouse or internal system, the general integration process is as follows:
Step | Description |
---|---|
Specify data to extract | Document the data objects and any filtering criteria that you want to apply when extracting the data. For example, if you are interested in syncing Klaviyo-originated metrics into another system, it would look like: Data objects: Metrics Filtering criteria: All Metrics where “attributes.integration.name” equals “Klaviyo” |
Test and validate API requests | After documenting the data to extract, we recommend identifying the Klaviyo API endpoints that return the desired data and using the Get Metrics to fetch and validate the data, then define the logical steps for automation. Using the example above, it might look like this: Step 1: GET request to https://a.klaviyo.com/api/metrics/ in order to get a list of all unique metrics. If you wanted to go a step further and just get metrics from a specific integration, you could with a GET request that looks like this https://a.klaviyo.com/api/metrics/?filter=equals(integration.name,"insert integration name here") Step 2: GET request to https://a.klaviyo.com/api/events/ for each metric_id of interest |
Map source data to destination | Once you know the data that you want to extract and how to extract it, you must map Klaviyo’s data structure into your data warehouse or other internal system. Klaviyo’s APIs return JSON formatted data, so if your warehouse or other business system requires another format, you may need to manipulate the output to conform to destination expectations. |
Build ETL (or use a pre-built connector) | Once you have the specifications for extracting data and mapping it to your target destination, the next step is to author the code that will automate the extract, transfer, and load (ETL) logic. You may benefit from using an open-source tool such as a Singer-Tap to achieve this. If you prefer to avoid this step, you may opt for a tool with a pre-built Klaviyo integration such as Segment.com, Stitch Data, or Fivetran. |
Perform QA | After automating the ETL, you will want to validate that data flows through as expected. |
Additional resources
Updated over 1 year ago