I’m trying to add an exist customer to a specific Klaviyo list through a Make scenario.
What would be the correct workflow to:
Find the existing Klaviyo profile using the customer’s email address.
Retrieve its profile ID.
Add that profile to a specific Klaviyo list.
Create the profile first only when it does not already exist.
What is the problem & what have you tried?
The customer data comes from Shopify, and I have their email address, but not their Klaviyo profile ID. I cannot find a way in Make to search for an existing Klaviyo profile using only the email address.
Error messages or input/output bundles
The run couldn’t be completed
[409] A profile already exists with one of these identifiers. [/data/attributes]
The 409 is the useful clue here. Klaviyo already treats the email as an identity, so Create a Profile should not be the first step.
A reliable pattern in Make is:
Use Klaviyo > Make an API Call to query the Profiles API with GET /api/profiles?filter=equals(email, CUSTOMER_EMAIL).
If the data array contains a profile, use its id.
If data is empty, create the profile and use the ID returned by that module.
In each route, pass the resulting profile ID to Add/Subscribe Profiles to a List.
I would also normalize the Shopify email with lower(trim(email)) before the lookup so casing or spaces do not create inconsistent matches.
One important distinction: adding an existing profile to a list does not grant marketing consent. If the goal is to subscribe the customer, use the Subscribe Profiles action and only when you have the appropriate consent. If they are already consented and you only need list membership, adding the profile is enough.
This avoids using the 409 error as flow control and makes the scenario safe to rerun.