Skip to main content
Question

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

  • March 16, 2026
  • 2 replies
  • 13 views

Forum|alt.badge.img

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.

 

2 replies

whereisjad
Expert Problem Solver IV
Forum|alt.badge.img+17
  • 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.


Kim from Cadence
Partner
Forum|alt.badge.img+12

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.