How to Create a Pass with Zapier

Daniel Baudino

Updated June 25, 2026

TL;DR: Issue Apple Wallet and Google Pay passes automatically from any Zapier trigger.
  1. 1. Connect PassNinja to Zapier (see how-to-connect).
  2. 2. Choose a trigger — a form, CRM event, spreadsheet row, payment, or anything else.
  3. 3. Add PassNinja → Create Pass as an action and select your pass template.
  4. 4. Map trigger fields (name, email, points, etc.) to the pass template fields.
  5. 5. Add a follow-up action to send the passUrl via email or SMS.

PassNinja's Zapier integration includes a native Create Pass action — no Webhooks by Zapier, no API keys in headers, no JSON to write by hand. Select your template, map your data, and every new Zap run issues a personalized Apple Wallet or Google Pay pass and returns the install link ready to drop into an email or SMS action.

How it works

  1. A trigger fires in another app — a form submission, a new CRM contact, a completed payment, a spreadsheet row.
  2. Zapier calls PassNinja's Create Pass action with the data from that trigger.
  3. PassNinja creates the pass and returns a passUrl that works on both iPhone (Apple Wallet) and Android (Google Pay).
  4. A follow-up action delivers that link to the recipient.

The pass is live immediately — recipients can tap the link on their phone and add it to their wallet in one step.

Setting up Create Pass in a Zap

Step 1 — Choose a trigger

Connect any app that fires when you want a pass created. Common choices:

Trigger appEventUse case
Google SheetsNew or Updated RowGuest lists, member imports, event registrations
Typeform / JotformNew SubmissionSign-up forms, RSVP forms
ShopifyNew CustomerLoyalty card on first purchase
StripeNew CustomerMembership pass on subscription start
HubSpotNew ContactCRM-driven pass issuance
SalesforceNew LeadField sales or event pass

Set up your trigger, connect the app account, and run a test step to pull in sample data. You'll map this data to pass fields in Step 3.

Step 2 — Add PassNinja → Create Pass

  1. Click + to add an action after your trigger.
  2. Search for PassNinja.
  3. Select the Create Pass action.
  4. Connect your PassNinja account — see How to Connect PassNinja to Zapier if you haven't done this yet.

Step 3 — Select a Pass Template

The Pass Template dropdown lists every template in your PassNinja account. Select the one you want to use.

After selecting a template, the field list below it updates automatically to show exactly the fields defined on that template — no need to know field names in advance.

Tip: If your template doesn't appear, go to your PassNinja dashboard and confirm the template is active, then refresh the Zapier dropdown.

Step 4 — Map your data to pass fields

Each field shown corresponds to a field in your template. Click inside a field and select the matching data from your trigger step.

Pass fieldMap from trigger
EmailForm → Email field
First NameCRM → Contact First Name
PointsStatic value: 0
Member SinceZapier → Current Date/Time
Event DateFormatter → converted to ISO 8601

Fields marked required must have a value — the Zap will error if they are blank. Optional fields can be left empty; the pass uses its template default.

Date fields: Pass date fields expect ISO 8601 format (2026-12-31T23:59:00.000Z). If your trigger returns a date in another format, add a Formatter by Zapier → Date/Time → Convert step before Create Pass to normalize it.

Step 5 — Test the action

Click Test action. If successful, Zapier shows the response:

{
  "id": "abc123def456789012",
  "serialNumber": "abc123def456789012",
  "passType": "ptk_0x1a4b",
  "passUrl": "https://i.installpass.es/p/abc123def456789012"
}

Open the passUrl on your phone to confirm the pass looks correct and all fields are mapped as expected.

Step 6 — Send the passUrl to the recipient

Add one more action to deliver the pass. The passUrl returned by Create Pass is a universal link — it opens Apple Wallet on iPhone and Google Pay on Android.

Send via email (Gmail):

  • Add Gmail → Send Email
  • Subject: Your [Program Name] pass is ready
  • Body: Tap here to add your pass to your wallet: {{passUrl}}

Send via SMS (Twilio):

  • Add Twilio → Send SMS
  • Message: Your pass is ready. Add it to your wallet: {{passUrl}}

Save to CRM (HubSpot):

  • Add HubSpot → Update Contact
  • Set a custom property passninja_serial_number to {{serialNumber}}
  • Set passninja_pass_url to {{passUrl}}

Storing the serialNumber on the contact record lets you update or delete the pass later by looking it up from your CRM.

Common patterns

Issue a pass and email it in one Zap

Trigger: Typeform → New Submission
Action 1: PassNinja → Create Pass
Action 2: Gmail → Send Email (body includes {{1. passUrl}})

Create a pass only if one doesn't already exist

Trigger: Google Sheets → New Row
Action 1: PassNinja → Find Pass (search by serial number stored in the sheet)
Filter: Only continue if Find Pass returned 0 results
Action 2: PassNinja → Create Pass
Action 3: Google Sheets → Update Row (write serialNumber back to sheet)

Issue an event ticket and write the serial back to the guest list

Trigger: Google Sheets → New Row (guest list)
Action 1: PassNinja → Create Pass (Event Ticket template)
Action 2: Gmail → Send Email (passUrl in body)
Action 3: Google Sheets → Update Row (set "Pass Serial" column to {{1. serialNumber}})

Storing the serial in the sheet lets you update guest details (table assignment, seat, status) later using the Update Pass action.

Field format reference

Field typeExpected formatExample
TextPlain stringJane Doe
EmailValid email addressjane@example.com
PhoneDigits only or E.164+14155551234
Date / TimeISO 86012026-12-31T23:59:00.000Z
NumberNumeric string100
Booleantrue or falsetrue

Troubleshooting

"Pass template not found" The selected template was deleted or the template ID changed. Reopen the Zap, click the Pass Template dropdown, and reselect the template.

Pass created with blank fields The trigger test data was empty, or the field mapping pointed to a field that returned no value. Run your trigger with real data, check the mapping, and retest.

passUrl works on desktop but not on mobile The link opens the pass installation flow — it only does something on a phone with Apple Wallet or Google Pay installed. On desktop it redirects to a landing page. This is expected behavior.

Zap errors with "required field missing" One or more fields marked required in your template were not mapped or returned an empty value. Check all required fields have a mapping and that your trigger provides data for them.

Was this article helpful?
Yes No