Klaviyo Event Tracking: 7 Steps to Smarter Segmentation & Revenue-Driving Flows (2025)
Klaviyo Flows · Analytics

Klaviyo Event Tracking: 7 Steps to Smarter Segmentation & Revenue-Driving Flows

11 min read By Sendora Team

Missing triggers, blunt segments, fuzzy ROI? The root cause is almost always the same: poor Klaviyo event tracking. In Klaviyo, events record real customer actions as a metric with properties on a profile — and that data is what powers precise segmentation, personalised flows, and reliable revenue attribution.

What This Guide Covers
  • What a Klaviyo event is and how metrics, properties, and profiles work together
  • Standard vs custom events — and when to use each
  • 7-step setup: install, identify, name, enrich, send, test, monitor
  • Testing and debugging with the Metrics Activity feed
  • Scaling best practices for naming, hygiene, deduplication, and governance
  • Strategic DTC use cases that turn events into revenue
Pro Tip — Before You Start Include a profile identifier and a unique_id on every single event. Test in Analytics → Metrics → Activity feed before enabling any flows. These two habits prevent the most common event tracking failures.

What Is Klaviyo Event Tracking and Why Does It Matter?

In Klaviyo, an event is a customer action you record and use to power segmentation, personalisation, and automation. Every event belongs to a specific metric, includes properties with context, and links to the right customer profile.

This structure lets you trigger flows the moment someone acts, filter audiences by precise behaviour, and attribute revenue back to specific actions with confidence. Clean, well-named metrics and lean properties are the foundation of reliable reporting and higher conversion rates.

Core Components of a Klaviyo Event

Event

A single action taken by a profile at a specific timestamp. Every event has exactly one metric (its type) and links to its profile and metric in the relationships object.

🏷️
Metric (Event Type)

The named type of action — for example, Completed Quiz or Placed Order. When you send an event with a metric name, Klaviyo matches an existing metric or creates a new one automatically.

📋
Properties

JSON properties carry context like sku, category, or value. Only top-level, non-object properties are segmentable. Put extra detail in $extra. Max 400 properties per event. Values of 0, null, and empty strings are ignored in segmentation.

🔑
Unique ID

A recommended identifier to prevent accidental deduplication. If you omit unique_id, events with the same metric and profile sent simultaneously can be silently dropped. Use UUIDv4.

👤
Profile

The customer the event belongs to. Include at least one identifier per event: id, email, phone_number, or external_id. Events sent with @example.com or @test.com emails are silently dropped.

💰
Value

An optional numeric amount — for example, a purchase price. If a metric historically included a value, events missing it will default to 0. Always send value explicitly to keep reporting accurate.

Standard vs Custom Klaviyo Events

Standard e-commerce and on-site events come automatically via your platform integration. Custom events are for brand-specific moments you need to track and act on via the API.

Standard — Shopify
E-commerce Events
  • Checkout Started
  • Placed Order
  • Ordered Product
  • Fulfilled Order
  • Cancelled Order
  • Refunded Order
On-Site Behavioural
Behavioural Events
  • Viewed Product (default)
  • Active on Site (default)
  • Added to Cart (toggle on)
  • Viewed Collection (toggle on)
  • Submitted Search (toggle on)
Custom Events — API
Brand-Specific Moments
  • Loyalty Points Redeemed
  • Wishlist Added
  • Quiz Completed
  • Back in Stock Clicked
  • Pre-Order Reserved
  • Subscription Paused
When to Use What Use standard events when they cleanly represent the moment — best-practice flows and reports already expect them. Go custom when you need a distinct moment or richer context to target and branch flows that standard events can’t capture.

7-Step Klaviyo Event Tracking Setup Guide

1

Install Tracking on Your Platform

Connect your platform (e.g. Shopify). Enable the app embed so Viewed Product and Active on Site fire automatically, then switch on Track behavioral events for Added to Cart, Viewed Collection, and Submitted Search.

Shopify Klaviyo onsite tracking settings showing app embed toggle, Track Viewed Product option, and Track behavioral events checkbox
Shopify → Klaviyo integration — enable the app embed and behavioural event tracking Shopify Tracking Setup →
2

Identify the User on Every Event

Send at least one profile identifier with every event. Without an identifier, Klaviyo cannot link the event to a profile — and the event is effectively lost.

Klaviyo profile identifier object showing email, phone number, external_id, anonymous_id, and other profile attribute fields
Include at least one identifier — email, phone_number, id, or external_id — on every event Create Event API Reference →
Required identifier fields
"profile": { "data": { "type": "profile", "attributes": { "email": "sarah@example.com", "external_id": "cust_12345" } } }
3

Name the Metric Clearly

Use action-first names you will immediately recognise in segments and flow triggers. Klaviyo creates a new metric every time you use a new name — so inconsistent naming creates duplicate metrics that pollute your dashboard.

  • Completed Quiz, Redeemed Reward, Back In Stock Clicked
  • quiz, reward event, bisc
  • Keep casing consistent — Completed Quiz and completed quiz create two different metrics
  • If your schema changes, create a new name like Completed Quiz v2 to protect existing flows
4

Add Only the Properties You’ll Actually Use

Include only top-level, non-object properties you will segment or filter on. Keep payloads lean — max 400 properties per event. Store extra, non-segmentable context in $extra.

Klaviyo event properties object editor showing top-level fields Brand, ProductID, ProductName, Value, and SKU with Add Field button
Add only top-level properties you’ll segment on — stash extras in $extra Event Properties Reference →
Clean property payload example
"properties": { "category": "Skincare", "value": 45.00, "sku": "SK-001", "quiz_result": "hydration", "$extra": { "session_id": "abc123", "referrer": "email_campaign" } }
5

Send the Event via the Right Endpoint

The endpoint you use depends on where the code runs. Using the wrong one exposes your private API key or causes events to be rejected.

Example JSON payload for a Klaviyo client event showing public token, event name Ordered Product, customer properties with email, and event properties with item name and value
Client-side event payload — use your public API key only, never a private key in the browser Bulk Create Client Events →
  • Server-side: Create Event or Bulk Create Events — use private or OAuth credentials
  • Browser/client-side: Bulk Create Client Events — use your public API key only
  • Never expose a private API key in browser code — it gives full account access to anyone who inspects the page
6

Test in Klaviyo’s Activity Feed

Open Analytics → Metrics, find your metric, and click into the Activity feed to confirm events are arriving with the correct properties, profile associations, and timestamps.

Klaviyo Analytics Metrics page showing Added to Cart metric chart with date range selector, filters, activity feed tab, and daily trend line
Analytics → Metrics — confirm your event metric is receiving data before building flows Klaviyo Metrics Guide →
Klaviyo Metrics Activity feed filtered to Added to Cart showing individual profile entries, timestamps, and action menus for inspecting event properties
The Activity feed — inspect individual events, properties, profile links, and timestamps Activity Feed Guide →
7

Create Metric-Triggered Flows and Enable Monitoring

Create a metric-triggered flow and add trigger filters as needed. Then enable metric anomaly monitoring for your most critical metrics — checkout, purchase, renewals — so unusual drops trigger alerts before flows silently underperform.

Klaviyo Flow Trigger screen highlighting the Metric option for entering a flow when a specific customer action occurs
Klaviyo flow trigger setup — select Metric and choose your custom or standard event Metric-Triggered Flows →

Strategic DTC Use Cases for Klaviyo Event Tracking

These are the highest-ROI event tracking setups for DTC brands — each one turns a customer signal into a targeted, timely flow.

📦
Back in Stock
Use the Subscribed to Back in Stock metric to queue shoppers, then trigger email or SMS when inventory returns. Pull product properties like sku and product_name into the message for relevance.
🧪
Quiz Completed (Custom Event)
Fire a Completed Quiz custom event with a top-level property like quiz_result = hydration. Branch your welcome flow by result to serve personalised product recommendations and content.
Loyalty Points Redeemed (Custom Event)
Trigger VIP early access or exclusive offers when loyalty points are redeemed. Connect your loyalty programme (e.g. Smile.io or Yotpo) and use redemption events or profile fields to power the flow.
❤️
Wishlist Added (Custom Event)
Send a Wishlist Added event via the API, then follow up with a back-in-stock or price-drop reminder when inventory or pricing changes for that specific product.
🔍
Viewed Collection (On-Site Event)
Enable onsite tracking and toggle on Viewed Collection to power category-specific browse abandonment and social proof campaigns targeted by product category interest.
💸
Price Sensitivity Flow
Use Klaviyo’s native Price Drop flow and set your threshold by amount or percentage. Add trigger or profile filters to refine who receives alerts based on purchase history or segment.

Testing & Debugging Klaviyo Event Tracking

Validate your tracking before you launch any automations. Use Klaviyo’s built-in views to check payloads, identifiers, and timing — then preview messages that depend on those events.

Your Testing Toolkit

  • Activity feed: Go to Analytics → Metrics → Activity feed to confirm events are arriving, inspect properties, and see the linked profile and timestamp — the fastest way to spot mapping issues
  • Preview & Test: From any flow message, open Preview & Test, choose a profile and the triggering event, and confirm dynamic content resolves from event properties correctly
  • API spot checks: Query Get Events and Get Event Relationships to verify the metric and profile associations and event timestamps
  • Client vs server sends: Browser code must call Bulk Create Client Events with a public key. Server code must use Create Event or Bulk Create Events with private or OAuth credentials

Common Issues & Fixes

Issue Likely Cause Fix Where to Verify
Events not appearing in Klaviyo No profile identifier included Add email, phone_number, id, or external_id to every event payload Analytics → Metrics → Activity feed
Duplicate events being created Missing unique_id field Generate and include a UUIDv4 as unique_id on every event send Activity feed — duplicate timestamps
Events dropped silently Test email domain used (@example.com, @test.com) Use a real email address for development testing API response — no error thrown but event missing
Flow not triggering on event Metric name mismatch or trigger filter too restrictive Confirm metric name matches exactly; check trigger filters in flow settings Flow → Trigger setup → Metric name
On-site events not firing App embed not enabled or tracking toggle off Enable app embed in Shopify → Klaviyo integration; toggle on behavioural events Shopify integration settings
Private key exposed in browser Wrong endpoint used client-side Switch to Bulk Create Client Events with public API key only Network inspector — check request headers
Properties not segmentable Property stored as nested object instead of top-level Flatten properties to top-level; move nested data into $extra Segment builder — property not appearing in dropdown

Best Practices for Scalable Klaviyo Event Tracking

Naming Conventions

Use action-first metric names with consistent casing and tense — Completed Quiz, Redeemed Reward. Klaviyo creates a new metric every time you use a new name, so labels must stay consistent across your codebase.

Property Hygiene

Send only top-level, non-object properties you’ll segment or analyse — for example category, value, sku. Max 400 properties per event. Put extra, non-segmentable detail in $extra. Values of 0, null, and empty strings are ignored in segmentation.

Deduplication & IDs

Include a stable unique_id (UUIDv4) and the correct time field, especially for backfills. Events with the same metric and profile sent simultaneously without unique_id can be silently dropped as duplicates.

Governance

Maintain a shared metric catalogue with owner, purpose, and schema for each event. If your schema changes, create a new metric name (e.g. Completed Quiz v2) so existing flows and reports remain valid and unaffected.

Monitoring

Enable metric anomaly monitoring for checkout, purchase, and renewal metrics so unusual volume drops trigger alerts before flows silently underperform for days without you noticing.

Reporting

Set a consistent Conversion metric across campaign and flow reports. Confirm message attribution windows are aligned so revenue from event-triggered flows rolls up cleanly to the right source.

Lifecycle Segmentation from Klaviyo Event Data

Once events are flowing correctly, use them to build precision segments that power smarter lifecycle automations:

  • Win-back from inactivity: Has not done Placed Order in 90 days
  • Churn prevention: Fewer site or message events than usual in a rolling 30-day period
  • Replenishment: Delay from Placed Order by expected usage interval; branch by product category or quantity purchased
  • Category affinity: Has done Viewed Collection where category = Footwear at least 3 times in the last 14 days
  • Quiz personalisation: Has done Completed Quiz where quiz_result = hydration
Segmentation Strategy Start with frequency + recency logic, then layer on property filters for precision. The pattern is: “What someone has done → X times in the last Y days” with additional filters like category, price_band, or quiz_result. This approach keeps segments dynamic and self-updating.

Frequently Asked Questions About Klaviyo Event Tracking

Can I create Klaviyo events without an existing profile? +
Yes. The Create Event endpoint can create or update a profile when you include at least one identifier — email, phone_number, id, or external_id. Klaviyo will create the profile if it doesn’t already exist.
What’s the difference between a Klaviyo metric and an event? +
A metric is the event type or label — for example, Placed Order or Completed Quiz. An event is a single occurrence of that type associated to a profile with a specific timestamp. One metric can have millions of individual events.
How do I tie revenue back to a Klaviyo event-driven flow? +
Choose a Conversion metric in your campaign or flow analytics — typically Placed Order — and confirm your message attribution windows are set correctly. This ensures revenue from event-triggered flows rolls up to the right source in reporting.
How do I check if a Klaviyo metric is still firing? +
Open Analytics → Metrics → Activity feed for that metric and check recent event timestamps. Enable metric anomaly monitoring on critical metrics to receive alerts when event volume drops below expected thresholds.
Can I build frequency and recency segments from Klaviyo events? +
Yes. Use “What someone has done” conditions in the Klaviyo segment builder, set frequency and date range, then add property filters for precision — for example, has done Viewed Collection where category equals Footwear at least 2 times in the last 30 days.

Key Takeaways

  • Identify every event: Include a profile identifier and a unique_id on every event to keep data clean and prevent duplicates.
  • Send lean properties: Use only top-level fields you’ll segment on — store extras in $extra. Max 400 properties per event.
  • Use the right endpoints: Server uses Create Event or Bulk Create Events; browser uses Bulk Create Client Events with public key only.
  • Test before launch: Validate payloads in Analytics → Metrics → Activity feed to catch mapping issues before flows go live.
  • Name metrics clearly: Action-first, consistent casing — Klaviyo creates a new metric for every unique name, so consistency is critical.
  • Segment with intent: Build frequency + recency rules first, then add property filters for precision targeting.
  • Measure correctly: Set a Conversion metric and confirm attribution windows for reliable, trustworthy ROI reporting.

Worried your Klaviyo events aren’t reliable enough to base decisions on?

We’ll validate your setup, eliminate tracking errors, and help you build data-backed flows and segments that drive revenue with confidence.

Book Your Free Audit →
Scroll to Top