Build the customer profile your Klaviyo flows need
Collect useful preferences in the storefront, save them to Shopify customer metafields, and let a configured Raven queue the matching Klaviyo profile update.
Order history did not describe the customer
The skincare brand wanted to group customers by skin type, skin concern, age range, routine, and fragrance preference.
They could collect the answers in a quiz or profile form. Those answers also needed to reach the systems used after the form.
The brand used FieldsRaven to save the profile on the Shopify customer. With Klaviyo sync configured on the Raven, eligible customer data could be queued as Klaviyo profile properties after the Shopify save.
Historical attributes, available for supported segmentation.
One skincare implementation processed nearly 100,000 Klaviyo sync records.
A single preference can be useful before the customer profile grows.
This is a historically verified processing result from stores that later uninstalled, not unique or current Klaviyo profiles. FieldsRaven acceptance, the Shopify write, and any configured Klaviyo job are separate stages.
A flat object, and one call.
const cfg = window.FR_CUSTOM__CUSTOMER_MARKETING_PREFERENCES;
const payload = {
skin_type: "combination",
routine_goal: "hydration",
product_interest: "serums"
};
await fetch("/apps/raven/create_metafield", {
method: "PUT",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
raven: {
raven_id: cfg.ravenId,
resource_id: cfg.resourceId,
raven_mac: cfg.ravenMac,
value: JSON.stringify(payload)
}
})
});
Call this from a validated profile-form handler. Defining the starter does not write the example profile on page load.
A JSON save replaces the full metafield value. This example stays flat so merchant-defined keys have predictable mapping names.
Get Code supplies the configuration and inline HMAC. Klaviyo sync must be configured on the Raven, and an accepted request is not a completed sync.