Campaign Rewards: Push, Pass, and Staff Messages
On the Review & turn on screen of the campaign editor, you'll see three different message fields. Each one shows up in a different place. Understanding the difference is the single biggest thing that will make your campaigns effective.
New to campaigns? Start with Messages and Campaigns.
The three fields at a glance
| Field (as labeled in the editor) | Where the customer sees it | Where your staff sees it |
|---|---|---|
| 📱 The message on their phone | On the phone's lock screen | — |
| 💳 What appears on their card | Inline on the wallet pass | — |
| 🧑💼 What your staff sees at the counter | — | On the scanner app, next to an Apply button |
📱 The message on their phone (push notification)
The short text that pops up on your customer's phone when the campaign fires. A live lock-screen preview updates as you type, right next to the field.
- Required for every campaign and message.
- Delivered through Apple Wallet and Google Wallet (not SMS or email).
- Keep it under 160 characters for best delivery — go longer and the editor's counter turns amber, with a note that longer messages get trimmed on the lock screen (the full text still shows on the card).
- Plain text only — no links, images, or formatting.
Good examples:
- "Happy birthday! Enjoy a free coffee on us today 🎂"
- "We miss you! Come back for 20% off your next visit this week"
- "Happy hour starts now — 2-for-1 until 7pm"
Why it matters: This is the hook. If the push is boring, customers won't open the card. Be specific about the offer and when it's valid.
Greet each customer by name
Want each customer to see their own name? Under 📱 The message on their phone, click + First name. It adds `[name]` where your cursor is. When the message goes out, `[name]` becomes that customer's first name — "Hi [name]!" arrives as "Hi Ana!". Each customer sees their own first name.
The lock-screen preview shows a sample name so you can see how it will look. If a customer has no name on file, the message goes out with the name left out: "Hi [name]!" arrives as "Hi!".
💳 What appears on their card (pass message)
Optional text that shows up inside the customer's wallet pass — on the front of the card, in a dedicated offer area.
- Optional. Leave blank for push-only campaigns (these render as `MESSAGE` in your Campaigns tab).
- Stays visible until the offer expires or is claimed, so it's a reminder the customer can come back to.
- Good for rewards that customers need to redeem in person.
- It is also the offer's title in your customers' portal. Left blank, the portal shows the staff message as the title, so write that one so a customer can read it too.
Good examples:
- "Show this at the counter for 15% off"
- "Bonus: +2 stamps on your next visit"
- "Your free birthday drink is ready — valid through Sunday"
Why it matters: Pushes disappear from the lock screen in minutes. The pass message stays on the wallet pass, so if a customer checks their phone an hour later, they can still see what the offer is.
🧑💼 What your staff sees at the counter (scanner message)
The text your cashier sees on the scanner app when they scan this customer's card and the campaign is active.
- Required once you've filled in the card message — the editor shows an inline reminder if you try to turn it on or save it without one.
- Not shown to the customer.
- Should be written for the cashier — direct and instructional.
Good examples:
- "15% off — birthday treat"
- "Free coffee — week 1 of win-back"
- "Priority seating — Gold member perk"
Why it matters: When three people walk in at rush hour, your cashier needs to know what to do in under two seconds. Keep the scanner message short, specific, and action-oriented.
In your customers’ portal
Every campaign with an offer also shows on your customer portal, in the row of offers on the member's page. The section In your customers’ portal in the campaign editor adds what the wallet card has no room for:
- Picture — optional. Without one, the offer shows its title on your brand colour.
- What they get — a sentence or two, up to 280 characters.
- Small print — conditions, up to 400 characters.
A preview next to the fields shows the offer as customers will see it, with and without a picture. Offers made before these fields existed show their card message only.
For an offer every member should see for a set time, rather than one that waits for a trigger, use the Always in the app goal: see Always in the App: Offers Every Member Can See.
How they work together
For a birthday campaign with a 15% discount at the counter, you might write:
- Push: "Happy birthday! Tap for a 15% treat today 🎂"
- Pass: "Show this at the counter for 15% off"
- Staff: "15% off — birthday"
When a scanner later scans the customer's card: 1. The cashier sees "Active offers" with "15% off — birthday" and an Apply button. 2. They tap Apply; the customer sees "Offer applied" on the scanner. 3. The offer is marked claimed in your analytics.
See What Your Staff Sees When a Campaign Is Active for the scanner-side walkthrough.