Klaviyo Destination
Klaviyo is a data destination for Profiles Sync. BPP upserts your exported users as profiles in your Klaviyo account, matched on email, phone number, or an external ID you control — ready to power email/SMS flows, segments, and lists in Klaviyo.
What you can do
- Profiles Sync — upsert user profiles into Klaviyo, with your selected attributes written as custom profile properties, and optionally add matched profiles to a Klaviyo list.
Prerequisites
- A Klaviyo Private API Key with permission to read and write profiles (and lists, if you plan to add profiles to a list). Create one in Klaviyo under Settings → API Keys → Create Private API Key.
- If you want synced profiles added to a list, the list must already exist in Klaviyo — BPP does not create lists.
How it works
Each run, BPP:
- Applies your sync's filters to find the users to include.
- Reads the selected keys and attributes for those users.
- Submits the users to Klaviyo in batches of up to 10,000 profiles per import job, using Klaviyo's Profile Bulk Import Jobs API.
- Polls each import job until it completes, then records how many profiles succeeded and failed.
Unlike the BigQuery destination, a Klaviyo sync is not a full replacement — BPP only ever creates or updates (upserts) profiles for users who currently match your filters. A user who was included in a previous run but no longer matches your filters is left untouched in Klaviyo: their profile and list membership are not removed. To remove a profile from Klaviyo or from a list, do it directly in Klaviyo.
Matching profiles (keys)
Klaviyo matches (upserts) an incoming profile using whichever of these key fields you provide as destination columns:
| Key field | Notes |
|---|---|
email | Plain text email address of the profile |
phone_number | Plain text phone number in E.164 format |
external_id | Any identifier you already use to reference the person outside Klaviyo. (ex: crm_id) |
At least one of a user's key columns must have a value, or that user is skipped and counted as a failed row. These are the only destination column names Klaviyo accepts for key fields — configuring any other name on a key is not supported.
Attributes
Every attribute you map is written as a custom property on the profile, using the destination property name you set — Klaviyo does not restrict attribute names.
Attributes are optional. You can configure a Klaviyo sync with keys only, no attributes.
Adding profiles to a list
Under Destination, you may optionally choose a List to add matched profiles to. Klaviyo currently allows at most one list per destination — configuring more than one is not supported.
Leave it empty if you only want to upsert profiles without touching list membership. Adding to a list is additive: BPP never removes a profile from a list because it stopped matching your filters.
Destination configuration
You configure the Klaviyo destination directly on the Profiles Sync (under the section Destination):
| Setting | What it means |
|---|---|
| Connection | The Klaviyo connection (your Private API Key). |
| List (optional) | The Klaviyo list to add matched profiles to. |
Keys and attributes (with their Klaviyo destination names) are configured under Keys & Attributes — see Create a Profiles Sync.
Setup
- Navigate to Connections and click New Connection.
- Select Klaviyo as the connection type.
- Paste your Klaviyo Private API Key.
- Give the connection a name and click Save.
Creating the connection performs an API call to Klaviyo to confirm the API key is valid before relying on it. A valid key will lead to a connection status of Active, while an invalid key will lead to a status of Error.
Supported export types
| Export type | Used with | Notes |
|---|---|---|
| Profile upsert | Profiles Sync | Create/update profiles, optionally added to one list. Never deletes profiles or removes list membership. |
Troubleshooting
Connection shows Error
The API key is invalid, was revoked, or lacks the required permissions in Klaviyo. This is checked when you save the connection, so it usually surfaces immediately — open the connection and re-save with a corrected key, issuing a new Private API Key from Klaviyo if you're unsure the old one is still valid.