Skip to content
Apps and UX7 min read

Loyalty cards in Apple and Google Wallet

Installing an app for a coffee is a hurdle for many guests. The wallet is already on their phone. The difference is in what the wallet allows and what it does not, and Apple and Google each do it differently. That is worth knowing before the card is designed.

Why a wallet and not an app

A loyalty scheme lives or dies on whether the customer picks it up at all. For a café or a salon, installing an app is the hurdle many people stop at. In the usual scenario, the card can be added to a supported wallet without installing a separate app. The exact flow depends on the platform and how the card is issued. That is exactly what Walio is built on.

The price is that Apple and Google set the rules. And they are not the same rules: Apple Wallet and Google Wallet look similar to the customer but work differently under the hood. Cards are issued differently, updated differently and notifications follow different conditions. That is why we describe each one separately below.

What a card in the wallet can do

On both platforms a card handles the same basics:

  • Carry state: stamps, points, visits remaining. The details can be changed remotely after issue.
  • Show a QR or barcode for staff to scan.
  • Show the customer a change, such as a new stamp count. Whether and how the change is announced with a notification depends on the platform and the phone’s settings.
  • Offer itself at a relevant moment, for example near the venue. The conditions differ between platforms and depend on location and phone settings.
  • Carry the brand: colours, logo, field labels.

Apple Wallet: a signed pass and device registration

A .pkpass file signed with a certificate

A card in Apple Wallet is a pass, that is a .pkpass file. It is a bundle containing the card data, images and a signature. Every pass has to be signed with a certificate the issuer obtains through an Apple developer account. Without a valid signature the wallet will not accept the pass. The certificate has a limited validity, so its renewal needs watching.

Updates through device registration

When the customer adds the pass, the phone registers with the issuer’s server. Registration means the server knows which devices to tell about a change. When something changes, the server sends the phone a signal, the phone downloads the new version of the pass and the wallet shows it. So the server has to keep running and responding for as long as cards are in circulation.

Relevant display

A pass can carry information about when or where it is useful, such as the venue’s location. The system may then offer it to the customer. It is an offer from the system, not a guaranteed display: whether and when the pass appears is decided by the phone and its settings, including location permission.

Change messages

A field on the card can have a change text, known as changeMessage. When the field’s value changes, the phone shows the customer a notification, such as “You have 7 of 10 stamps”. Apple recommends using changeMessage for time-sensitive changes and states explicitly that it should not be used for marketing or other non-critical messages. The customer can also turn off notifications for a specific card.

Google Wallet: classes, objects and the API

Class and object

Google Wallet works with two layers. A Class describes the scheme as a whole: name, logo and the details shared by all cards. An Object is one customer’s specific card with its own state and code. One class therefore holds the cards of every customer in the scheme.

Issuer account, service account and JWT

Google uses a different issuing model from Apple. The issuer has an issuer account with Google, and its server signs in to the Google Wallet API through a service account, a technical account meant for server-to-server communication. The card reaches the customer through an “Add to Google Wallet” link or button carrying a signed JWT. That is a short signed token with the card data which Google uses to save the card. So instead of a file signed with a certificate as with Apple, requests and tokens are signed with the service account’s key.

Updating the object

Changing a card’s state means updating the object through the API. The issuer’s server does not send anything directly to the phone; it changes the data at Google and Google updates the card in the wallet. Anything that applies to the whole scheme is changed in the class.

Messages and notification conditions

A message can be added to an object or class and is shown with the card. For the customer to get a notification about it, they must have the relevant notifications enabled. For features tied to being near the venue, the conditions depend on location and phone settings.

What it cannot do, and it surprises people

What can change after issue and what cannot

According to the documentation, the content of an Apple Wallet pass can be updated, while some identifying details stay fixed. The exact limits depend on the pass style and how it is updated. The pass style also decides how many fields fit where. In Google Wallet the specific card’s object changes and the layout is set mainly by the class. We design the layout with room to spare so a later value does not have to push anything out.

Card updates are not marketing messages

Card updates can show the customer a change, such as a new stamp count or an upcoming reward. But they are not marketing push messages. Apple intends them for time-sensitive changes, with Google the user must have notifications enabled, and on both platforms the customer can turn them off. Using the card as an advertising channel risks the customer switching notifications off or deleting the card.

A card is not proof of identity

The code on a card can be photographed and passed on. For points that does not matter. For a ticket or a reward of real value the system has to enforce single use, and that is done on the server, not on the card.

A Walio loyalty card in Apple Wallet
The front carries the stamp count, the reward condition and a code for staff. The number of fields comes from the pass style; the contents update remotely.

Whoever issues the cards sets the price

A business can have its cards issued through a third-party service that signs Apple Wallet passes and talks to the Google Wallet API on its behalf. Such services usually charge per card issued or per active customer per month. On a scheme with thousands of cards that is a line item which grows precisely when the scheme is going well.

Walio signs the passes on its own infrastructure, not through a third-party service. That keeps issuing cards under our own control, and watching the certificates stays with us too. It is extra work, but predictable work.

The terminal is half the job

The card is only one side. The other is the member of staff with three people queuing. If scanning the code and adding a point takes more than two taps, or waits on a server, staff stop doing it within a week and the scheme dies. The terminal has to work on a weak signal and must not require a till system.

This cannot be sorted out later. Designing the card means designing what the person behind the bar does at the same time. We approach every custom application the same way: start with whoever will work with it daily.

Frequently asked questions

Can a business send customers messages through the card?

Card updates can show the customer a change, such as a new stamp count, but they are not marketing push messages. Apple intends them for time-sensitive changes, not for marketing. In Google Wallet the customer must have the relevant notifications enabled. On both platforms the customer can turn them off.

Is there a fee per card issued?

With services that provide card issuing as a service, usually yes, either per card or per active customer per month. With your own infrastructure that fee disappears, leaving certificate management and running the server.

Is a wallet card as secure as an ID document?

The code on the card can be photographed and passed on, so on its own it does not prove identity. Single use of a reward or ticket has to be enforced by the server, not by the card.

AuthorOndřej Koziorek

Founder and creative director of NKZ. At nkz.dev, leads briefs, UX/UI and the direction of digital products.

More from the notes
E-commerce

Booking system: off the shelf or custom

When an off-the-shelf system is enough, when an add-on, and when a custom solution starts to make sense.

Read
Apps and UX

When is a custom portal worth it?

Signs that email no longer serves your customers, and how to start a portal small.

Read
Service

Custom applications

Internal systems and portals that replace spreadsheets and e-mail.

About the service