HomeGuidesAPI Reference
ChangelogHelp CenterCommunityContact Us
Guides
These docs are for v2023-07-15. Click to read the latest docs for v2024-10-15.

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:

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:

StepDescription
Specify data to extractDocument 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 requestsAfter 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 destinationOnce 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 QAAfter automating the ETL, you will want to validate that data flows through as expected.

Additional resources