Getting Started with Klaviyo

Daniel Baudino

Updated June 1, 2026

TL;DR: Connect PassNinja to Klaviyo to automate wallet pass delivery and track engagement.
  • Sync pass events (created, installed, updated, uninstalled) to Klaviyo
  • Enrich customer profiles with pass data and custom properties
  • Add dynamic pass download links to emails and SMS
  • Build automated flows triggered by pass activity
  • Segment customers based on pass ownership and engagement

What You Can Do

With PassNinja + Klaviyo, you can:

  • Automate pass delivery — Send wallet passes in welcome flows, post-purchase emails, and SMS campaigns
  • Track engagement — See when customers install, use, or remove their passes
  • Segment customers — Build segments based on pass ownership and activity
  • Personalize messaging — Include dynamic pass download links in your emails and SMS

Prerequisites

Before you start, make sure you have:

RequirementDetails
PassNinja accountWith at least one pass template created
Klaviyo accountManager, Admin, or Owner access
Pass templateConfigured with fields for customer data (email, name, phone number, points, etc.)

Step 1: Create a PassNinja Account

If you don't already have a PassNinja account:

  1. Go to passninja.com and click Sign Up
  2. Complete the registration process
  3. Create a pass template for Apple Wallet, Google Wallet, or both

Helpful links:

Step 2: Connect PassNinja to Klaviyo

Link your accounts using OAuth for secure communication between platforms.

  1. In PassNinja, go to IntegrationsKlaviyo
  2. Click Connect
  3. Log in to Klaviyo and authorize access
  4. Select which pass templates to sync
  5. Click Save

Once connected, PassNinja will automatically sync pass events and customer data to Klaviyo.

For detailed instructions, see: How to Integrate Klaviyo with PassNinja

Step 3: Understand What Syncs to Klaviyo

Events

PassNinja automatically sends these events to Klaviyo:

EventWhen It FiresUse It For
Pass CreatedNew pass is generatedWelcome flows, confirmation messages
Pass InstalledCustomer adds pass to their walletEngagement confirmation, onboarding next steps
Pass UpdatedPass data changes (points, tier, etc.)Status update notifications
Pass UninstalledCustomer removes pass from walletWin-back campaigns, re-engagement
Pass DeletedPass is permanently deleted from PassNinjaCleanup or archival workflows

PassNinja events appearing in Klaviyo's activity timeline — Pass Created, Pass Installed, and Pass Uninstalled

Profile Identity

Each pass creates a Klaviyo profile keyed by the pass serial number (external_id). If the pass includes an email or phone number, those are also set on the profile so the customer appears in Klaviyo's profile list with recognizable contact details.

Profile FieldValueNotes
external_idPass serial numberPrimary identity — always set
emailCustomer email (if on pass)Used for email flows and profile display
phone_numberCustomer phone (if on pass)E.164 format

WalletPass Application Object

In addition to the profile, PassNinja writes a WalletPass record to Klaviyo's Custom Objects for every lifecycle event. This record is the authoritative source of pass state and is linked to the profile via external_id.

FieldDescriptionExample
serial_numberUnique pass identifierfee4a257185906b92a
pass_urlPass download linkhttps://passninja.com/p/fee4a2...
pass_typePass template IDptk_0x216
platformWallet platformapple or google
statusCurrent pass stateactive, uninstalled, or deleted
created_atWhen the pass was issuedISO 8601 timestamp
updated_atWhen this record last changedISO 8601 timestamp

Include wallet pass download links in your Klaviyo emails and SMS messages. The pass serial is stored as external_id on the Klaviyo profile, so use {{ person.external_id }} to build the pass URL.

Email Template Example

<a href="https://passninja.com/p/{{ person.external_id }}"
   style="background: #000; color: #fff; padding: 12px 24px; text-decoration: none; border-radius: 8px;">
   Add to Wallet
</a>

SMS Example

Your loyalty card is ready! Add it to your wallet: https://passninja.com/p/{{ person.external_id }}
  • Place prominently — Don't bury the download link at the bottom
  • Use clear CTAs — "Add to Wallet" or "Get Your Pass" works better than "Click here"
  • Send at high-intent moments — Post-purchase, welcome series, after sign-up

Best Practices

Pass Distribution

ChannelWhen to UseTips
Welcome emailNew subscribersHighest save rates happen early
Post-purchaseAfter first orderCustomer is engaged and trusts you
SMSRe-engagementDirect, high open rates
Thank you pageCheckout completeCapture high-intent moment
Account pageLogged-in customersPersistent placement

Pass Content

  • Keep it minimal — 3-4 visible fields maximum
  • Show value — Points balance, tier status, or available rewards
  • Update regularly — Passes that change stay top-of-mind
  • Include a barcode — Makes in-store use easy
  • Add contact info to the back — Include the customer's phone number and/or email on the back of the pass unless they already appear on the front. This ensures Klaviyo can reliably match pass events to customer profiles

Measurement

Track these metrics to measure success:

MetricWhat It Tells You
Pass save rateHow many customers add passes
Install-to-uninstall ratioPass stickiness
Engagement by segmentPass holders vs non-holders
Redemption rateHow often passes drive action

Troubleshooting

Events not appearing in Klaviyo

  1. Check connection — Go to PassNinja → Integrations → Klaviyo and verify status
  2. Check pass has email or phone — Include at least one contact field on the pass so the profile is recognizable in Klaviyo
  3. Wait a few minutes — Events sync in near real-time but may have a slight delay
  1. Check external_id is set — Preview the email and confirm {{ person.external_id }} resolves to a serial number
  2. Check URL format — Should be https://passninja.com/p/{{ person.external_id }}

Support

Questions? We're here to help.

Was this article helpful?
Yes No