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.

CRM & marketing

Give every HubSpot contact a wallet membership card that tracks their tier

Your CRM already knows each contact's lifecycle stage, tier, and points. Mirror that into an Apple Wallet or Google Wallet card that updates the moment a property changes — no code.

Start freeRead the docs →
Apple & Google WalletNo-code via ZapierFree to start
HubSpot
New Contact
via Zapier
Passmint
Create Pass
Membership card

What you can do

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

Use the 'contact property changed' trigger on your tier property with Find Pass (by email) → Update Pass. The moment a contact is upgraded from Silver to Gold in HubSpot — by a rep, a workflow, or a renewal — the card in their wallet updates itself. No re-issue, no email.
Trigger on a new contact (optionally filtered to lifecycle stage = Lead), issue a generic or membership card, and write Passmint's Pass URL back to a contact property so your welcome email or sequence can link straight to 'Add to Apple Wallet'. Now every new lead carries your brand from day one.
Drive the same flow from HubSpot's company or deal side instead of contacts — trigger when a deal reaches a stage or a company property is set, and issue a card to the primary contact's email showing the account's tier and renewal date. One card per account, kept in sync as the deal progresses.
Add a third Zap on the property change that signals churn — lifecycle stage moving to a 'churned' value, or a custom status flipping. Find Pass by email, then Void Pass so the membership card goes invalid in the customer's wallet immediately, no manual cleanup.

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 membership or loyalty template — note its field names (e.g. member_tier, points, account_manager): they must match the HubSpot properties you map.
  • A Zapier account (the free plan is enough to build and test this).
  • A HubSpot account where contacts carry the properties you want on the card — lifecycle stage, a tier property, points, owner/account manager. A contact email is recommended so passes can be delivered, tracked, and found again for updates.

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 HubSpot as the trigger app. Pick the trigger that fires when a contact is created, connect your HubSpot account, and send a test so Zapier can read a sample contact and learn your property names. If you only want cards for qualified contacts, add a Zapier filter on lifecycle stage (e.g. only continue when it's Lead or Customer) right after the trigger.

TODO(verify): Confirm HubSpot's exact 'new contact' trigger label in Zapier and that the test returns the contact properties you need (email, first/last name, lifecycle stage, your tier and points properties). Note whether the trigger surfaces internal property values (e.g. lifecyclestage = 'customer') versus their display labels.

Add an action step, choose Passmint, and select Create Pass. Pick the membership or loyalty template from the dropdown — Zapier loads your templates automatically. Map Holder Email from the contact's email property and Holder Name from the contact's first and last name so the card is addressed to them and can be found again later by email.

In Field Values, map each contact property you want on the card to a template field. The key on the left must exactly match a field name defined in your Passmint template — member_tier → the tier property, points → the points property, account_manager → the contact owner. The value on the right is the property from the contact. Properties you don't map are simply left off the card.

TODO(verify): Confirm, on a real template, that the Field Values keys you reference exist as field names in that template — mismatched keys are silently ignored. Also confirm which HubSpot property holds your tier (lifecycle stage, a deal stage, or a custom property) and map that one.

Build a second Zap with a HubSpot trigger that fires when a contact property changes — point it at the tier or lifecycle-stage property. Add a Passmint Find Pass step using the contact's email as Holder Email to locate the card they already have, then add Passmint Update Pass, mapping the Pass ID from Find Pass and the new value into Field Values (e.g. member_tier → the upgraded tier). Passmint pushes the change to the installed card automatically — no re-issue, no resend.

TODO(verify): Confirm HubSpot's 'contact property changed' trigger in Zapier and that you can scope it to a specific property (e.g. lifecyclestage or your tier property). Confirm the changed value comes through on the trigger output so you can map it into Update Pass.

Run the create flow with your test contact and check the card is created in Passmint with the right tier. Open it on a phone, then change that contact's tier property in HubSpot and confirm the sync flow updates the same card in your wallet. When both look right, switch your API key to pmk_live…, turn the Zaps on, and watch a real contact flow through.

Questions

The details teams check before switching the Zap on.

Build a second Zap on HubSpot's 'contact property changed' trigger, scoped to your tier or lifecycle-stage property. Add a Passmint Find Pass step (by Holder Email) to locate the contact's existing card, then Update Pass with the new value mapped into Field Values. Passmint pushes the change to the installed pass automatically — the card in their wallet flips to the new tier without a re-issue.
Effectively, yes — and you have two paths. The simplest is to trigger the Zap on the underlying property change a workflow makes (when a workflow sets lifecycle stage to Customer, the 'property changed' trigger fires). Alternatively, if your Zapier plan exposes a HubSpot workflow-action or webhook trigger, you can call the Zap from inside the workflow directly. Confirm the exact trigger available on your plan.
Use Passmint's Find Pass action with the contact's email mapped to Holder Email — it returns the most recent pass issued to that address. Map its Pass ID into the Update Pass (or Void Pass) step. This is why mapping the contact's email to Holder Email on the original Create Pass matters: it's the key the sync flow looks the card up by.
Yes. The card itself is always delivered to a person's email (Holder Email), but you can drive the flow from HubSpot's company or deal objects — trigger on a company property or a deal stage, and map the account's tier, renewal date, or owner onto a card issued to the primary contact. It's a clean way to run an account-based membership where one card represents the whole account.
The Field Values keys do. The key you type in the mapping (e.g. member_tier, points) must match a field name defined in your Passmint template character for character, or that value is silently dropped from the card. The HubSpot property's own internal name and label can be anything — it's the key in the Zapier mapping that has to line up.
Zapier is perfect for getting this live today. When you're issuing cards across thousands of contacts, need a tier change to hit the wallet the instant a property updates without per-task costs, or want to drive field values straight from HubSpot's API alongside your own data, call the Passmint API directly — POST /v1/passes and PATCH to update, or the @passmint/node SDK. Same passes, same live updates, full control.

Related integrations

Mailchimp

Hand every new Mailchimp subscriber a wallet coupon — the offer lives on the phone, not the inbox.

Klaviyo

Issue a coupon or VIP loyalty pass to every new Klaviyo profile — a home-screen channel beyond email and SMS.

Salesforce

Issue a membership or loyalty pass from your Salesforce records.

Pipedrive

Issue a wallet pass when a deal reaches a stage in your pipeline.

Issue your first pass from HubSpot today

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

Start freeExplore the API →