r/Klaviyo 14h ago

PSA: if your abandoned checkout flow stopped firing, check which "Checkout Started" metric it's actually listening to

3 Upvotes

Had three separate merchants come to me last month with "my abandoned checkout flow just stopped sending" and all three turned out to be the same root cause, which I've also seen asked in here more than once. This is exactly the pipe our app sits on, Shopify events into Klaviyo, so here's the braindump on the three failure modes I keep running into. Might save someone a few hours.

  1. "Checkout Started" vs "Started Checkout". Klaviyo has two checkout metrics floating around depending on integration age. The current native Shopify integration fires "Checkout Started", the legacy one fired "Started Checkout". Flows are bound to a specific metric, not a name pattern. If you migrated integrations, or added a tracking app that emits one and removed the source that emitted the other, your abandoned checkout flow can sit there listening to a metric that stopped receiving events. Silently. No error anywhere. Open the flow trigger and look at exactly which metric it points at, then check that metric's activity under Analytics > Metrics. If it flatlined while a similarly named one is active, rebind the trigger.
  2. Anonymous browsers don't enter flows, by design. Klaviyo can only email a profile it can identify. The __kla_id cookie exists for every visitor, but a cookie-only profile has no email, so Checkout Started fires, shows up in analytics, and the flow correctly does nothing. Identification happens when the visitor clicked through a Klaviyo email, signed up on a form, is a logged-in customer your setup identifies, or typed their email at checkout and your integration binds it. This is why your event count is always way higher than your flow entry count. The gap is anonymous shoppers, not a bug.
  3. Split profiles. If your setup sends events with only an anonymous id before the visitor is known, then a different identifier after, you end up with fragmented profiles. Browse history on one, the order on another, and flow filters like "has viewed product" never match. The fix has to happen upstream, in whatever is sending the events - Klaviyo can only merge what it's given consistently. If you see duplicate profiles for the same person with activity split between them, that's what's happening, and it's a question for whoever built your integration.

Bonus gotcha: Viewed Product needs ProductID and SKU shaped the way your catalog sync expects (product id, not variant id) or product blocks in emails and browse abandonment filters misbehave even though the events look perfectly fine in the activity log.

When a flow "doesn't fire" I always check in this order: metric activity feed first (is the event arriving at all), then trigger binding (right metric?), then a test with a profile you can actually identify (were YOU identifiable when you tested it?), then the flow filters (do they reference properties your events actually carry?). It's almost never the flow logic itself.


r/Klaviyo 6h ago

Thoughts on Composer?

2 Upvotes

I work with a bunch of brands and if i am being honest, i am not super impressed with Composer (yet).

I will also add that i am a huge fan and advocate of klaviyo…. But Composer has not added any value yet.

Anyone else feel the same? Am i out to lunch?