Passmint
TemplatesDocsPricingBlog
Log inGet started
Passmint

Apple and Google Wallet passes from one API. Built for people who ship.

Product
  • Pass Designer
  • Developers
  • Distribution
  • Analytics
  • Templates
  • Pricing
Developers
  • Documentation
  • API reference
  • Node SDK
  • Webhooks
Company
  • Changelog
  • About
  • Contact
  • Support
  • Security
  • Terms
  • Privacy
Social
  • GitHub
  • X

© 2026 Passmint. Built for indie makers.

Apple Wallet & Google Wallet, one API.

E-commerce & payments

Put a loyalty card in every Shopify customer's wallet the moment they buy

Turn each new order into a store-branded Apple Wallet or Google Wallet card — issued automatically, no code and no app for the shopper to install.

Start freeRead the docs →
Apple & Google WalletNo-code via ZapierFree to start
Shopify
New Paid Order
via Zapier
Passmint
Create Pass
Loyalty card

What you can do

A few ways teams put Shopify and Passmint to work together.

Add a Zapier filter on the order's total spent (or lifetime customer value) so that customers crossing a threshold get a different, premium template — a Gold store card instead of the standard one — or run a Find Pass → Update Pass step to flip an existing card's tier field to "VIP". The upgrade shows up on the card already in their wallet.
Issue a coupon-template card instead of a loyalty one to brand-new customers, carrying a single-use welcome discount code. It's a far stickier welcome offer than an email — the code sits on the home screen until it's used, and you can void it once redeemed.
Add a Find Pass (by holder email) → Update Pass step so returning customers' existing cards gain points on each new order instead of getting a duplicate card. Passmint pushes the new balance straight to the card in their wallet — the rewards counter goes up in real time, no app required.
Pair Shopify with a 'no order in 60 days' segment (via a Shopify or email-tool trigger) and run Update Pass to drop a comeback offer code onto the customer's existing store card — a push notification to their lock screen that an email would never get.

Set it up

One Zap links the two — live in a few minutes, no code involved.

  • A Passmint account and an API key (pmk_live… or pmk_test…), from Developers → API Keys.
  • A Passmint loyalty (or generic) template styled as your store card — your logo, brand colour, and the fields you want on it. Note its field names (e.g. points, tier, welcome_code): they must match what you map from Shopify.
  • A Zapier account (the free plan is enough to build and test this).
  • A Shopify store you're an admin on. No theme edits or app install on the storefront are required — the connection is account-level through Zapier.

In Zapier, add Passmint as a connected app and paste your API key when prompted. Zapier verifies it against your account immediately, so you'll know the connection works before building the rest of the Zap. Use a pmk_test… key while you're setting things up.

Create a new Zap and choose Shopify as the trigger app. Pick the trigger that fires when an order is paid, then select your store. Send a test so Zapier pulls a sample order and learns its fields — the customer's email and name, the order total, and the order count all come through here.

TODO(verify): Confirm the exact Shopify trigger label for a paid order (Shopify distinguishes new/created orders from paid/fulfilled ones — pick the one that fires once money is collected). Confirm the sample order exposes customer email, customer name, order total, and the customer's lifetime order count.

Add an action step, choose Passmint, and select Create Pass. Pick your store-card template from the dropdown — Zapier loads your templates automatically. Then map Holder Email from the order's customer email and Holder Name from the customer's first + last name so the card is delivered to the right shopper and shows their name.

In Field Values, map the order details you want on the card to your template's fields. The key on the left must exactly match a field name in your Passmint template (e.g. points → a starting balance, tier → "Member", welcome_code → a discount code you set in Shopify); the value on the right is the order/customer data. Fields you don't map are simply left off the card.

TODO(verify): Confirm, on your real template, that each Field Values key you reference exists as a field name in that template — mismatched keys are silently ignored. Also confirm which Shopify fields hold the values you want (e.g. the customer's total spent and order count, if you're surfacing those).

If you want the card to carry a real, redeemable offer, create a discount code in Shopify first — either one shared code (simplest) or a unique code per customer via a Shopify discount step — and map that code into a welcome_code field on the card. The shopper sees "15% off your next order" on the back of the pass and taps to copy it at checkout.

TODO(verify): Confirm how you're generating the code: a single shared Shopify discount code is the simplest path; unique-per-customer codes need a Shopify 'create discount code' action (or app) ahead of the Create Pass step.

Run the Zap with your test order and check that a card is created in Passmint and the pass URL comes back. Open it on a phone to confirm your branding, points, and code look right, then switch your API key to pmk_live…, turn the Zap on, and place a real test order to watch it issue end to end.

Questions

The details teams check before switching the Zap on.

No. The connection is account-level through Zapier, so there's no theme edit and no storefront app for you. And the customer installs nothing either — the pass adds to Apple Wallet or Google Wallet, which is already on their phone. They just tap the link or button to add the card.
Yes. Create the discount in Shopify, then map its code into a field on your template (e.g. welcome_code). For everyone to share one code, a single Shopify discount is the simplest setup; for unique codes per customer, add a Shopify 'create discount code' step before Create Pass and map that output onto the card.
Use Find Pass (by the customer's holder email) followed by Update Pass. Provide only the fields that changed — say points or tier — and Passmint pushes the update to the card already installed in the shopper's wallet automatically. No re-issue, no new card, no resend.
The Zap triggers on orders placed from now on, so it naturally catches your active customers as they buy again. To enrol everyone at once, the Passmint API issues cards in bulk from your customer export far faster and cheaper than running them one at a time through Zapier.
With the basic Create Pass flow, yes — each paid order issues a card. To keep one card per customer and just update it, add a Find Pass → Update Pass branch keyed on holder email so returning shoppers have their existing card topped up instead of duplicated.
Zapier is perfect for getting this live today. When you're issuing cards on every order at scale, want points and tiers driven straight from your store's data the instant an order lands without per-task costs, or need to backfill your whole existing customer base at once, call the Passmint API directly — POST /v1/passes, or the @passmint/node SDK. Same store cards, same live wallet updates, full control.

Related integrations

Stripe

Issue a membership pass on a new subscription, then sync it through the whole lifecycle.

Square

Drop a wallet loyalty card into a customer's phone after every Square sale.

WooCommerce

Issue a loyalty pass on every new WooCommerce order.

PayPal

Issue a wallet pass on every completed PayPal payment.

Issue your first pass from Shopify today

Free for your first passes. No Apple or Google certificates to manage, no code to write.

Start freeExplore the API →