Skip to main content

Hi -

I’m a developer exploring the possibility of implementing Klaviyo with a custom platform my company created at the request of one of our clients using Klaviyo on other platforms.

 

tl;dr:

I know very little about Klaviyo and how it works, and our platform has no existing integration with it - I am in the “exploring feasibility of this project” stage.

I want to create a relatively-simple, server-side-only api implementation for specific user event tracking (site activity, orders placed, etc).  I want to be able to do this without heavy user/product management, and by using identifiers the system already has (e.g., manufacturer part number, user email address, etc).

Is this possible?

 

We have a custom-built B2B platform used by a number of distributors.  We have recently been approached by one of our clients who is using Klaviyo on another platform and asked if we could implement the user activity-tracking features (specifically visiting site, viewing products, adding cart, checkout, order placed, product ordered) into our platform.  At present, we are being asked for no other Klaviyo features.

Our platform uses a shared codebase among different “instances” for different client users - none of the others are using Klaviyo and may end up using other activity-tracking services. For this reason, I would like to keep this integration modular and abstracted so that it can be cleanly ignored by other instances - using a purely server-side implementation seems the cleanest solution.

 

I have spent significant time looking through the API documentation here https://developers.klaviyo.com/en/reference/api_overview, but can find nothing that is clearly what I’m after.  “Events” seems to be for defining event types and “Metrics” only has “get” methods.  None of the other sections seemed to have anything that looked relevant either.

The “javascript api” talked about here https://developers.klaviyo.com/en/docs/javascript_api seems to be treated as a separate thing (for some reason?) and overview references seem to imply this is the intended method for (most of?) these events - though I haven’t been able to find a comprehensive list of calls for it either (maybe I missed it).  And, as stated, I prefer not to rely on front-end code for this implementation if I can avoid it.

ChatGPT came up with a call to a /track endpoint it claims will work, but I have no way of verifying as I haven’t able to find it in the docs.

 

I am also a little unclear about what would be required in terms of “profile” and catalog/product management.  Our client is already using this platform, so possibly they have any of this data already loaded, but our platform is not explicitly aware of it.  Will I have to jump through hoops to confirm the existence of a site-browsing-user and/or the products they are viewing within the Klaviyo system?  Do I have to use internal identifiers, or is Klaviyo smart enough to tie a manufacturer’s part number and/or a user’s email address to any relevant internal records?  I don’t want to have to worry about matching and maintaining user profiles in an external system, and I definitely cannot have our platform maintain a database of product info within Klaviyo - catalog management in our database is complicated and always in flux.  I want to be able to send identifiers I already have and let Klaviyo use those to make any associations it needs to.

 

What I feel like I really need is complete api documentation and probably 15-minute phone conversation with someone who can answer technical questions, but I didn’t find a good way to do that.  The fact that I also had to “sign up” for Klaviyo and answer several irrelevant questions to get access to this forum was also kind of frustrating.  As stated, I am in the “exploring feasibility” stage.  I don’t want to spend a lot of time here if this can’t do what I need it to.

 

Any helpful info and/or anyone who can point me the right direction is much appreciated.

Thanks!

Hey @retention would you be able to help @JS-AAM out? You have much more skill than I do with API and custom development. 


Reply