Klaviyo profiles

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.

Nearly 100,000
historical Klaviyo sync records processed for one skincare implementation.
Why they built it

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.

The result

Historical attributes, available for supported segmentation.

Nearly 100,000
Historical sync records

One skincare implementation processed nearly 100,000 Klaviyo sync records.

One field
Is enough to start

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.

Copy the starter code

A flat object, and one call.

snippets/skin-profile.liquid
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.

Common questions

Before you wire it up.

Does every Raven sync to Klaviyo?
No. Klaviyo sync is a per-Raven setting for eligible customer fields and needs valid configuration.
What happens to JSON fields?
Use a flat JSON object for predictable property names. Merchant-defined keys can become configured profile properties.
When does the Klaviyo sync run?
The optional integration is queued after the Shopify metafield save. An accepted response does not mean that later work has completed.
Can I start with one preference?
Yes. A single useful preference can be enough to start; the profile can grow later.

Give Klaviyo more than order history

Create the customer Raven and switch on the Klaviyo setting. Then test the first profile with a dedicated customer.