Klaviyo is an sms and email marketing automation platform for e-commerce, which helps grow businesses.
Data integration: Skyvia supports importing data to and from Klaviyo, exporting Klaviyo data to CSV files, replicating Klaviyo data to relational databases, and synchronizing Klaviyo data with other cloud apps and relational databases.
Backup: Skyvia Backup does not support Klaviyo.
Query: Skyvia Query supports Klaviyo.
To create a connection with Klaviyo, you need to specify Private API Key and Public API Key.
Private API Key — REST API authentication token for connecting to Klaviyo. A private API key is also used for reading data from Klaviyo and manipulating sensitive objects, such as lists. You can manage an API token in the Klaviyo interface. If needed, you can also generate multiple private API keys in your Klaviyo account. Read more about private API keys here.
Public API Key — a unique identifier for your Klaviyo account, also called your Site ID. Every Klaviyo account has only one public API key. Read more about the public API key here.
To get the API Keys, perform the following steps:
- Sign in to Klaviyo.
- Click the User icon in the bottom left corner.
- Select Settings on the appeared menu.
- Switch to the API Keys tab and copy your Public API Key and Private API Key.
Enter the obtained API Keys in the Connection Editor.
The following Klaviyo objects are read-only: SegmentProfiles, SegmentTags, ListTags, EventMetrics, EventProfiles, FlowActions, FlowTags, GroupTags.
You can update only imported HTML templates in the EmailTemplates object. You can’t update drag & drop templates.
The Campaigns Object displays only the Email campaigns. It does not display SMS campaigns. When inserting a new campaign, a new template is created based on the template specified during import. For example, if you import five campaigns and set the same TemplateId value for all campaigns in the import package, each campaign will have a unique TemplateId field value in the created records.
The record is successfully added to the ListMembers object only if there is no record with the specified ListId and Email. If the record already exists in the object for the specified ListId and Email, and if values are specified for the PhoneNumber or PushToken fields, then the Update operation is performed instead of Insert, i.e., a new record will not be added, but instead the PhoneNumber and PushToken fields will be updated for the existing record with the ListId and Email fields.
ListSubscribe object allows retrieving data only by Email and PhoneNumber. Values for both columns must be specified in a filter or the SQL command WHERE clause united by the AND operator. For example,
1 SELECT t.* FROM ListSubscribe AS t WHERE (t.ListId = 'YvXkqE' AND t.Email = '[email protected]' AND t.PhoneNumber = '+13239179104')
You can insert records to this object for lists with a Single opt-in turned on. For other lists, record inserting finishes successfully, but no records are added.
DailyMetrics, WeeklyMetrics, MonthlyMetrics
The DailyMetrics, WeeklyMetrics, and MonthlyMetrics are the child objects for the Metrics object. We recommend filtering by MetricId when querying data from the DailyMetrics, WeeklyMetrics, and MonthlyMetrics to increase query performance.
Skyvia does not require filtering by the parent object record Id when querying data from a child object. Without filtering by parent record Id, Skyvia first queries all the parent object records, reading each record Id. Then Skyvia looks up child object records to each parent object record Id. This approach allows querying child objects without knowing their parents, but this method consumes time and API calls. It uses at least one API call for every parent object record. Thus, working with these tables may affect performance. We strongly recommend using filters on the parent object fields when querying data from child objects.
DailyMetrics, WeeklyMetrics, MonthlyMetrics store metrics for calendar days, weeks, and months respectively.
when querying data from these tables you can set the date range for data selection. To do this, set filters by Date, WeekStartDate and MonthStartDate fields and
=, >, >=, <, <= operators.
If you don’t use filters by date when querying data from these objects, by default, Klaviyo returns data for one calendar year before today.
If you use the filter by start date only, Klaviyo returns the data for a calendar year from the start date or until today if a year has yet to pass from the start date.
These objects return the data only for the full and already passed calendar days, weeks(Monday till Sunday), and months (1 to 30 (31) days). They do not return data for current days, weeks or months. You can’t select a part of the period, only full period returns in the query result.
If you filter by the date range, which is wider than a full calendar week or month, Klaviyo returns the data only for the full included calendar week or month. If you filter by the date range, which is less than a calendar week or month, Klaviyo returns the empty result.
For example, you perform the following query:
1 SELECT * FROM MonthlyMetrics WHERE MonthStartDate > '2022-12-25' AND MonthStartDate < '2023-02-05'
This query result will return only the data for the full month included in the selected period (from the 1st to the 31st of January).
Incremental Replication and Synchronization
- Skyvia supports Replication with Incremental Updates for such Klaviyo objects as Campaigns, EmailTemplates, Lists, ListExclusions, Metrics, DailyMetrics, WeeklyMetrics, and MonthlyMetrics.
Incremental Replication tracks only the inserted records for the DailyMetrics, WeeklyMetrics, and MonthlyMetrics objects.
When replicating DailyMetrics, WeeklyMetrics, and MonthlyMetrics, Skyvia pulls data only for the already passed periods. Incremental Replication does not pull data for the current date for DailyMetrics, the current week for WeeklyMetrics, and the current month for MonthlyMetrics.
- Skyvia supports Synchronization for Campaigns, Lists, and EmailTemplates.
DML Operations Support
|INSERT, UPDATE, DELETE||EmailTemplates, Lists, Templates, CatalogCategories, CatalogVariants, CatalogItems, Tags, TagGroups|
|INSERT, UPDATE||Campaigns, Profiles|
|INSERT||ListMembers, ListSubscribe, PeopleExclusions|
AddListProfiles(:ListId, :PersonId) to insert records to the ListProfiles object.
You can call the stored procedure, for example, as a text of the command in the ExecuteCommand action in a Target component of a Data Flow or in Query.
Skyvia supports all the common actions for Klaviyo.