How do I send wishlist events to Klaviyo onsite tracking?

Klaviyo onsite tracking pushes wishlist activity straight into each shopper’s Klaviyo profile from your storefront: every save, removal, and cleared wishlist becomes a Klaviyo event, and two custom profile properties keep the live wishlist state on the profile. This guide explains the full cycle, what you need, and how to turn it on and verify it.

Available on Silver plans and above. On the Free plan the toggle is replaced by an Upgrade (or Start free trial) button that takes you to billing.

How it works

When the integration is enabled, wishlist actions on the storefront call Klaviyo’s own onsite JavaScript (klaviyo.track  and klaviyo.identify ). The app never installs Klaviyo’s script and asks for no API key: it uses the Klaviyo onsite integration already connected to your store, which is why the settings page asks you to first set up Klaviyo onsite tracking.

The events attach to the logged in shopper’s Klaviyo profile. Guests can save wishlists, but their activity has no Klaviyo profile to land on until they sign in.

The full cycle:

  1. A signed in shopper saves, removes, or clears items in their wishlist
  2. Wishlist Hero calls klaviyo.track(...) with the item and wishlist details
  3. The same call updates two profile properties via klaviyo.identify
  4. The events and properties appear in Klaviyo, ready for segments, flows, and email variables

Three custom metrics are tracked:

Klaviyo metric Fires when Payload highlights
Added To Wishlist (WH) A shopper saves a product Product details + current wishlist state
Removed From Wishlist (WH) A shopper removes a product Same structure as the add event
Cleared Wishlist (WH) A shopper empties the whole wishlist WishlistProductIDs (now empty) + WishlistUrl

The add and remove events carry: Vendor , Name , SKU , Tags , ProductID , VariantID , Quantity , Price , PriceFormatted , CurrencyCode , ImageURL , URL , WishlistProductIDs  (every product currently wishlisted), WishlistUrl , and CategoryViewed  when the shopper acted from a collection page. Prices and currency follow what the shopper sees (multi currency aware). The admin page shows the exact JSON for each event under What is being tracked? - expand each section to view it.

Each tracked event is paired with a profile update through klaviyo.identify , keeping two custom properties always current:

Profile property Contents
MyWishlistProductIDs Every product ID currently in the shopper’s wishlist
MyWishlistLink The direct link to that shopper’s wishlist page

Two design details worth knowing:

  • No double tracking: these are browser events. They are separate from the Klaviyo email provider integration, which sends server side trigger events (price drop, low stock, shares) when Klaviyo is chosen as the email service provider. Both can run together.
  • Extra product lookups: on collection pages, and when building the remove event, the app fetches product details from your storefront’s product JSON to fill in vendor, SKU, and tags. This happens only when a tracking integration is enabled.

What you need before enabling

  1. A Klaviyo account connected to your Shopify store.
  2. Klaviyo’s onsite tracking working on your storefront - Klaviyo’s Shopify integration installs its script and identifies logged in customers automatically. See Klaviyo’s onsite tracking guide, the same link the settings page shows.
  3. Quick check before toggling: open your storefront, view the page source, and confirm the Klaviyo script (a.klaviyo.com) is present.

Enable it

  1. Go to Settings and open the Klaviyo Onsite Tracking Integration page.
  2. Switch the toggle to Enable - the setting saves immediately, there is no separate save step. The storefront picks up the new configuration automatically.
01-onsite-toggle

Verify the first event

  1. Open your storefront in a browser where you are logged in as a customer - the events attach to the logged in profile.
  2. Save a product to the wishlist.
  3. In Klaviyo, open Analytics > Metrics and look for Added To Wishlist (WH) with your event. See Test your Klaviyo events for the detailed walkthrough.
  4. Open the customer profile you tested with and confirm MyWishlistProductIDs and MyWishlistLink appear under custom properties.

Use it in Klaviyo

  • Flows: trigger flows on Added To Wishlist (WH)  - for example a thank you or cross sell email. Note the metric is the shopper’s action, so a flow can reply in the moment, while reminder style campaigns (price drop, low stock) need the Klaviyo email provider triggers.
  • Segments: build a “wishlisted but never purchased” segment from the event, or filter on MyWishlistProductIDs  being non empty.
  • Email variables: drop {{ MyWishlistLink }}  into any campaign so each shopper gets a personal link back to their own wishlist. See Inserting wishlist products into Klaviyo emails.
  • Suppression hygiene: Cleared Wishlist (WH)  is a natural exit signal for wishlist based flows.

Full payload reference for every event: Events reference.

When the setting turns itself off

The feature is plan restricted, and the app enforces that automatically. The toggle flips back to disabled when your store moves to the Free plan - on downgrade, when a trial expires, or when a development store graduates. After any of these, just upgrade and switch it back on.

Troubleshooting

Symptom Fix
No metrics appear in Klaviyo Confirm Klaviyo’s onsite script is live on the storefront and logged in - guest actions have no profile to attach to
Events in Klaviyo but properties missing Check the profile you tested is signed in; identify runs with every tracked action, so the next action fills the properties
Toggle switched off on its own Your store moved to the Free plan (downgrade or trial expiry); upgrade and re-enable
CategoryViewed missing from the event It only appears when saving from a collection page; product page saves have no collection context
Prices look wrong The event reports displayed prices (multi currency aware), not always the store default
Klaviyo’s own banner says onsite tracking is off Fix Klaviyo’s integration first - the app calls Klaviyo’s script and cannot track without it; the settings page links Klaviyo’s own troubleshooting
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us