Send Apple & Google Wallet passes by SMS or WhatsApp

Last verified: October 2026

A text reaches a customer where an email waits. Many customers you know only by phone number never gave you an email at all. This guide shows two Zapier recipes that put a Pass Studio wallet pass in a customer's hands by SMS or WhatsApp, from your own Twilio account or any messaging app on Zapier, with no code.

Who sends what. Pass Studio issues the pass and hands your Zap the holder's own addToWalletUrl. Your messaging account sends the text: your number, your sender name, your consent records, your provider's bill. Pass Studio charges the usual 1 credit for the pass and nothing for the message.

No Zap at all: connect Twilio once

Since October 2026 Pass Studio sends the text itself, through your own Twilio account. Connect it once under Settings → Integrations → Twilio: your Account SID, an API key and secret (never the auth token), your SMS sender (a number or a Messaging Service) and, for WhatsApp, your WhatsApp sender. Then open a pass, Distribute panel, and set Deliver the link by to SMS or WhatsApp. From then on every holder of that pass, whether issued by the form, a share link, a Shopify order, the API or Zapier, gets one message with their add-to-wallet link in their language, from your number and name, and no invite email.

  • SMS text: our default line, link last; reword it per language under Translations.
  • WhatsApp: one "your pass is ready" template per language, created and submitted to Meta from the Twilio card. WhatsApp can be chosen for a pass once its template is approved.
  • Phone numbers in international format (+1 555 000 0000); the form asks for the phone once a text channel is set.
  • Price: 1 credit per message sent, charged when Twilio accepts it; a rejected message costs nothing. Twilio and carrier rates stay on your Twilio bill. The outcome of each message is recorded on the holder's pass and in the API response.
  • API: channel on the issue call (email, sms or whatsapp; default the pass setting) and deliveryChannel on the pass. Zapier: a Delivery Channel input on Issue Pass, Create Pass and Update Pass.

The two Zapier recipes below remain the answer for any other messaging provider, and cost no credit per message.

What you need

  • A Pass Studio pass that is published, and a Pass Studio connection in Zapier (an API key from Settings).
  • A Zapier account. Each recipe is one Zap with two or three steps.
  • A Twilio account with an SMS-capable number registered for your country (in the US that is A2P 10DLC or a verified toll-free number), or a WhatsApp Business sender approved in Twilio or another WhatsApp provider on Zapier.
  • Customer phone numbers you may message. Consent and opt-out handling (STOP replies) are yours and your provider's; Pass Studio never texts anyone.

Recipe 1: your Zap issues the pass, then texts the link

Use this when the customer appears first in another app: a form submission, a new row in a sheet, an order, a booking. The Zap issues the pass through Pass Studio and texts the link in the next step.

  1. Trigger: the app where the customer appears (Typeform, Google Forms, Google Sheets, Shopify, Calendly, your CRM).
  2. Action: Pass Studio → Issue Pass. Pick the pass. Map Customer Phone to the phone field (country code included), Customer Name if you have it; Customer Email is optional when a phone is given. Set Send Wallet Email to False, or leave it empty on a pass whose invite email is off (see below). Map any per-holder fields the pass carries.
  3. Action: Twilio → Send SMS. From is your Twilio number; To is the same phone; the body ends with the Add To Wallet URL field from step 2.
Hi {{Customer Name}}, your {{Pass Name}} card is ready.
Tap to add it to Apple Wallet or Google Wallet:
{{Add To Wallet URL}}

Issue Pass is idempotent: a retried Zap for the same phone returns the existing card (alreadyExisted: true) and never mints a duplicate. The link is about 50 characters, so the sample above stays in one SMS segment with a short name and pass name. Put the link last so it is the tap target.

Recipe 2: Pass Studio issues the pass, your Zap texts the link

Use this when Pass Studio already creates the pass: a customer fills your enrollment form, scans your share link, your Shopify store auto-issues on a paid order, or your own backend calls the API. The Pass Issued trigger fires at issue, before the holder adds the pass to a wallet, and carries the phone and the link.

  1. Trigger: Pass Studio → Pass Issued. Pick the pass, or leave it empty to fire for every pass.
  2. Filter (Zapier's built-in Filter step): only continue if Phone exists. Holders issued without a phone number end here.
  3. Action: Twilio → Send SMS. To is the trigger's Phone; the body ends with the trigger's Add To Wallet URL.

For the enrollment form, open the pass in the Studio, Fields tab, and make the phone required so every enrollment carries one. A second enrollment with the same email or phone re-issues the existing card and fires nothing, so a holder who wants the link again uses the email or asks you.

Turn off the invite email on the pass

By default a holder issued with an email address also receives Pass Studio's wallet email. When your Zap delivers the link, open the pass, Distribute panel, and switch off Send the invite email. From then on Pass Studio emails nothing when it issues that pass, on every path: the API and Zapier issue call, bulk issuance, and Shopify auto-issue. The holder gets the link on screen after the form, from your Zap, or from your API response. The same setting is sendInviteEmail on the pass over the API and Send the Invite Email on the Zapier Create Pass and Update Pass actions. Send Wallet Email on the Zapier Issue Pass action and sendEmail on the API issue call override it for that one issue; left empty, the pass setting decides.

WhatsApp instead of SMS

WhatsApp Business messages that you start, rather than reply to, must use a message template your provider has submitted to Meta and had approved. Create one template per language with the pass name and the link as variables, for example "Your {{1}} card is ready. Tap the link to add it to your wallet: {{2}} See you soon." End the body with a few words after the link: providers report that Meta rejects a body that begins or ends with a variable. The sender is your WhatsApp Business number and display name; Meta's per-message rate and any provider fee land on your account.

Sending the template from the Zap depends on your provider. Twilio's Send WhatsApp Message action on Zapier takes only a free-text body, which Twilio accepts inside the 24-hour customer service window and rejects outside it (error 63016). To send the approved template, replace the Twilio step with a Webhooks by Zapier step (a premium Zapier app) that POSTs to Twilio's Messages endpoint with the template's ContentSid and the variables carrying the pass name and Add To Wallet URL:

POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages.json
Basic auth: Account SID and Auth Token (or an API key)
From=whatsapp:+14155550100
To=whatsapp:{{Phone}}
ContentSid=HX…
ContentVariables={"1":"{{Pass Name}}","2":"{{Add To Wallet URL}}"}

A provider whose Zapier action lets you pick a template and fill its variables needs no webhook step.

What it costs

  • Pass Studio: 1 credit per issued pass, the same as any issue. No charge for the text.
  • Zapier: one task per action step that runs; triggers and Filter steps are free. Recipe 1 is two tasks per text (Issue Pass, Send SMS); recipe 2 is one (Send SMS).
  • Twilio or your WhatsApp provider: their per-message rate, number rental and registration fees, on your bill.

Build your own on the API

Without Zapier, the same two shapes are one API call or one webhook. POST /api/v1/passes/{passId}/issue with phone and sendEmail: false returns addToWalletUrl for your own SMS rail, and the pass.issued webhook carries phone and addToWalletUrl for passes Pass Studio creates. Both are in the API and integration guide.

FAQ

Does Pass Studio send the text message?

With the native Twilio connection, yes, through your own Twilio account: your number, your sender name, your Twilio bill, 1 credit per message sent. With the Zapier recipes, your Zap sends it from any messaging app and Pass Studio charges nothing for the message. Either way Pass Studio never texts from a number of its own.

What does a text delivery cost in Pass Studio?

Through the native Twilio connection, 1 credit per message sent on top of the pass's own issue credit; your Twilio and carrier rates are on your Twilio bill. Through a Zapier recipe, nothing beyond the pass: the text is billed by your messaging provider, and the Zap uses one Zapier task per action step (triggers and filters are free).

Will the customer get both an email and a text?

No. A pass delivers by one channel: email, SMS, or WhatsApp, set under Distribute. On a text channel the invite email is never sent. With a Zapier recipe, turn off "Send the invite email" on the pass so your Zap is the only delivery.

Can I send WhatsApp messages instead of SMS?

Yes, through a WhatsApp Business sender registered with your provider (Twilio or another WhatsApp provider on Zapier). Business-initiated WhatsApp messages must use a template your provider has approved; put the add-to-wallet link in a template variable.

Which path do customers use to add the pass?

The add-to-wallet link opens a page that detects the phone and shows the Apple Wallet or Google Wallet button. One tap adds the pass; nothing is installed without the customer's action.

Related: Zapier integration · Wallet pass API guide · Pass Studio on Zapier