Skip to main content
Contributor I
March 16, 2026
Solved

What should I use for profile in backend API when I don't have an email or phone number?

  • March 16, 2026
  • 2 replies
  • 104 views

I’m trying to use the Klaviyo server API to create events for a Shopify app integration. The event creation is triggered from browser activity calling my backend.  

Sometimes I have an email address which I can pass through to Klaviyo and all is good. Sometimes I don’t -- calling klaviyo.identify() or _learnq.identify() I’ll often get a CID value which I can base64 decode into a GUID looking value.  I’m guessing I can pass that GUID somehow to Klaviyo’s server event API in the profile, but I’m struggling making it work.  I’ve tried using id and _kx attributes in the profile wither with the CID or the base64 decoded CID, but it’s been unsuccessful in creating something that ends up in the Klaviyo activity log.

Any help appreciated.

Thanks.

 

Best answer by Kim from Cadence

I wouldn’t use an external id here. This will just create records separate from the original profile.

@jnema, it sounds like you’re looking to log events for profiles that are identified by klaviyo on the client but you don’t have their email on your side? Can you share more details on your app and the kinds of events you’re looking to trigger here? Assuming you have some kind of client access to leverage the results of a klaviyo.identify() call, I’m wondering whether you might be able to hook up these events client side. 

While technically possible, I wouldn’t recommend relying on undocumented Klaviyo identifiers directly as they’re liable to change and break your app.

2 replies

whereisjad
Expert Problem Solver IV
Expert Problem Solver IV
March 16, 2026

@jnema if neither email nor phone number can be used a an identifier, you can leverage external id.  More info here

 

Essentially you can pass it like below for the call:

{ "data": { "type": "profile", "attributes": { "external_id": "1414951756", "first_name": "Sarah", "last_name": "Mason" }, "properties": { "birthday": "1989-12-13T00:00:00Z" } } }

Hope this makes sense.  Let me know if you have any questions.

— Jad A | Klaviyo + Shopify + API Integrations Specialist • 7+ Years' Experience Helping with new setups, seamless integrations, and API connections—happy to connect. http://ja-technical-consulting.xyz/
Kim from Cadence
Partner
Partner
March 17, 2026

I wouldn’t use an external id here. This will just create records separate from the original profile.

@jnema, it sounds like you’re looking to log events for profiles that are identified by klaviyo on the client but you don’t have their email on your side? Can you share more details on your app and the kinds of events you’re looking to trigger here? Assuming you have some kind of client access to leverage the results of a klaviyo.identify() call, I’m wondering whether you might be able to hook up these events client side. 

While technically possible, I wouldn’t recommend relying on undocumented Klaviyo identifiers directly as they’re liable to change and break your app.

Kim — Founder @ Cadence | Helping brands automate recurring campaigns (daily, weekly, monthly) | Happy to connect! | https://cadencecampaigns.com