Skip to main content

How to Connect and Use Klaviyo in Alta Flows

Connect your Klaviyo account to Alta with a private API key, then use the five Klaviyo actions (search, create, update, upsert profile, and add to list) inside any Flow.

Written by Katie Supporté

Summary

Alta integrates with Klaviyo as a Flows action provider. Connect once with a Klaviyo private API key, then drop Klaviyo actions into any Flow to search profiles, create or update them, upsert by email, or add an existing profile to a list.

Who this is for

Marketing and lifecycle teams using Klaviyo who want Alta to keep their profile data in sync — for example, push every new prospect into Klaviyo as a profile, add replied prospects to a nurture list, or update profile attributes based on outreach events.

Before you start

  1. You need a Klaviyo account with permission to create private API keys. Keys are managed in Klaviyo under Account > Settings > API Keys.

  2. Klaviyo in Alta is Flows-only. You orchestrate the data movement inside a Flow rather than relying on a continuous two-way sync.


Step 1: Create a Klaviyo private API key

  1. In Klaviyo, go to Account > Settings > API Keys.

  2. Click Create Private API Key.

  3. Name it (e.g. Alta Flows) and grant scopes — at minimum, read and write access to Profiles and (if you plan to use Add Profile to List) Lists.

  4. Copy the key. Klaviyo shows it once.

Step 2: Connect Klaviyo in Alta

  1. Go to Flows and open or create a Flow.

  2. Add a Klaviyo action (you'll find it in the Marketing category, described as "Manage profiles and lists in your Klaviyo account").

  3. When prompted, create a new Klaviyo connection.

  4. Paste your key into the Private API Key field (required) and save.

The connection is reusable — every other Klaviyo action in this Flow and your other Flows will share it.

Step 3: Pick the right action

Search Profile by Email

  • Email (required) — exact-match lookup.

  • Returns the matching profile, or fails with "No Klaviyo profile found with email: {email}".

  • If Klaviyo has duplicates, you'll get "Multiple Klaviyo profiles found with email: {email}. Resolve duplicates in Klaviyo before searching." — clean them up in Klaviyo and retry.

Create Profile

  • Email plus an optional set of attributes (first name, last name, phone, etc.).

  • Creates a new profile in Klaviyo. Use when you know the contact doesn't already exist.

Update Profile

  • Profile ID (required) plus the attributes you want to change.

  • Updates the named fields on an existing profile. Pair it with Search Profile by Email when you need to find the ID first.

Create or Update Profile (upsert)

  • Email (required) — used to find an existing profile, and also set as the email if creating.

  • Plus optional attributes: First Name, Last Name, Phone, Organization, Address, City, Region / State, Zip / Postal Code, Country.

  • Searches for the profile by email. If found, updates it; if not, creates a new one.

  • Returns the profile plus an action field set to created or updated so downstream steps know what happened.

  • Duplicate emails fail with "Multiple Klaviyo profiles found with email: {email}. Resolve duplicates in Klaviyo before upserting."

Add Profile to List

  • Profile ID (required) — the Klaviyo profile ID to add.

  • List ID (required) — the Klaviyo list to add it to.

  • Adds the profile to the list. Returns { profileId, listId, added: true }.

  • Use it after Search or Create/Update to enroll the profile in a list (e.g. a nurture sequence, a newsletter, a re-engagement campaign).

Step 4: Wire it into your Flow

Common patterns:

  • Sync new replies into Klaviyo: Create or Update Profile (by reply email) → Add Profile to List (your "warm replies" list).

  • Tag enriched prospects: Update Profile to set Organization / City / Country from Alta's enrichment, then Add Profile to a segment list.

  • Light-touch sync: Search Profile by Email → if found, Update Profile; if not, skip (turn on Continue on failure on the Search step).

Step 5: Tune error handling

Every Klaviyo action exposes:

  • Continue on failure (default off) — keep the Flow running even if the action errors. Useful on Search Profile when "not found" should be a normal branch.

  • Retry on failure (default off) — automatic retry before marking the action failed.


Tips and common pitfalls

  • Use Create or Update by default. Upserting by email is one step and avoids race conditions between Search and Create.

  • Duplicates fail loudly. If you have multiple Klaviyo profiles with the same email, Search and Upsert both refuse to operate — resolve dupes in Klaviyo, then retry.

  • Email is normalized. Alta lowercases and trims the email before searching — so casing variations match the same profile.

  • Use the action output. Upsert returns action: "created" or action: "updated" — branch on it to (for example) only add to a "new prospects" list when a profile is created.

  • List ID, not list name. The Add Profile to List action takes the Klaviyo list ID. You can find it in the URL of the list in Klaviyo or via the lists API.

  • Scope your key. Give the Klaviyo private API key only the scopes it needs — Profiles (and Lists if you use Add to List). Avoid full-account keys.

  • Key rotation. If you rotate the Klaviyo key, edit the Alta Klaviyo connection and paste the new value — all Flows using that connection pick it up immediately.

Related

  • How to Connect and Use Attio in Alta Flows

  • How to Use AI Enrichment Variables in Alta

Did this answer your question?