Integration specifications
This documentation is still under construction 🚧
Data load speeds for Klaviyo are slow
Klaviyo is an extremely slow endpoint and loading history can take a considerable amount of time if the data volume is high.
Integration Overview
Our Klaviyo extractor pulls information about your Email/SMS profiles, lists, and events so that they can be analyzed alongside your order and marketing data.
Integration Availability
This integration is available for:
Enterprise
Growth
API Endpoints
This extractor is based on this documentation. The following endpoints are used by Daasity to replicate data:
Klaviyo V2 Schema
The Klaviyo V2 extractor creates these tables using the endpoints and replication methods listed. The data is mapped from source API endpoint to the table based on the mapping logic outlined in each table.
Campaigns
Endpoint: Get Campaigns
Update Method: UPSERT
Table Name: [
klaviyo_v2.campaigns
]
JSON Element | Database Column |
---|---|
data[].id | campaign_id |
data[].attributes.name | name |
data[].attributes.status | status |
data[].attributes.archived | archived |
data[].attributes.channel | channel |
data[].attributes.send_options.use_smart_sending | send_options_use_smart_sending |
data[].attributes.send_options.ignore_unsubscribes | send_options_ignore_unsubscribes |
data[].attributes.tracking_options.is_tracking_opens | tracking_options_is_tracking_opens |
data[].attributes.tracking_options.is_tracking_clicks | tracking_options_is_tracking_clicks |
data[].attributes.tracking_options.is_add_utm | tracking_options_is_add_utm |
data[].attributes.send_strategy.method
| send_strategy_method |
data[].attributes.send_strategy.options_static.datetime | send_strategy_options_static_datetime |
data[].attributes.send_strategy.options_static.is_local | send_strategy_options_static_is_local |
data[].attributes.send_strategy.options_static.send_past_recipients_immediately | send_strategy_options_static_send_past_recipients_immediately |
data[].attributes.send_strategy.options_throttled.datetime | send_strategy_options_throttled_datetime |
data[].attributes.send_strategy.options_throttled.throttle_percentage | send_strategy_options_throttled_throttle_percentage |
data[].attributes.send_strategy.options_sto.date | send_strategy_options_sto_date |
data[].attributes.created_at | created_at |
data[].attributes.scheduled_at | scheduled_at |
data[].attributes.updated_at | updated_at |
data[].attributes.send_time | send_time |
Campaign Audiences Excluded
Endpoint: Get Campaigns
Update Method: UPSERT
Table Name: [
klaviyo_v2.campaign_audiences_excluded
]
JSON Element | Database Column |
---|---|
data[].id | campaign_id |
data[].attributes.audiences.audience_type[] | audience_id |
Campaign Audiences Included
Endpoint: Get Campaigns
Update Method: UPSERT
Table Name: [
klaviyo_v2.campaign_audiences_included
]
JSON Element | Database Column |
---|---|
data[].id | campaign_id |
data[].attributes.audiences.audience_type[] | audience_id |
Campaign Messages
Endpoint: Get Campaigns
Update Method: UPSERT
Table Name: [
klaviyo_v2.campaign_messages
]
JSON Element | Database Column |
---|---|
included[].attributes.relationships.campaign.id | campaign_message_type |
included[].id | campaign_message_id |
included[].attributes.label | label |
included[].attributes.channel | channel |
included[].attributes.content.subject | content_subject |
included[].attributes.content.preview_text | content_preview_text |
included[].attributes.content.from_email | content_from_email |
included[].attributes.content.from_label | content_from_label |
included[].attributes.content.reply_to_email | content_reply_to_email |
included[].attributes.content.cc_email | content_cc_email |
included[].attributes.content.bcc_email | content_bcc_email |
included[].attributes.render_options.shorten_links | render_options_shorten_links |
included[].attributes.render_options.add_org_prefix | render_options_add_org_prefix |
included[].attributes.render_options.add_info_link | render_options_add_info_link |
included[].attributes.render_options.add_opt_out_language | render_options_add_opt_out_language |
included[].attributes.created_at | created_at |
included[].attributes.updated_at | updated_at |
included[].attributes.relationships.campaign.data.type | campaign_data_type |
included[].attributes.relationships.campaign.data.id | campaign_data_id |
included[].attributes.relationships.template.data.type | template_data_type |
included[].attributes.relationships.template.data.id | template_data_id |
Campaign Message Send Times
Endpoint: Get Campaigns
Update Method: UPSERT
Table Name: [
klaviyo_v2.campaign_message_send_times
]
JSON Element | Database Column |
---|---|
included[].id | campaign_message_id |
included[].relationships.campaign.data.id | campaign_id |
included[].attributes.send_times[].datetime | send_time_datetime |
included[].attributes.send_times[].is_local | send_time_is_local |
Campaign Tags
Endpoint: Get Campaigns
Update Method: UPSERT
Table Name: [klaviyo_v2.campaign_audiences_excluded]
JSON Element | Database Column |
---|---|
data[].id | campaign_id |
data[].relationships.tags.data[].id | tag_id |
data[].relationships.tags.data[].type | tag_type |
Events
Endpoint: Get Events
Update Method: UPSERT
Table Name: [
klaviyo_v2.events
]
JSON Element | Database Column |
---|---|
data[].attributes.event_properties.$attribution.$attributed_channel | ATTRIBUTION_ATTRIBUTED_CHANNEL |
data[].attributes.event_properties.$attribution.$attributed_event_id | ATTRIBUTION_ATTRIBUTED_EVENT_ID |
data[].attributes.event_properties.$attribution.$flow | ATTRIBUTION_FLOW |
data[].attributes.event_properties.$attribution.$message | ATTRIBUTION_MESSAGE |
data[].attributes.event_properties.$attribution.$send_ts | ATTRIBUTION_SEND_TS |
data[].attributes.event_properties.$attribution.$variation | ATTRIBUTION_VARIATION |
data[].attributes.event_properties.Bounce Type | BOUNCE_TYPE |
data[].attributes.event_properties.Campaign Name | CAMPAIGN_NAME |
data[].attributes.event_properties.Carrier Delivery Status | CARRIER_DELIVERY_STATUS |
data[].attributes.event_properties.Client Canonical | CLIENT_CANONICAL |
data[].attributes.event_properties.Client Name | CLIENT_NAME |
data[].attributes.event_properties.Client OS | CLIENT_OS |
data[].attributes.event_properties.Client OS Family | CLIENT_OS_FAMILY |
data[].attributes.event_properties.Client Type | CLIENT_TYPE |
data[].attributes.event_properties.$_cohort$message_send_cohort | COHORT_MESSAGE_SEND_COHORT |
data[].attributes.event_properties.$_cohort$variation_send_cohort | COHORT_VARIATION_SEND_COHORT |
data[].attributes.event_properties.Content Type | CONTENT_TYPE |
data[].attributes.event_properties.Email Domain | EMAIL_DOMAIN |
data[].attributes.event_properties.$ESP | ESP |
data[].attributes.datetime | EVENT_DATETIME |
data[].attributes.event_properties.$event_id | EVENT_ID |
data[].attributes.event_properties.$extra.$bounce_delivery_info.action_id | EXTRA_BOUNCE_DELIVERY_INFO_ACTION_ID |
data[].attributes.event_properties.$extra.$bounce_delivery_info.add_exclusion | EXTRA_BOUNCE_DELIVERY_INFO_ADD_EXCLUSION |
data[].attributes.event_properties.$extra.$bounce_delivery_info.code | EXTRA_BOUNCE_DELIVERY_INFO_CODE |
data[].attributes.event_properties.$extra.$bounce_delivery_info.ip | EXTRA_BOUNCE_DELIVERY_INFO_IP |
data[].attributes.event_properties.$extra.$bounce_delivery_info.is_autoresponder | EXTRA_BOUNCE_DELIVERY_INFO_IS_AUTORESPONDER |
data[].attributes.event_properties.$extra.$bounce_delivery_info.reason | EXTRA_BOUNCE_DELIVERY_INFO_REASON |
data[].attributes.event_properties.$extra.$bounce_delivery_info.type | EXTRA_BOUNCE_DELIVERY_INFO_TYPE |
data[].attributes.event_properties.$extra.customer_merge | EXTRA_CUSTOMER_MERGE |
data[].attributes.event_properties.$extra.From City | EXTRA_FROM_CITY |
data[].attributes.event_properties.$extra.From Country | EXTRA_FROM_COUNTRY |
data[].attributes.event_properties.$extra.From State | EXTRA_FROM_STATE |
data[].attributes.event_properties.$extra.IP Address | EXTRA_IP_ADDRESS |
data[].attributes.event_properties.$extra.Message Body | EXTRA_MESSAGE_BODY |
data[].attributes.event_properties.$extra.Message ID | EXTRA_MESSAGE_ID |
data[].attributes.event_properties.$extra.$metadata.recipient_variation_id | EXTRA_METADATA_RECIPIENT_VARIATION_ID |
data[].attributes.event_properties.Failure Source | FAILURE_SOURCE |
data[].attributes.event_properties.Failure Type | FAILURE_TYPE |
data[].attributes.event_properties.$flow | FLOW |
data[].attributes.event_properties.From Number | FROM_NUMBER |
data[].attributes.event_properties.From Phone Region | FROM_PHONE_REGION |
data[].id | ID |
data[].attributes.event_properties.Inbox Provider | INBOX_PROVIDER |
data[].attributes.event_properties.$internal.send_timestamp | INTERNAL_SEND_TIMESTAMP |
data[].attributes.event_properties.$internal.vendor | INTERNAL_VENDOR |
data[].attributes.event_properties.$extra.$bounce_delivery_info.ip | IP |
data[].attributes.event_properties.$klaviyo_bounce_category | KLAVIYO_BOUNCE_CATEGORY |
data[].attributes.event_properties.List | LIST |
data[].attributes.event_properties.machine_open | MACHINE_OPEN |
data[].attributes.event_properties.$message | MESSAGE |
data[].attributes.event_properties.Message Body | MESSAGE_BODY |
data[].attributes.event_properties.Message Format | MESSAGE_FORMAT |
data[].attributes.event_properties.$message_interaction | MESSAGE_INTERACTION |
data[].attributes.event_properties.Message Name | MESSAGE_NAME |
data[].attributes.event_properties.Message Type | MESSAGE_TYPE |
data[].attributes.event_properties.Method | METHOD |
data[].relationships.metric.data.id | METRIC_DATA_ID |
data[].relationships.metric.data.type | METRIC_DATA_TYPE |
data[].relationships.profile.data.id | PROFILE_DATA_ID |
data[].relationships.profile.data.type | PROFILE_DATA_TYPE |
data[].relationships.profile.data.id | PROFILE_EMAIL |
data[].attributes.event_properties.Segment Count | SEGMENT_COUNT |
data[].attributes.event_properties.Subject | SUBJECT |
data[].attributes.timestamp | TIMESTAMP |
data[].attributes.event_properties.To Number | TO_NUMBER |
data[].attributes.event_properties.To Phone Region | TO_PHONE_REGION |
data[].type | TYPE |
data[].attributes.event_properties.URL | URL |
data[].attributes.uuid | UUID |
data[].attributes.event_properties.$variation | VARIATION |
data[].attributes.event_properties.Vendor Error Code | VENDOR_ERROR_CODE |
Event Attribution Group IDs
Event Group IDs
Flows
Endpoint: Get Flows
Update Method: UPSERT
Table Name: [
klaviyo_v2.flows
]
JSON Element | Database Column |
---|---|
data[].attributes.name | name |
data[].attributes.status | status |
data[].attributes.archived | archived |
data[].attributes.created | created |
data[].attributes.updated | updated |
data[].attributes.trigger_type | trigger_type |
Flow Actions
Endpoint: Get Flows
Update Method: UPSERT
Table Name: [
klaviyo_v2.flow_actions
]
JSON Element | Database Column |
---|---|
data[].id | flow_action_id |
data[].relationships.flow.data.id | flow_id |
data[].attributes.action_type | action_type |
data[].attributes.status | status |
data[].attributes.created | created |
data[].attributes.updated | updated |
data[].attributes.tracking_options.add_utm | tracking_options_add_utm |
data[].attributes.tracking_options.utms | tracking_options_utm_params |
data[].attributes.tracking_options.is_tracking_opens | tracking_options_is_tracking_opens |
data[].attributes.tracking_options.is_tracking_clicks | tracking_options_is_tracking_clicks |
data[].attributes.send_options.use_smart_tracking | send_options_use_smart_tracking |
data[].attributes.send_options.is_transactional | send_options_is_transactional |
Flow Action Messages
Endpoint: Get Flows
Update Method: UPSERT
Table Name: [
klaviyo_v2.flow_action_messages
]
JSON Element | Database Column |
---|---|
included[].id | flow_action_id |
included[].attributes.id | flow_action_message_id |
included[].attributes.name | name |
included[].attributes.channel | channel |
included[].attributes.created | created |
included[].attributes.updated | updated |
included[].attributes.content.subject | content_subject |
included[].attributes.content.preview_text | content_preview_text |
included[].attributes.content.from_email | content_from_email |
included[].attributes.content.from_label | content_rom_label |
included[].attributes.content.reply_to_email | content_reply_to_email |
included[].attributes.content.cc_email | content_cc_email |
Lists
Endpoint: Get List Profiles
Update Method: UPSERT
Table Name: [
klaviyo_v2.lists
]
JSON Element | Database Column |
---|---|
data[].id | list_id |
data[].name | name |
data[].created | created |
data[].updated | updated |
List Profiles
Endpoint: Get List Profiles
Update Method: UPSERT
Table Name: [
klaviyo_v2.list_profiles
]
JSON Element | Database Column |
---|---|
(part of url path, not part of response) | list_id |
data[].id | profile_id |
List Tags
Endpoint: Get List Profiles
Update Method: UPSERT
Table Name: [
klaviyo_v2.list_tags
]
JSON Element | Database Column |
---|---|
data[].id | list_id |
data[].relationships.tags.data | tag_id |
Member Lists
Metrics
Update Method: UPSERT
Table Name: [
klaviyo_v2.metrics
]
JSON Element | Database Column |
---|---|
data[].id | list_id |
data[].attributes.name | tag_id |
data[].attributes.created | created |
data[].attributes.updated | updated |
data[].attributes.integration.id | integration_id |
data[].attributes.integration.name | integration_name |
data[].attributes.integration.category | integration_category |
Profiles
Endpoint: Get Profiles
Update Method: UPSERT
Table Name: [
klaviyo_v2.profiles
]
JSON Element | Database Column |
---|---|
data[].id | profile_id |
data[].attributes.email | |
data[].attributes.phone_number | phone_number |
data[].attributes.external_id | external_id |
data[].attributes.first_name | first_name |
data[].attributes.last_name | last_name |
data[].attributes.organization | organization |
data[].attributes.image | image |
data[].attributes.created | created |
data[].attributes.updated | updated |
data[].attributes.last_event_date | last_event_date |
data[].attributes.properties | properties |
data[].attributes.location.address1 | location_address1 |
data[].attributes.location.address2 | location_address2 |
data[].attributes.location.city | location_city |
data[].attributes.location.country | location_country |
data[].attributes.location.latitude | location_latitude |
data[].attributes.location.longitude | location_longitude |
data[].attributes.location.region | location_region |
data[].attributes.location.timezone | location_timezone |
data[].attributes.location.ip | location_ip |
data[].attributes.subscriptions.email.marketing.consent | email_marketing_consent |
data[].attributes.subscriptions.email.marketing.marketing | email_marketing_timestamp |
data[].attributes.subscriptions.email.marketing.method | email_marketing_method |
data[].attributes.subscriptions.email.marketing.method_detail | email_marketing_method_detail |
data[].attributes.subscriptions.email.marketing.custom_method_detail | email_marketing_custom_method_detail |
data[].attributes.subscriptions.email.marketing.double_optin | email_marketing_double_optin |
data[].attributes.subscriptions.sms.marketing.consent | sms_marketing_consent |
data[].attributes.subscriptions.sms.marketing.timestamp | sms_marketing_timestamp |
data[].attributes.subscriptions.sms.marketing.method | sms_marketing_method |
data[].attributes.subscriptions.sms.marketing.method_detail | sms_marketing_method_detail |
Profile Email List Suppressions
Endpoint: Get Profiles
Update Method: UPSERT
Table Name: [
klaviyo_v2.profile_email_list_suppressions
]
JSON Element | Database Column |
---|---|
data[].id | profile_id |
data[].attributes.subscriptions.email.marketing.list_suppressions[].reason | reason |
data[].attributes.subscriptions.email.marketing.list_suppressions[].list_id | list_id |
data[].attributes.subscriptions.email.marketing.list_suppressions[].timestamp | timestamp |
Profile Email Suppressions
Endpoint: Get Profiles
Update Method: UPSERT
Table Name: [
klaviyo_v2.profile_email_suppressions
]
JSON Element | Database Column |
---|---|
data[].id | profile_id |
data[].attributes.subscriptions.email.marketing.suppressions[].reason | reason |
data[].attributes.subscriptions.email.marketing.suppressions[].timestamp | timestamp |
Segments
Endpoint: Get Segments
Update Method: UPSERT
Table Name: [
klaviyo_v2.segments
]
JSON Element | Database Column |
---|---|
data[].id | segment_id |
data[].attributes.name | name |
data[].attributes.created | created |
data[].attributes.updated | updated |
Segment Profiles
Endpoint: Get Segment_Profiles
Update Method: UPSERT
Table Name: [
klaviyo_v2.segment_profiles
]
JSON Element | Database Column |
---|---|
(part of url path, not part of response) | segment_id |
data[].id | profile_id |
Segment Tags
Endpoint: Get Segments
Update Method: UPSERT
Table Name: [
klaviyo_v2.segment_tags
]
JSON Element | Database Column |
---|---|
data[].id | segment_id |
data[].relationships.tags.data[].id | tag_id |
STG Member Lists
Tags
Endpoint: Get Tags
Update Method: UPSERT
Table Name: [
klaviyo_v2.tags
]
JSON Element | Database Column |
---|---|
data[].id | tag_id |
data[].attributes.name | name |
Last updated