Give every customer a wishlist that follows them
Store product handles in a Shopify customer metafield so a signed-in shopper can add, revisit, and remove wishlist items from the storefront.
A saved product is useful customer data
The fashion store wanted the wishlist to do more than hold products on a page. Each save showed interest in a specific item, so the data needed to survive the next session and device.
They stored the wishlist on the Shopify customer and could configure the Raven to queue that eligible customer field for Klaviyo.
The storefront could load the list when the shopper returned. The marketing team could use the same signal for follow-up around saved products when the integration was configured.
Purchase intent, stored where the rest of your stack can read it.
A FieldsRaven processing count, not a count of unique customers or saved lists.
The merchant controls the product experience and can reuse the customer-owned JSON shape.
30,000+ wishlist saves processed. The wishlist lives on the customer record, supporting the storefront experience and, when configured, later customer follow-up without claiming that every downstream sync has already completed.
An array of product handles, and one call.
const cfg = window.FR_CUSTOM__CUSTOMER_WISHLIST;
const payload = [
{ product_handle: "linen-shirt" },
{ product_handle: "oak-side-table" }
];
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 after the shopper adds or removes an item. Defining the starter does not write the example list on page load.
A JSON save replaces the full metafield value. Read the current list, prevent duplicates, apply the change, then send the complete next array.
Get Code supplies the configuration and inline HMAC. Change local wishlist state only after FieldsRaven accepts the request.