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
You need a Klaviyo account with permission to create private API keys. Keys are managed in Klaviyo under Account > Settings > API Keys.
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
In Klaviyo, go to Account > Settings > API Keys.
Click Create Private API Key.
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.
Copy the key. Klaviyo shows it once.
Step 2: Connect Klaviyo in Alta
Go to Flows and open or create a Flow.
Add a Klaviyo action (you'll find it in the Marketing category, described as "Manage profiles and lists in your Klaviyo account").
When prompted, create a new Klaviyo connection.
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
actionfield set tocreatedorupdatedso 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
actionoutput. Upsert returnsaction: "created"oraction: "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
