- Platform
- Web App and Mobile Wallet
- Duration
- 14 weeks
- Industry
- Retail / Hospitality / MarTech
- Read time
- 5 min read
The loyalty program problem is not strategy. It is friction. Most businesses that launch a loyalty program know what they want: repeat visits, higher basket size, better retention data. What kills them is the app download requirement.
Asking a customer to download a dedicated app to collect stamps is a barrier most customers never cross. The program launches with a marketing push, peaks at week three, and flatlines before the first reward is ever redeemed.
LoyaltyPass removes the download entirely. A loyalty card that lives in Apple Wallet or Google Wallet shows up on the lock screen when the customer is near the store. One tap to enroll. No credentials. No app store. No friction. The result: 60% higher enrollment than equivalent app-based programs and a 3x lift in repeat visit rate.

before & after
What changed
- App-based loyalty programs averaged 12 to 18% enrollment of customers who were explicitly told about them, and most would not download a dedicated app
- Physical stamp cards were lost, forgotten, or fraudulently stamped with no audit trail and no way to resolve redemption disputes
- Businesses had no data on which customers were active, churning, or at risk: the loyalty program ran blind
- Email-based loyalty updates reached only 20 to 30% of enrolled customers, with the rest never seeing the message
- Changing a reward value or card design required printing new physical cards and a fresh distribution campaign
- Customers scan a QR code and the loyalty card installs directly into Apple Wallet or Google Wallet in seconds: no account creation, no app store
- Stamp count, tier status, and active rewards are visible on the card in the customer's wallet, surfacing on the lock screen near the store
- Wallet push notifications reach 100% of enrolled customers: a promotional push lands on the lock screen, not in an ignored inbox
- Operators see visit frequency, redemption rate, and churn signals per customer from a web dashboard
- Card design changes, new rewards, and updated tier thresholds push to every enrolled customer's wallet immediately
What we had to solve
- 01
Generating and signing wallet passes correctly for both Apple and Google
Apple PKPass and Google Wallet JSON have different schemas, different certificate signing requirements, and different update protocols. Building a pass generation service that handles both without treating them as two separate products required a normalization layer that mapped a single LoyaltyPass program configuration into the correct format for each platform. Certificate management (generating, storing, and renewing the signing certificates Apple requires) added a security and operational layer that most developers underestimate when they first look at the Apple Wallet API.
- 02
Delivering real-time push updates to wallets reliably at scale
When a business pushes a promotional update (double points this weekend, new reward unlocked) it needs to reach every enrolled customer's wallet within seconds, not hours. Apple and Google have different push notification protocols for wallet passes, and neither is as well-documented as mobile push notifications. Building a reliable delivery pipeline required understanding both protocols at the implementation level, handling registration updates when customers change devices, and designing a retry mechanism for failed deliveries that did not result in duplicate notifications.
outcomes
What we achieved
App-based loyalty programs averaged 12 to 18% enrollment of customers who were explicitly told about them.
Email-based loyalty updates had 20 to 30% open rates. Most enrolled customers never saw promotional messages.
Without a visible loyalty card, most customers forgot the program existed between visits and had no reminder to return.
Your loyalty program is dying at the app download step?
the build
What we built
LoyaltyPass is built around the principle that the best loyalty program is the one customers actually use.
Customers have their loyalty card in seconds — enrollment happens at the point of sale
Customers scan a QR code and receive a wallet pass in seconds. The pass installs into Apple Wallet or Google Wallet with their current stamp count, tier status, and active rewards visible on the card face. No account creation required: enrollment is frictionless enough to happen at the point of sale.
Operators change the program structure after launch without resetting customer progress
Businesses choose their program structure: classic stamp card (buy 9, get 1 free), points accumulation with threshold rewards, or a tiered program with named tiers and escalating benefits. The engine handles all three mechanics and allows operators to change the structure after launch without resetting enrolled customer progress.
Operators see who's drifting and run seasonal campaigns without a developer
Operators manage enrolled customers, view visit and redemption data, and push promotional notifications from a web dashboard. Seasonal campaigns (double points weekend, birthday reward) are configured without a developer. The dashboard shows which customers are active, which are drifting, and which have not visited in a set period.
Card changes appear on every enrolled customer's wallet immediately — no re-enrollment needed
Changing a stamp target, adding a new reward, or redesigning the card layout pushes to every enrolled customer's wallet immediately via the Apple and Google Wallet push update APIs. No redownload or re-enrollment needed, the change appears on the customer's existing card.
Want results like these for your business?
stack
Why we chose this stack
- 01Next.jsThe operator dashboard and the public enrollment flow needed consistent performance and a server-driven architecture. App Router with React Server Components gave us fast initial loads for both surfaces without duplicating the application layer.
- 02Node.jsThe pass generation service handles Apple PKPass creation, Google Wallet JSON generation, certificate signing, and push update delivery for both platforms. Node's async I/O model handles concurrent pass operations efficiently without threading complexity.
- 03PostgreSQLThe customer-program relationship model (enrollments, stamp counts, tier history, redemptions) needed reliable relational storage with the query performance to support churn signal analysis and campaign targeting across enrolled customers.
- 04AWSApple pass signing certificates and PKPass bundles are stored in S3. Lambda handles the Apple Push Notification Service webhook flow that triggers wallet updates when a business pushes a campaign or a customer earns a new stamp.
Common questions about LoyaltyPass
No. Customers scan the QR code and the pass installs into their wallet linked to a device identifier. For businesses that want named accounts (to enable cross-device access or personalized rewards), an optional account creation step can be added to the enrollment flow. Most businesses start without it to keep enrollment frictionless and add it later for their highest-value customer segments.
Yes. LoyaltyPass has an API that POS systems can call to stamp or credit points at checkout. Pre-built connectors exist for common POS platforms. For custom POS integrations, a webhook-based approach handles most setups within a few days without requiring changes to the POS hardware or software.
Customer data is exportable as a CSV at any time. Upon cancellation, LoyaltyPass provides a 30-day data export window before deletion. The data belongs to the business that collected it: LoyaltyPass does not retain or use it after the relationship ends.
Yes. Program structure changes (stamp target, reward value, tier thresholds) apply going forward and do not reset existing customer progress unless you explicitly choose to reset. Enrolled customers stay enrolled and their accumulated progress is preserved. Card design changes push to every enrolled wallet immediately.
We built LoyaltyPass (Apple Wallet and Google Wallet pass generation, stamp and points engine, operator dashboard, campaign management, real-time push updates, and POS API) in 14 weeks. The most technically complex part was the wallet pass signing and update infrastructure for both Apple and Google protocols simultaneously. A single-wallet-platform version (Apple-only or Google-only) would be faster. Contact us to estimate based on your program mechanics and integration requirements.
Related work
More of our work
Modernizing Loyalty for a Leading Irish Utility Provider
Modern loyalty platform managing 300K+ users with automated workflows and real-time redemptions.
Building a Loyalty Platform for a High-End Cosmetic Dermatology Practice
Gamified mobile loyalty platform for a medical spa with urgency mechanics and point redemption.