Klaviyo API - Metrics and forms
I’m currently using the Klaviyo API, through Airbyte, to build a customer datamart that combines Klaviyo data with several other data sources.
Our company sells cards and related products for life events such as births, weddings, communions, Christmas, and other celebrations. On our website and blog, we use Klaviyo forms to collect additional information about our customers. For example, customers can indicate one or more events they are currently interested in, or provide an upcoming event date such as an expected birth date or wedding date.
The difficulty is that customers can submit these forms multiple times.
When a customer submits a form, certain Klaviyo profile properties are populated or updated. If that customer submits the form again later, the existing profile property is overwritten. As a result, the profile itself only contains the latest value and does not provide a historical view of how the customer's interests or event dates have changed over time.
I therefore hoped to reconstruct this history using Klaviyo's event data through the API. In theory, form submission or form completion events should make it possible to see what a customer submitted at a specific point in time.
However, I have run into several limitations:
-
The event only contains the metric ID, not the metric name.
For example, a form submission event is identified by a Klaviyo metric ID rather than a readable metric name. This makes the raw data difficult to interpret and becomes especially inconvenient when combining data from multiple Klaviyo accounts, since the metric IDs differ between accounts. You can obtain it trough get metrics API but this is not efficient. -
The values submitted through the form are not included in the event.
The profile properties that are populated or updated as a result of the form submission are not included in the form submission event itself. This is the main limitation for my use case. Even though I know that a customer submitted a form at a certain time, I cannot determine from the event which interest, event date, or other value they actually submitted. -
The submitted form is only identified by its ID.
The event contains the form ID, but not the human-readable form name. To understand which form was submitted, the form ID has to be matched separately against data from the Forms API.
Because the submitted property values are missing from the event, it appears impossible to reconstruct a true historical view of these profile properties from the Klaviyo API alone.
Ideally, a form submission event would contain both the form information and the values that were submitted at that moment. That would make it possible to build a historical customer-interest dataset instead of only having access to the latest value stored on the profile.
Has anyone found a reliable way to retrieve the actual values submitted through a Klaviyo form at the time of submission, rather than only the resulting current profile properties?

The above includes an example of such profile property.
