How to Use Zapier Actions with PassNinja
Updated June 25, 2026
TL;DR: Create, update, delete, and find passes from any Zapier trigger.
- 1. Add PassNinja as an action in any Zap.
- 2. Choose Create Pass, Update Pass, Delete Pass, or Find Pass.
- 3. Select your pass template — per-template fields appear automatically.
- 4. Map data from your trigger to the pass fields.
- 5. Use the returned serialNumber to chain updates, lookups, and deletions.
PassNinja exposes four Zapier actions that cover the full pass lifecycle — issuing a new pass, pushing updates to a pass already in someone's wallet, deleting a pass when access should be revoked, and looking up a pass by serial number. Together they let you automate every stage of a loyalty program, event, or access control workflow without writing code or calling the API directly.
The four actions
| Action | What it does |
|---|---|
| Create Pass | Issues a new Apple Wallet or Google Pay pass from a template |
| Update Pass | Changes field values on an existing pass; update appears on device in real time |
| Delete Pass | Permanently deletes a pass; removes it from the holder's wallet |
| Find Pass | Looks up a pass by serial number; returns current field values |
Create Pass
Use this to issue a new pass the first time a customer or guest enters your system.
When to use it
- A customer signs up and needs a loyalty card
- A guest registers for an event and needs a ticket or invitation
- A member subscribes and needs a membership pass
- Any situation where a new pass should be created on demand
How to set it up
- Add PassNinja → Create Pass as an action in your Zap.
- Connect your PassNinja account.
- Select a Pass Template from the dropdown — the list shows all templates in your account.
- After selecting a template, additional fields appear for every field defined on that template. Map data from your trigger to each field.
- Click Test action — Zapier creates a real pass and returns the result.
What it returns
{
"id": "abc123def456789012",
"serialNumber": "abc123def456789012",
"passType": "ptk_0x1a4b",
"passUrl": "https://i.installpass.es/p/abc123def456789012"
}
Always save the serialNumber somewhere retrievable — your CRM, a spreadsheet column, a database field. Every subsequent update, lookup, and deletion requires it.
Example Zap
Trigger: Typeform → New Submission
Action 1: PassNinja → Create Pass
Template: Loyalty Card
Email: {{form.email}}
First Name: {{form.first_name}}
Points: 0
Action 2: Gmail → Send Email
To: {{form.email}}
Body: Add your loyalty card to your wallet: {{1. passUrl}}
Action 3: HubSpot → Update Contact
Pass Serial Number: {{1. serialNumber}}
Pass URL: {{1. passUrl}}
Update Pass
Use this to push changes to a pass that's already in someone's wallet. The update appears on the device silently — no action required from the pass holder.
When to use it
- A customer earns points and their balance needs to change
- An event's date, location, or details change
- A guest's table assignment or seat is updated
- An access pass needs to show a new status (e.g.,
CHECKED IN) - A membership tier changes from Silver to Gold
How to set it up
- Add PassNinja → Update Pass as an action.
- Select a Pass Template.
- Provide the Serial Number of the pass to update — map this from a field in your trigger or a previous action that stored it.
- Fill in only the fields you want to change. Empty fields are ignored — they do not overwrite existing values.
Important: You can only update a pass you created. The serial number must belong to your account.
What it returns
{
"id": "abc123def456789012",
"serialNumber": "abc123def456789012",
"passUrl": "https://i.installpass.es/p/abc123def456789012"
}
Example Zap — update points after a Shopify order
Trigger: Shopify → New Order
Action 1: PassNinja → Find Pass
Pass Template: Loyalty Card
Serial Number: {{order.customer.note}} (where you stored it at sign-up)
Action 2: Formatter by Zapier → Numbers → Perform Math
Formula: {{1. pass.points}} + {{order.subtotal_price}}
Action 3: PassNinja → Update Pass
Pass Template: Loyalty Card
Serial Number: {{1. serialNumber}}
Points: {{2. output}}
Example Zap — mark a guest as checked in
Trigger: Google Sheets → Updated Row (Check-In column changes to YES)
Filter: Only continue if Check-In Status exactly matches YES
Action 1: PassNinja → Update Pass
Pass Template: Event Ticket
Serial Number: {{sheet.pass_serial}}
Status: CHECKED IN
Checked In: true
Delete Pass
Use this to permanently revoke a pass. Once deleted, it no longer works and is removed from the holder's wallet on their next sync.
When to use it
- A subscription or membership is cancelled
- An event ticket is refunded
- A guest's invitation is withdrawn
- A single-use access pass has been used and should be voided
How to set it up
- Add PassNinja → Delete Pass as an action.
- Select the Pass Template.
- Provide the Serial Number of the pass to delete.
What it returns
{
"id": "abc123def456789012",
"serialNumber": "abc123def456789012",
"deleted": true
}
Example Zap — delete a membership pass on Stripe cancellation
Trigger: Stripe → Cancelled Subscription
Action 1: PassNinja → Delete Pass
Pass Template: Membership Card
Serial Number: {{subscription.metadata.passninja_serial}}
Action 2: Gmail → Send Email
Subject: Your membership has ended
Body: Your digital membership card has been deactivated.
Tip: Store the
serialNumberin Stripe subscription metadata when you create the pass. That makes it immediately available here without a lookup step.
Update vs Delete — when to use which
| Scenario | Use |
|---|---|
| Membership lapsed — permanently gone | Delete Pass |
| Subscription paused — temporarily inactive | Update Pass (set a status field to "Paused") |
| Event ended — keep record but void pass | Update Pass (set status to "Expired") |
| Single-use ticket — void after entry | Delete Pass |
| Guest no-show — keep on file | Update Pass (set status to "No Show") |
Find Pass
Use this to look up a pass by its serial number before updating or deleting it, or to check whether a pass already exists before creating a new one.
When to use it
- You need to read current field values before calculating an update (e.g., current points balance before adding new points)
- You want to check whether a pass exists before creating a duplicate
- You need to confirm a pass belongs to a specific customer before taking action
How to set it up
- Add PassNinja → Find Pass as a search action.
- Select the Pass Template.
- Provide the Serial Number to look up.
What it returns
If the pass is found:
[{
"id": "abc123def456789012",
"serialNumber": "abc123def456789012",
"passType": "ptk_0x1a4b",
"passUrl": "https://i.installpass.es/p/abc123def456789012",
"pass": {
"email": "jane@example.com",
"firstName": "Jane",
"points": "250"
}
}]
If not found: returns an empty result (no error — Zapier handles this as "0 results found").
Example Zap — prevent duplicate passes
Trigger: Google Sheets → New Row
Action 1: PassNinja → Find Pass
Pass Template: Loyalty Card
Serial Number: {{sheet.pass_serial_column}}
Filter: Only continue if Find Pass returned 0 results
Action 2: PassNinja → Create Pass
...
Example Zap — read current points before updating
Trigger: Shopify → New Order
Action 1: PassNinja → Find Pass
Pass Template: Loyalty Card
Serial Number: {{customer.note}}
Action 2: Formatter → Numbers → Perform Math
Formula: {{1. pass__points}} + {{order.total_price}}
Action 3: PassNinja → Update Pass
Points: {{2. output}}
Note: Nested fields from the
passobject are accessed in Zapier aspass__fieldname(double underscore) in the data mapper.
Chaining actions together
The serialNumber returned by Create Pass is the key that connects all four actions. A well-designed Zap stores it at creation and reuses it throughout the pass lifecycle:
New customer signs up
→ Create Pass → returns serialNumber
→ Store serialNumber in CRM / sheet / database
Customer makes a purchase
→ Find Pass (using stored serialNumber)
→ Calculate new points
→ Update Pass (using same serialNumber)
Subscription cancelled
→ Delete Pass (using stored serialNumber)
Field mapping tips
Dynamic field names: After you select a Pass Template in Create Pass or Update Pass, the fields that appear depend on your template definition. If you change the template, recheck your field mappings.
Partial updates: In Update Pass, only fill in the fields you want to change. Any field left blank is skipped — it will not blank out the existing value on the pass.
Required vs optional fields: Fields marked required in the template must have a value for Create Pass. For Update Pass, all template fields are optional — you only send what's changing.
Date fields: Expect ISO 8601 format (2026-12-31T23:59:00.000Z). Use Formatter by Zapier → Date/Time → Convert if your source date is in another format.
Troubleshooting
"Pass template not found" The template ID stored in the action doesn't match any template in your account. Open the action step, reselect the template from the dropdown, and save.
Update Pass makes no visible change on the device Push notifications can take a few minutes to arrive on the device. If no update appears after 10 minutes, check that your PassNinja account has push credentials configured for the platform (Apple Push Notification Service for iPhone, Google Wallet API for Android).
Delete Pass succeeds but pass still shows in wallet The pass is deleted from PassNinja immediately, but the wallet app on the device removes it on the next background sync — usually within a few minutes.
Find Pass returns empty even though the pass exists Confirm the serial number is correct — it's case-sensitive. Also confirm the Pass Template dropdown in Find Pass matches the template the pass was created from.
More articles focused on Zapier
PassNinja connects to Zapier using OAuth 2.0 — the same secure login flow used by Google, Shopify...
How to Create a Pass with ZapierPassNinja's Zapier integration includes a native **Create Pass** action — no Webhooks by Zapier, ...
How to Create and Send NFC Passes Using ZapierZapier is one of the most popular automation platforms, connecting thousands of apps without requ...
How to Use Zapier Triggers with PassNinjaPassNinja triggers work as REST Hooks — a real-time push mechanism. The moment a pass is created,...