> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hightouch.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Klaviyo

> Power e-commerce focused email marketing with your warehouse data in Klaviyo

## Supported syncing

| Type | Description | Supported Sync Modes | API Reference |
| - | - | - | - |
| **Profiles** | Sync data from any source to user profiles | Upsert | [Profiles docs](https://developers.klaviyo.com/en/reference/spawn_bulk_profile_import_job) |
| **Events** | Sync data from any source to events in Klaviyo | Insert | [Events docs](https://developers.klaviyo.com/en/reference/create_event) |
| **Lists** | Add or remove user profiles from lists in Klaviyo | Add, Remove | [Lists docs](https://developers.klaviyo.com/en/reference/create_list_relationships) |
| **Subscription Lists** | Subscribe and unscribe users from marketing channels | Add, Remove | [Subscription Lists docs](https://developers.klaviyo.com/en/reference/subscribe_profiles) |

For more information about sync modes, refer to the [sync modes](https://docs.hightouch.com/syncs/types-and-modes.md#sync-modes) docs.

## Connect to Klaviyo

Go to the [**Destinations** overview page](https://app.hightouch.com/destinations?from=docs) and click the **Add destination** button. Select **Klaviyo** and click **Continue**. You can then authenticate Hightouch to **Klaviyo**.

### Authenticate with OAuth

For the **Authentication method**, select **Log in to Klaviyo** and log into your Klaviyo account. Once successful, you will be redirected back to Hightouch to enter a descriptive name for your destination and complete setup.

### Authenticate with Basic Auth (deprecated)

Enter the following fields into Hightouch:

* **Public API key**
* **Private API key**

## Sync configuration

Once you've set up your Klaviyo destination and have a [model](https://docs.hightouch.com/getting-started/concepts.md#models) to pull data from, you can set up your sync configuration to begin syncing data. Go to the [**Syncs** overview page](https://app.hightouch.com/syncs?from=docs) and click the **Add sync** button to begin. Then, select the relevant model and the Klaviyo destination you want to sync to.

### Syncing profiles

Sync data from any source to user profiles.

#### Record matching

To match rows from your model to profiles in Klaviyo, you need to select a model column and corresponding Klaviyo field. You can match on any of the following Klaviyo fields:

* **Email**
* **Phone Number**
* **Klaviyo ID**

### Secondary emails

You may also sync up to five emails to multi-email profiles in Klaviyo. Learn more about multi-email profiles in the Klaviyo [documentation](https://help.klaviyo.com/hc/en-us/articles/48274807144475).
If secondary emails are mapped, then Hightouch will add and remove emails from the profile as columns in your model change.

#### Field mapping

Hightouch lets you sync profile fields via [field mapping](https://docs.hightouch.com/syncs/mapping-data.md).
You can map data from any of your model columns to default and custom profile fields.
If you send data for a custom field that doesn't exist, Hightouch adds the field.
Ensure your model's columns have the same data types as the fields you want to sync to.

### Syncing events

Sync data from any source to events in Klaviyo.

> [!WARNING]
>
> To ensure syncs send each event, your event model must use a truly unique [primary key](https://docs.hightouch.com/getting-started/concepts.md#unique-primary-key-requirement). See the [events syncs](https://docs.hightouch.com/syncs/types-and-modes.md#event-syncs) documentation for more information.

#### Record matching

You can match rows from your model to events in Klaviyo on any column in your model and any field in Klaviyo. Ensure the data types of the model column and Klaviyo field you select match.
Refer to the [record matching docs](https://docs.hightouch.com/syncs/record-matching.md) for more information.

#### Field mapping

Hightouch lets you sync event properties via field mapping.

### Syncing lists

Add or remove user profiles from lists in Klaviyo.

#### Record matching

To match rows from your model to lists in Klaviyo, you need to select a model column and corresponding Klaviyo field. You can match on any of the following Klaviyo fields:

* **Email**
* **Phone Number**
* **Klaviyo ID**

#### Field mapping

Hightouch lets you sync list fields via [field mapping](https://docs.hightouch.com/syncs/mapping-data.md).
You can map data from any of your model columns to the default list fields.
Ensure your model's columns have the same data types as the fields you want to sync to.

### Syncing subscription lists

Subscribe and unscribe users from marketing channels.

#### Record matching

To match rows from your model to subscription lists in Klaviyo, you need to select a model column and corresponding Klaviyo field. You can match on any of the following Klaviyo fields:

* **Email**
* **Phone Number**
* **Klaviyo ID**

#### Field mapping

Hightouch lets you sync subscription list fields via [field mapping](https://docs.hightouch.com/syncs/mapping-data.md).
You can map data from any of your model columns to the default subscription list fields.
Ensure your model's columns have the same data types as the fields you want to sync to.

## Tips and troubleshooting

To see the exact API requests and responses from each sync run, use the [live debugger](https://docs.hightouch.com/syncs/debugger.md). To get notified by Slack, PagerDuty, SMS, or email when a sync fails, set up [sync alerts](https://docs.hightouch.com/syncs/alerting.md). If you run into an issue this page doesn't cover, [contact support](#pylon-chat).
