How to Integrate Klaviyo with PassNinja

Daniel Baudino

Updated May 16, 2026

TL;DR: Connect Klaviyo to PassNinja for wallet pass automation.
  1. 1. Connect your Klaviyo account via OAuth.
  2. 2. Configure which events sync to Klaviyo.
  3. 3. Create passes with customer emails and phone numbers.
  4. 4. Track Pass Installed, Pass Updated, and Pass Deleted events.
  5. 5. Build flows triggered by wallet pass engagement.

PassNinja's native Klaviyo integration allows you to create Apple Wallet and Google Wallet passes directly from your marketing automation workflows. This tutorial covers how to connect your accounts, track pass events as Klaviyo metrics, and build flows that respond to wallet engagement.

How to connect Klaviyo to PassNinja

There are two ways to connect your Klaviyo account to PassNinja: starting from PassNinja (recommended for existing users) or starting from the Klaviyo Marketplace (recommended for new installs).

Option 1: Connect from PassNinja (PassNinja-initiated)

This is the recommended method if you already have a PassNinja account:

  1. Log in to your PassNinja dashboard at passninja.com/login.
  2. Navigate to Settings > Integrations.
  3. Find the Klaviyo card and click Connect.
  4. You'll be redirected to Klaviyo to authorize the connection.
  5. Review the permissions PassNinja is requesting and click Allow.
  6. You'll be redirected back to PassNinja with a success message.

Once connected, you'll see your Klaviyo account details in the Integrations section and can configure which events to sync.

Option 2: Connect from Klaviyo Marketplace (Klaviyo-initiated)

If you're discovering PassNinja through the Klaviyo Marketplace:

  1. Go to the Klaviyo Integrations Directory.
  2. Search for "PassNinja" and click Install.
  3. If you're not logged into PassNinja, you'll be redirected to create an account or log in.
  4. After authentication, you'll be redirected back to complete the OAuth flow.
  5. Click Allow to grant PassNinja access to your Klaviyo account.
  6. You'll land in your PassNinja dashboard with the integration active.

Note: Both methods result in the same OAuth connection. The main difference is where you start the flow.

How to view the PassNinja app in Klaviyo

After connecting, you can verify and manage your integration from within Klaviyo:

  1. In Klaviyo, click Integrations in the left sidebar.
  2. Click Apps or Installed Apps (depending on your Klaviyo version).
  3. Find PassNinja in your list of connected apps.
  4. Click on PassNinja to see:
    • Connection status
    • When the integration was installed
    • Which scopes/permissions are granted
    • Option to disconnect

You can also see PassNinja in the Settings > Account > API Keys section if you need to verify the OAuth connection status.

How to see analytics in Klaviyo

PassNinja syncs pass lifecycle events to Klaviyo as custom metrics. These events allow you to build segments, trigger flows, and analyze wallet engagement.

Events synced to Klaviyo

Event NameWhen It FiresUseful For
Pass InstalledCustomer adds pass to Apple or Google WalletWelcome flows, engagement tracking
Pass UpdatedPass is scanned, redeemed, or modifiedLoyalty tracking, scan frequency
Pass DeletedCustomer removes pass from walletWin-back campaigns, churn analysis

Viewing metrics

  1. In Klaviyo, go to Analytics > Metrics.
  2. Search for "Pass" to find PassNinja events.
  3. Click on any metric to see:
    • Total events over time
    • Unique profiles
    • Event properties (pass type, template name, etc.)

Building segments

Create segments based on pass engagement:

  1. Go to Audience > Lists & Segments.
  2. Click Create Segment.
  3. Use conditions like:
    • "Pass Installed at least once" — profiles with active passes
    • "Pass Deleted at least once AND Pass Installed zero times in last 30 days" — churned pass users
    • "Pass Updated at least 5 times" — highly engaged customers

These segments can be used for targeted campaigns or as flow triggers.

How to create passes with email and phone numbers

PassNinja identifies customers in Klaviyo using their email address and/or phone number. When creating passes, include these identifiers to ensure events are attributed to the correct Klaviyo profile.

Using the PassNinja API

When calling the PassNinja API to create a pass, include the customer's email and phone in the pass data:

const response = await fetch('https://api.passninja.com/v1/passes', {
  method: 'POST',
  headers: {
    'X-API-KEY': 'your_api_key',
    'X-ACCOUNT-ID': 'your_account_id',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    passTemplate: 'your_template_id',
    pass: {
      // Customer identifiers for Klaviyo sync
      'email': 'customer@example.com',
      'phone': '+15551234567',

      // Pass fields from your template
      'member.name': 'John Smith',
      'member.points': '500',
      'nfc.message': 'https://yoursite.com/checkin/12345'
    }
  })
});

const pass = await response.json();
console.log('Pass URL:', pass.urls.landing);

Using Klaviyo Flows

You can trigger pass creation directly from Klaviyo flows using webhooks:

  1. In Klaviyo, create or edit a flow.
  2. Add a Webhook action.
  3. Configure the webhook:
    • URL: https://api.passninja.com/v1/passes
    • Method: POST
    • Headers:
      • X-API-KEY: your PassNinja API key
      • X-ACCOUNT-ID: your PassNinja account ID
      • Content-Type: application/json
  4. Set the body using Klaviyo's dynamic variables:
{
  "passTemplate": "your_template_id",
  "pass": {
    "email": "{{ email }}",
    "phone": "{{ phone_number }}",
    "member.name": "{{ first_name }} {{ last_name }}",
    "member.points": "{{ person|lookup:'Points Balance'|default:'0' }}"
  }
}

Note: The email and phone fields are used to identify the customer in Klaviyo. Make sure these match the profile properties in Klaviyo for accurate event attribution.

Phone number formatting

PassNinja accepts phone numbers in E.164 format (e.g., +15551234567). If your Klaviyo profiles store phone numbers differently, use Klaviyo's template filters to format them:

{{ phone_number|replace:'-',''|replace:' ',''|replace:'(',''|replace:')','' }}

How to build flows triggered by pass events

Once events are syncing, you can create flows that respond to wallet engagement:

Welcome flow for new pass installs

  1. Create a new flow with trigger Pass Installed.
  2. Add a time delay (optional) — e.g., 1 hour.
  3. Send an email or SMS thanking them for installing.
  4. Include tips on using their pass, like how to access it quickly or what to expect at check-in.

Win-back flow for deleted passes

  1. Create a flow triggered by Pass Deleted.
  2. Add a 24-hour delay to avoid immediate messaging.
  3. Send a message asking for feedback or offering an incentive to reinstall.
  4. Use a conditional split to check if they reinstalled (Pass Installed after Pass Deleted).

Engagement flow based on scans

  1. Trigger on Pass Updated with a filter for scan events.
  2. Send a thank-you message after their first scan.
  3. Use conditional splits to send different messages based on scan count (VIP treatment after 10 scans, etc.).

Troubleshooting

Events not appearing in Klaviyo

  • Verify the integration is connected in PassNinja Settings > Integrations.
  • Check that the pass was created with an email or phone that matches a Klaviyo profile.
  • Events may take a few minutes to sync; check back after 5-10 minutes.

Pass created but no Klaviyo profile found

PassNinja will create a new Klaviyo profile if one doesn't exist with the provided email/phone. The profile will be minimal (just the identifier) until you sync additional properties.

OAuth connection expired

Klaviyo OAuth tokens can expire. If you see connection errors:

  1. Go to PassNinja Settings > Integrations.
  2. Click Disconnect on the Klaviyo card.
  3. Click Connect to re-authorize.

Conclusion

Integrating Klaviyo with PassNinja gives you full visibility into how customers engage with their wallet passes. By tracking installs, updates, and deletions as Klaviyo events, you can build sophisticated automation flows that respond to real-world wallet usage. Whether you're running a loyalty program, event ticketing, or promotional coupons, this integration ensures your marketing stays connected to the passes in your customers' pockets.

Was this article helpful?
Yes No