Using Punch Card Data in Klaviyo Flows and Campaigns
When building Klaviyo flows and campaigns that respond to punch card activity, you'll want to reference customer punch count and reward milestones. This guide explains when to use person|lookup, how to leverage Klaviyo's new Split action, and which variables to pull into your emails and campaign blocks.
When to Use Person | Lookup
Use person|lookup in these two scenarios:
1. Flows not triggered by "Reward Earned" metric — When your flow is triggered by another metric (like Retextion - Punch Earned, purchase events, or subscription milestones), you can use person|lookup to reference the customer's profile punch card data.
2. Campaigns with show/hide logic — Use person|lookup to conditionally show or hide specific blocks or sections based on punch card profile data.
Do not use person|lookup in flows triggered directly by the "Reward Earned" metric—Klaviyo will not resolve the lookup.
New Split Action: How It Works
Klaviyo recently launched a new Split action that consolidates multi-condition routing into a single block. Instead of creating multiple conditional or trigger splits, you now create one Split with multiple paths.
Critical: Path Order Matters
Profiles enter the first path where they match the criteria. This means you must order your paths strategically, from most specific to least specific. If a profile matches multiple conditions, it will take the first matching path and skip all others.
Setting Up Your Split
To add a Split to your flow:
Drag the Split action into your flow (not a conditional or trigger split).
Click Edit to open the split editor.
Create multiple paths using event-based trigger conditions.
For a punch card flow triggered by Retextion - Punch Earned, you'd set up three paths:
Path 1:
Properties of Retextion - Punch Earned→punch_card_punch_numberequals5Path 2:
Properties of Retextion - Punch Earned→punch_card_punch_numberequals11Path 3:
Everyone else(catches all profiles that didn't match Paths 1 or 2)
⚠️ Warning: Order is critical. If you place "Everyone else" first, all profiles will match that path and never reach your specific punch count conditions.
Email Variables: What to Use in Flows vs. Campaigns
Your email content can pull punch card data from the triggering event or from the customer's profile, depending on your use case.
In Flow Emails (using Retextion - Punch Earned trigger)
Use event-based variables to reference data from the triggering punch event:
{{ event.punch_card_punch_number|default:'' }}— The punch the customer just earned (use the|default:''filter to prevent blank space if the variable isn't available){{ event.punch_card_remaining_punches }}— How many punches the customer needs until their next reward. Great for banners.
In Campaign Emails
Use person|lookup instead of event, since campaigns aren't triggered by a specific event:
{{ person.punch_card_punch_number }}— The customer's current total punch count{{ person.punch_card_remaining_punches }}— Punches until next reward
Finding Available Event Properties
To discover all available event properties for your trigger metric:
Open your flow email for editing.
Click Preview in the top left corner.
Scroll to "All properties".
Browse the event properties and click any you want to copy into your email.
This is the fastest way to find the exact variable names and syntax you need.
Example Flow: Reward Milestone Announcement
View this reference flow to see the new Split action pattern in action.
View an example email using {{ event.punch_card_punch_number|default:'' }} and {{ event.punch_card_remaining_punches }} to display punch milestones dynamically.
Quick Troubleshooting
Issue | Likely Cause | Fix |
All profiles entering the same path | "Everyone else" path is first in the split order | Reorder your split paths: specific conditions first, "Everyone else" last |
Split paths aren't displaying punch data | Using old conditional split blocks instead of new Split action | Use the new Split action with event-based trigger conditions |
Email shows blank or {{variable}} text | Variable syntax is wrong or not available in your trigger metric | Use the Preview > All properties method to find the correct variable names and syntax |
Punch count not displaying in campaign | Using | In campaigns (not flows), use |
"Everyone else" path not catching profiles | Paths above it are too broad | Review your path conditions—if a path above "Everyone else" matches too many profiles, it will catch them first |


