> For the complete documentation index, see [llms.txt](https://docs.chord.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chord.co/connect-sources/data-sources/connect-data-sources/klaviyo.md).

# Klaviyo

Connect your Klaviyo marketing data to Chord. Klaviyo is the email, SMS, and push platform that powers segmentation, lifecycle flows, and campaign sends. Chord ingests campaign, flow, event, list, segment, and profile data from Klaviyo so you can model engagement, deliverability, and attribution alongside the rest of your stack.

## What Chord ingests from Klaviyo

Chord pulls 11 datasets from your Klaviyo account. Each dataset becomes its own table in your Chord Snowflake schema.

* **Flows**: email and SMS automation flows: name, status, trigger type, creation date.
* **Metrics:** every metric tracked in Klaviyo (native and integration-sourced): name, integration source, creation date.
* **Email campaigns**: one-off email sends: send options, tracking config, schedule, audience.
* **SMS campaigns:** one-off SMS sends: send options, tracking config, schedule, audience.
* **Mobile push campaigns**: push notification sends: send options, tracking config, schedule.
* **Lists**: static contact lists: name, opt-in process, profile count, creation date.
* **Segments**: dynamic audience segments: name, profile count, creation and update timestamps.
* **Events**: every customer event landed in Klaviyo (native and integration-sourced): event properties, metric, profile, timestamp.
* **Profiles**: customer profile records: email, phone, identifiers, properties, timestamps.
* \*\*List profiles:\*\*bridge table mapping profiles to lists with joined-at timestamps.
* **Segment profiles**: bridge table mapping profiles to segments.

{% hint style="info" %}
**Heads up:** the three profile datasets (profiles, list profiles, segment profiles) are off by default. On accounts with millions of profiles they fan out heavily and can slow your tenant's overall ingestion. If you need any of them, ask your Chord contact to enable them per resource.
{% endhint %}

## Generate a Klaviyo private API key

You'll need a Klaviyo private API key with the seven read scopes listed below. The key is created in Klaviyo account settings and pasted into Chord Hub.

{% hint style="warning" %}
**Heads up:** only Klaviyo account owners and users with the "manage API keys" permission can create private API keys. If your role doesn't include it, ask an admin on the account to either generate the key for you or grant your user the permission first.
{% endhint %}

1. Log in to your Klaviyo account.
2. Click your account name in the **bottom-left** corner of the navigation, then click **Settings**.
3. Click **API Keys**.
4. Click **Create Private API Key**. Name the key something recognizable, e.g. `chord data sync`.
5. Choose **Custom** for the scopes panel and set each of the seven required scopes below to **Read** (leave everything else as **No Access**).
6. Click **Create**. Copy the key value, Klaviyo only shows it once and there is no way to reveal it later.

**Required scopes:** Chord needs all seven of these read scopes for the connector to pull every dataset cleanly. Make sure each one is set to **Read** in the Custom scopes panel before saving the key.

* Flows (read-only)
* Metrics (read-only)
* Campaigns (read-only)
* Lists (read-only)
* Segments (read-only)
* Profiles (read-only)
* Events (read-only)

## Connect the key in Chord

1. Open Chord Hub and go to **Data Sources → Add Source**.
2. Pick **Klaviyo** from the data source list.
3. Paste the private API key you just copied into the **API Key** field.
4. Click **Save** — Chord makes a test call against the Klaviyo profiles endpoint to confirm the key works.
5. The first sync kicks off automatically; subsequent syncs run on your tenant's standard ingestion schedule.

## Troubleshooting

**What does the validate step actually check?** Chord makes a small read against `https://a.klaviyo.com/api/profiles/` and confirms the key returns a 200 response with no permission error. It does not pull or store any records — that happens on the first scheduled sync after you save the credential.

**The validate step failed with a scope error. What now?** Klaviyo private keys are not editable after creation — to change scopes you have to make a new one. Go back to **Account → Settings → API Keys** in Klaviyo, click **Create Private API Key** with all seven read scopes enabled, paste the new key into the same Chord credential entry, and test the connection once again. Then delete the old key in Klaviyo.

**Do Klaviyo private API keys expire?** No. Keys stay valid until someone with manage-API-keys permission manually revokes them in **Account → Settings → API Keys**. If a previously working key suddenly fails, check that page first to confirm it's still listed and active.

**How do I rotate the key?** Generate a new private API key in Klaviyo with the same seven read scopes, paste it into the same Chord credential entry, and save. Chord uses the new key on the next scheduled sync. Once you've confirmed the new key validates and the next sync runs cleanly, delete the old key from Klaviyo.

**Why don't I see profiles or membership data in Ask Chord?** The profiles, list profiles, and segment profiles datasets are disabled by default on Chord-managed Klaviyo connectors. If your use case needs any of them (cohort modeling, list-level reporting, segment membership joins), ask your Chord contact to enable them and the next sync will start populating those tables.

***

**Need help?** If you hit a scope or permission issue you can't resolve, reach out to <help@chord.co> with the exact error message. We'll trace the request and tell you which scope is missing.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.chord.co/connect-sources/data-sources/connect-data-sources/klaviyo.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
