Generally, when thinking about pushing data into Klaviyo, it helps to first understand Klaviyo’s data model, i.e. what data Klaviyo collects and how it is organized. For more on this topic see our Data Model.
Native & Third-Party Integrations
Klaviyo has more than 50 pre-built native integrations. In many cases, you’ll be able to synchronize your data into Klaviyo simply by enabling one of these integrations in Klaviyo. To see integrations we natively support, navigate to the Integrations page in the Klaviyo app.
Additionally, because Klaviyo has open APIs, some third-parties have productized integrations into Klaviyo which they support. These can be enabled by creating an API key in Klaviyo and following the configuration instructions from the third party. An illustrative example is Segment.com.
If you want to programmatically push data into Klaviyo, we have APIs that can be used to create, read, update or delete records for most of the objects in our data model. The specific endpoints, supported request formats, and example responses are detailed in our API documentation. Additionally, we have an API Reference Guide that provides a general overview, illustrative use cases, and details on Klaviyo properties.
We’ve architected Klaviyo to make it easy to push data to us and use that data with ease and without limitation. For example, here are some of the key usability principles we design for:
- No pre-configuration: We store data in a highly-denormalized manner, which means there’s no need to pre-configure your data schema in the UI or otherwise. Just send data to our APIs and you’ll see and use it in the app in real-time.
- Flexibility: We don’t limit the total quantity of unique events, aggregate events, or event properties. We allow you to pass complex data structures, such as JSON payloads including nested arrays of any data type. We don’t have any practical limitations on payload size.
- Simplicity: Pushing data typically requires interacting with just two endpoints, Track and Identify; we don’t require you to treat different any user actions or most properties in special ways. Additionally, Klaviyo will automatically understand data types such as numbers, dates, booleans, or text without you having to specify it.
- No surprise limitations: You have complete control over, and access to, all your data. We don’t have any data retention limits nor any downstream filters on how you can query data in the UI. You will have the ability to access every event and all associated metadata for every user over all time.
As noted above, the APIs you are most likely to interact with for the purposes of pushing data into Klaviyo are our Identify and Track APIs. These are used for passing profile properties and timestamped events, respectively. As noted in our API documentation, these particular endpoints are optimized for low latency and high numbers of requests, so they don’t adhere to the same REST principles our other APIs. Klaviyo's Track API, for example, has a soft limit of 2,000 requests per second - since our rate-limits are elastic, we do not publish a hard-limit. For our REST APIs we provide in API responses a timestamp for when the next request will be accepted to make it easy to efficiently retry if you do hit a limit.
Other Ways to Upload Data
Klaviyo also supports uploading Profiles into a List as well as uploading historical Metric data through our UI via CSVs. Additionally, any individual Profile property or List membership may be edited manually in the app.