How to Use Zapier Triggers with PassNinja

Daniel Baudino

Updated June 25, 2026

TL;DR: PassNinja's five real-time triggers fire the moment a pass event happens.
  1. 1. Choose a PassNinja trigger: Created, Installed, Updated, Uninstalled, or Deleted.
  2. 2. Connect your PassNinja account and turn on the Zap.
  3. 3. PassNinja registers a webhook — no configuration required.
  4. 4. When the event fires, Zapier receives the payload instantly and runs your actions.
  5. 5. Use the passTemplate, serialNumber, passUrl, and pass fields to drive downstream automation.

PassNinja triggers work as REST Hooks — a real-time push mechanism. The moment a pass is created, installed on a device, updated, removed from a wallet, or deleted, PassNinja pushes the event to Zapier and your Zap runs. There is no polling delay. Payloads typically arrive in under a second.

This guide covers all five triggers, what data they carry, and how to use them to build loyalty flows, event check-in automation, re-engagement campaigns, and audit trails.

How triggers work

When you turn on a Zap with a PassNinja trigger:

  1. Zapier registers a webhook subscription with PassNinja for your account.
  2. When the event occurs — on any pass in your account, from any source (Zap, dashboard, or API) — PassNinja posts the payload to Zapier immediately.
  3. Zapier runs your Zap actions with that payload.

When you turn the Zap off, Zapier automatically removes the subscription. You never manage webhooks manually.

The five triggers

Pass Created

Fires when a new pass is issued, regardless of whether it was created by a Zap, the PassNinja dashboard, or the API.

Use it to:

  • Send a welcome email or SMS with the install link
  • Log the new pass to a CRM or spreadsheet
  • Start an onboarding sequence in an email marketing tool
  • Notify your team in Slack

Example Zap:

PassNinja → Pass Created
→ Gmail → Send Email
  Subject: Your membership pass is ready
  Body: Add it to your wallet: {{passUrl}}

Pass Installed

Fires when the recipient taps Add to Wallet and installs the pass on their iPhone or Android device.

Use it to:

  • Record the install date in your CRM — this is the moment the customer is actively engaged
  • Send a "welcome to the program" message
  • Update a loyalty record to mark the customer as active
  • Notify your team that a VIP or event guest has their pass ready
  • Trigger an event check-in flow for tap-to-enter scenarios

Example Zap:

PassNinja → Pass Installed
→ HubSpot → Update Contact
  Set "Pass Installed At" to {{eventDate}}
  Set "Has Active Pass" to true

Note: A pass can be installed more than once if the holder removes and re-adds it. Each install fires a separate event.


Pass Updated

Fires when any field on a pass changes — whether from a Zap, the dashboard, or the API.

Use it to:

  • Maintain an audit trail of every change in a spreadsheet
  • Notify the pass holder that their points balance was updated
  • Sync the latest field values back to your CRM or loyalty database
  • Trigger a flow when a specific field changes — for example, when status changes to checked_in

Example Zap:

PassNinja → Pass Updated
Filter: Only continue if pass.status exactly matches "checked_in"
→ Google Sheets → Add Row (log: guest name, serial, timestamp)
→ Twilio → Send SMS: "You're checked in! Enjoy the event."

Pass Uninstalled

Fires when a pass is removed from a device wallet.

Use it to:

  • Mark the customer as lapsed in your CRM
  • Trigger a re-engagement email or SMS
  • Update a loyalty record to reflect the removal

Example Zap:

PassNinja → Pass Uninstalled
→ Delay: 24 hours
→ Gmail → Send Email: "We noticed you removed your pass — here's how to get it back."

Note: Uninstall events come from Apple and Google device callbacks. There can be a delay of minutes to hours depending on when the device syncs in the background.


Pass Deleted

Fires when a pass is permanently deleted from PassNinja — the pass is gone and cannot be restored.

Use it to:

  • Remove the customer from an active loyalty segment
  • Archive the pass record in a data warehouse or spreadsheet
  • Send a "your membership has ended" message

Example Zap:

PassNinja → Pass Deleted
→ HubSpot → Update Contact
  Set "Pass Status" to "deleted"
  Set "Has Active Pass" to false

Trigger payload reference

All five triggers return the same payload shape:

FieldTypeDescription
idstringUnique event ID (same as serialNumber — used by Zapier for deduplication)
passTemplatestringTemplate ID (ptk_0x...)
serialNumberstringUnique pass identifier — use this to update or delete the pass
eventstringEvent type: pass.created, pass.installed, etc.
eventDatestringISO 8601 timestamp of when the event occurred
passUrlstringInstall URL — works on both Apple Wallet and Google Pay
passobjectAll current field values on the pass (e.g., pass.email, pass.firstName, pass.points)

Field names under pass.* depend on your template definition.

Setting up a trigger Zap

Step 1 — Add a PassNinja trigger

  1. In Zapier, click + CreateZaps.
  2. In the trigger search, type PassNinja.
  3. Select the event you want to listen for.
  4. Connect your PassNinja account — see How to Connect PassNinja to Zapier.

Step 2 — Test the trigger

Click Test trigger. Zapier calls PassNinja for a sample payload so you can see the data shape and map fields in subsequent actions.

If no sample data loads, create or update a pass in PassNinja first, then click Test trigger again.

Step 3 — Filter by pass template (optional)

If you have multiple templates and only want the trigger to fire for one type:

  1. Add a Filter by Zapier step after the trigger.
  2. Condition: passTemplateExactly matchesptk_0x1a4b (your template ID).

This prevents the Zap from running for passes from other templates.

Step 4 — Map payload fields to your actions

Common mappings:

What you wantField to use
Personalize an emailpass.firstName, pass.email
Reference this pass laterserialNumber
Link to the passpassUrl
Timestamp the eventeventDate
Filter by pass typepassTemplate
Check a specific fieldpass.status, pass.points, etc.

Common trigger patterns

Welcome flow on install

PassNinja → Pass Installed
→ Delay: 1 hour
→ Gmail → Send Email ("Welcome! Here's how to earn points…")

Real-time check-in log

PassNinja → Pass Installed
→ Google Sheets → Add Row
  Columns: Timestamp, Guest Name, Email, Serial, Pass URL

Re-engagement on uninstall

PassNinja → Pass Uninstalled
→ Delay: 24 hours
→ Twilio → Send SMS ("We miss you. Reinstall your pass and get 2x points this week.")

Full audit trail (five separate Zaps, all write to one sheet)

PassNinja → Pass Created     → Sheets → Add Row (event: "created")
PassNinja → Pass Installed   → Sheets → Add Row (event: "installed")
PassNinja → Pass Updated     → Sheets → Add Row (event: "updated")
PassNinja → Pass Uninstalled → Sheets → Add Row (event: "uninstalled")
PassNinja → Pass Deleted     → Sheets → Add Row (event: "deleted")

Tap-to-check-in with pass update

PassNinja → Pass Installed
Filter: passTemplate exactly matches ptk_0x... (your event ticket template)
→ Google Sheets → Add Row (log check-in with timestamp)
→ PassNinja → Update Pass (set status field to "CHECKED IN")

Troubleshooting

"Waiting for webhook" in Zapier task history The Zap is active and listening, but no event has fired yet. Create or update a pass in PassNinja to generate a test event, then check Task History.

Trigger stops firing after a few days Your OAuth token may have expired. Go to zapier.com/app/connections, reconnect your PassNinja account, and unpause the affected Zap.

Duplicate events for the same pass Zapier deduplicates trigger events using the id field — it won't reprocess the same event ID within a 4-hour window. If you're seeing duplicates, they are likely separate events (e.g., a pass installed, removed, and installed again). Use a Filter step if you only want to process the first install.

Trigger Zap runs but fields are missing from pass.* The pass was created without values for those fields. Check the original pass creation — required fields should always be provided at creation time.

Was this article helpful?
Yes No