Complete Guide · EN

Loyalty Platform — Administrator Manual

The full reference for running a restaurant's loyalty program: every admin-panel screen, every setting, and how the cashier and guest experiences connect back to it.

01 Introduction

What this document covers, and who it's for.

This is the complete reference manual for the loyalty platform — every screen in the admin panel, what each setting does, and how it affects what your cashiers and guests see. If you're setting the program up for the first time, configuring campaigns, or just need to look up what a field does, this is the document to search.

There are three roles in the system, each with its own login and its own URL. As the owner or manager, you'll mostly live in the admin panel, but it helps to know how the other two work too.

RoleHow they sign inURL pattern
Owner / adminEmail + passwordhttps://loyalty.solvit.work/login
Cashier / staffA 4–8 digit PIN, set by the admin in Settings — no email or passwordhttps://loyalty.solvit.work/staff/{restaurant-slug}
GuestNo login at all — a personal link/QR code, or self-registration/card/{guestId} or /join/{restaurant-slug}
Note

Section 13 covers chains — how the platform connects more than one of your locations together, if you run more than one. Sections 14–17 summarize staff management and the cashier and guest experiences for context. The cashier flow is also documented on its own, as a short till-side cheat sheet, for staff who don't need the full manual.

02 Plans & licensing

DEMO, BASIC, PRO, ENTERPRISE — what each unlocks.

Your restaurant's account runs on one of four plans. Plans are assigned by the platform, not self-serve — you can't upgrade yourself from inside the app; you request a change and get contacted.

PlanGuestsProgramsPush & automationNotes
DEMONo capAll 4 typesIncludedFull feature trial, time-limited
BASICCapped countOnly 1 program, and it must be a Discount % typeNo push notificationsAlso limited to a single tier
PROHigher / no capAll 4 types, multiple at oncePush notifications, segments & campaigns 
ENTERPRISEEverything in ProAll 4 typesPush, segments & campaignsPlus multi-location management for restaurant groups
Warn

On BASIC, screens for extra programs, tiers, segments, campaigns, and push notifications show upsell prompts instead of the full feature. This manual is written and screenshotted against an Enterprise-tier demo account, so every screen described here is unlocked — your own account may show fewer options depending on its plan.

To request a plan change or renewal, go to Settings. The Plan and license box at the top shows your current plan and expiration (or No expiration date, as on the Enterprise demo account) with a Request renewal button — clicking it starts the conversation with the platform team, it doesn't change anything instantly.

Settings page showing the Plan and license box with Plan: Enterprise, No expiration date, and a Request renewal button
The Plan and license box at the top of Settings — current plan, expiration, and the Request renewal button.

03 Logging into the admin panel

Email + password, one login per restaurant.

  1. Open the login URL

    Go to https://loyalty.solvit.work/login in a desktop or mobile browser.

  2. Enter your email and password

    These are the owner/admin credentials set up when your restaurant's account was created.

  3. You land on the Dashboard

    From there, the top navigation bar — Dashboard, Guests, Segments, Campaigns, Programs, Tiers, Card design, Notifications, Settings — takes you anywhere else in the panel, plus a Staff sign-in link and a Log out link on the right.

Tip

The language switcher (RU / EN / CG) sits in the top-right corner of every admin page and changes the panel's own labels. It does not translate program, tier, or segment names you typed yourself — see A note on multilingual guests.

04 Dashboard

Your at-a-glance view of program health.

The Dashboard is the landing page after login. At the top, a line under the page title lists every currently active program by name, so you always know what's live at a glance.

MetricWhat it means
Total guestsEvery guest who has ever registered, self-registered or added by staff.
Cashback issued, €Total cashback ever credited to guests across all cashback programs, lifetime.
Cashback redeemed, €Total cashback guests have actually spent against a bill, lifetime.
Outstanding, €Issued minus redeemed — the cashback liability currently sitting on guest balances, unspent.
Total transactionsEvery purchase and redemption ever recorded, combined.

Below the metric cards, the Last 14 days chart is a daily bar chart with three series — Spent (€), Earned (€), and Redeemed (€) — so you can see purchase volume and program activity move together day by day.

The Guest sources bar shows the split between guests Added by staff (cashier manually created a card) and Self-registered (guest filled in the join form themselves). Next to it, the Guest segments box shows a colored bar plus a list of how many guests sit in each RFM segment (Champion/Loyal/Drifting/At risk/New — see Segments); clicking any segment in that list opens Guests pre-filtered to it.

Below that, the Guest tiers box works the same way but for tiers — including any tier with zero guests in it, shown as "0" rather than being hidden, so you can see a tier exists even if nobody has reached it yet. Clicking a tier opens the same pre-filtered Guests view.

The Top spenders table lists the eight guests with the highest lifetime spend — name, visit count, and total spent, with each name linking to that guest's detail page. Next to it, Birthdays has a 7/30/90-day toggle and lists which guests have a birthday coming up in that window, with the date and days remaining — handy for a manual glance even with the automatic Birthday campaign already enabled.

Program performance lists every program with its Status, how many times it has Triggered, and how much it has Issued — in stamps (×) for a stamp card, or in € for cashback and discount programs — the fastest way to see which program is actually doing work and which one is sitting idle.

Dashboard with metric cards, a 14-day activity chart, guest sources, guest segments and tiers, a top-spenders table, birthdays, and a program performance table
Dashboard — top-line metrics, the 14-day activity chart, guest sources, guest segments and tiers, top spenders, birthdays, and per-program performance.
Note

Program, segment, and tier names throughout the dashboard are whatever the restaurant owner typed when creating them — this demo account happens to have named everything in English ("Cashback 5%", "Stamp card: every 10th coffee free"), but the platform never translates free text like this on its own. See the note on multilingual guests.

05 Guests

Your full guest list, filters, and each guest's detail page.

The Guests page lists every guest with a Filters panel above the table: Segment (defaults to "All guests"), Gender, Tier, Not visited for, days, Avg. check from/to, €, Total spent from, €, and Visits from, with Apply and Reset buttons. The table itself is sortable by any column: Name, Card, Phone, Balance, Tier, Segment, Total spent, Visits, Avg. check, Last visit.

Guests list with a Filters panel above a sortable table of guest names, card numbers, balances, tiers, RFM segments, and visit stats
Guests list — filters and RFM columns for every guest, tier badges shown as configured by the owner.

Two buttons sit above the table: Self-registration QR opens the printable QR code that sends guests to your join form (the same form as the Guest self-registration link in Settings), and + New guest lets staff or admin create a card manually for a guest standing in front of them.

Self-registration form asking for First name, Last name, Phone, Email, Birthday, and Gender, with a Get my card button
What a guest sees after scanning the Self-registration QR — the join form (First name*, Last name, Phone*, Email*, Birthday, Gender, then Get my card).

Clicking any guest's name opens their detail page: a balance card for every cashback program they hold, a tier badge next to their name with an Edit link to override it manually and a Tier history link next to that (see Tiers), a Statistics box (Total spent, Total earned, Total redeemed, Visits, First visit, Last visit), their personal Guest card (QR) with an Open guest page → link, and a full transaction history table (Date, Type, Description, Amount) — identical in substance to what the guest sees on their own card.

Guest detail page for Milica Vuković showing per-program balance cards, a Statistics box, a green ready-reward banner, Simulate purchase and Redeem boxes, a Personal notification composer, a QR code, and a transaction history table
Guest detail page — balances, stats, QR code, the two simulator boxes, personal notifications, and full history.

If a stamp reward is ready, a green banner reading e.g. 🎁 Ready: Stamp card: every 10th coffee free appears with a Grant link — same as on the till.

Two boxes let you act on the guest without a physical till at all:

  1. Simulate purchase (POS)

    Enter a Purchase amount, € and tap Process purchase. All matching active programs apply at once, exactly as they would at the cashier's till — useful for correcting a missed purchase or testing a new program's conditions.

  2. Redeem

    Shows the guest's combined Bonus: €X.XX. Enter an Amount and tap Redeem to deduct it — the same combined-balance behavior as the till (see Loyalty programs).

Tip

These simulator boxes exist on the admin guest detail page too, not just at the till — handy for back-office corrections or demoing the program without touching a shift device.

The Personal notification box sends a push to this one guest only: fill in Title and Message text, then tap Send to this guest. It only reaches them if they've opted in and installed the card page — see Push notifications.

06 Segments

Automatic RFM buckets, plus your own custom groups.

Every guest is placed automatically into one recency/frequency ("RFM") segment, recalculated live with no manual work. The Segments page lists the five built-in segments first, each tagged built-in, followed by any custom ones you've created.

SegmentRule
NewNo purchase yet
ChampionVisited in the last 14 days and has 5+ lifetime visits
LoyalVisited in the last 45 days
Drifting45–90 days since last visit
At risk90+ days since last visit
Segments page listing five built-in RFM segments and two custom segments, one dynamic filter-based and one static manually-picked list
Segments — the five built-in RFM buckets plus two custom segments: "Men" (dynamic, filter-based) and "VIP list" (static, manually picked).

Each row shows its Segment type and current guest count. Built-in segments are always Dynamic — filter-based, updates automatically. Tap + New segment to build your own, in one of two ways:

  1. Dynamic (filter-based)

    Define a rule — e.g. gender, a spend threshold — and the segment membership recalculates automatically as guests' stats change. Editable later via Edit filter.

  2. Static (manually picked)

    A hand-picked, fixed guest list — e.g. a "VIP list" — that only changes when you add or remove someone yourself via Manage guests.

Note

Even the built-in segments' display names are editable free text, just like program and tier names — this demo account happens to have them in English ("Champions", "Loyal", "Drifting", "At risk", "New"), but the platform doesn't translate them for you if you rename them into another language. See the closing note.

Every guest-list filter described in Guests — gender, average check, total spend, visit count — doubles as a way to scope a custom segment.

07 Campaigns

Two automatic scenarios that run daily, unattended, once configured.

The Campaigns page holds two built-in automations, each with its own Enabled checkbox. Once turned on and saved, they run on their own, once a day, with no further admin action needed.

Campaigns page with a Birthday panel and a Reactivation panel, each with settings fields, an Enabled checkbox, a Save button, and a run history table
Campaigns — Birthday and Reactivation, each with its own settings and run history.

🎂 Birthday — grants a bonus ahead of a guest's birthday, then lets it expire if unused:

FieldDemo valueMeaning
Grant bonus this many days before3How many days before the birthday the bonus is granted
Bonus amount, €5How much is credited
Expires after, days past birthday14If unused by then, the unused bonus is automatically removed
Program to grant fromCashback 5%Which cashback program's balance receives the bonus

🔄 Reactivation — the instant a guest's segment crosses from Loyal into Drifting (that is, they pass 45 days without a visit), they automatically receive a push with a "come back" offer, no admin action required. Configure a Push notification title and Notification text, and optionally a Welcome-back bonus, € (optional) credited to a chosen Program to grant from (optional).

Both panels end with a Run history table (Guest, Event, Date) so you can confirm the automation is actually firing — e.g. "Milica Vuković — Bonus granted — 2026-07-12" or "Jovana Radulović — Offer sent — 2026-08-16".

Tip

Run history is the fastest way to sanity-check a new campaign: save your settings, then come back the next day and confirm the expected guests show up in the table before trusting it long-term.

08 Loyalty programs

Four program types, each a "condition → action" rule.

The Loyalty programs page describes itself well: "Each program is a 'condition → action' rule. You can keep several active at once — e.g. 5% cashback + a separate stamp program + a weekend discount." Tap + New program to add one; existing rows offer Edit, Disable, and Delete.

TypeWhat it doesTypical conditions
Cashback %Guest earns a percentage of the purchase as spendable balanceOptional max cashback per purchase; optional minimum purchase amount
Cashback fixedGuest earns a flat € amount per qualifying purchase, regardless of bill sizeSame shared conditions below
Discount %An automatic percentage off the bill, applied immediately — a smaller charge, not a balanceCan be restricted to specific guest tiers
Stamp cardOne stamp per qualifying purchase; after N stamps the reward is ready for one-tap redemptionSame shared conditions below

Any program type can also be limited by: minimum/maximum purchase amount, specific days of week, specific hours, first-purchase-only, guest's-birthday-only, or restricted to specific tiers.

Loyalty programs list with Name, Condition, Action, and Status columns, showing a stamp card, a tier-gated discount, and two cashback programs
Loyalty programs — this demo account runs one of each type simultaneously.
Tip

A guest can hold balance in several cashback programs at once. The till (and the admin Redeem box) debit across them automatically, oldest balance first, and always show the guest one combined total to redeem — the cashier is never asked to pick which program to draw from.

09 Tiers

Automatic levels based on lifetime spend.

A guest's tier is determined automatically from their lifetime purchase total at your restaurant — you just set the € threshold each tier unlocks at. As the page itself puts it: "Any names work: Silver/Gold/Platinum, Bronze/Ruby, or your own."

Guest tiers list with three tiers and their spend thresholds: from €0, from €80, from €200
Guest tiers — three levels here, named Silver / Gold / Platinum on the demo account.
Tier (demo)Threshold
Silverfrom €0
Goldfrom €80
Platinumfrom €200

Tiers show as a colored badge next to the guest's name everywhere — the admin guest list, the guest detail page, and the guest's own card. Their real power, though, is gating: a Discount % program can be restricted to a specific tier, e.g. this demo's "10% off for Platinum", which only applies once a guest has crossed the €200 lifetime-spend line into the top tier.

A tier can also be set manually, overriding the automatic threshold — via the Edit link next to a guest's tier badge on their detail page (see Guests). This is meant for VIP exceptions: a guest who hasn't technically spent their way to Platinum yet but deserves the status by relationship or agreement. A manual override is logged as its own entry in that guest's Tier history (date, direction of the change, and the admin email that made it) — a natural tier-up from ordinary spending is not logged there, since nobody made a decision, it's just the normal consequence of purchases.

Note

If two tiers share the same entry threshold (e.g. both "from €0"), any guest without a manual override always shows the base tier, never a newer tier that happens to tie on threshold — the platform distinguishes "tier assigned by hand" from "tier computed from spend" even when the thresholds are tied.

Warn

On the BASIC plan, only one tier is available — tier-gated discounts aren't practically usable until you're on Pro or Enterprise.

10 Card design

One set of branding, three places it shows up.

The Loyalty card design page lets you set: Title on the card, Subtitle (e.g. program name), a Logo (an emoji, or an uploaded image via Upload image), a Card background image (uploaded, or a gradient built from Primary color / Secondary color / Text color if no image is set), with a live Preview (demo data) panel on the right showing exactly how it will render.

Loyalty card design editor with Title, Subtitle, Logo, Card background image, and three color pickers on the left, and a live card preview on the right
Card design editor — fields on the left, a live preview on the right.

This one set of branding choices reaches three places at once:

  1. The guest's card page

    Exactly what the preview shows — background, logo, title, subtitle, and text color.

  2. The join/login page header

    The same branding frames the self-registration form and staff/admin sign-in screens.

  3. The home-screen icon

    As the page itself notes: "This logo also becomes the app icon when a guest or staff member adds the page to their Home Screen." See Installing on the guest's phone.

11 Push notifications

Broadcast to everyone who's opted in.

The Push notifications page shows your current Subscribed guests count, with the reminder that "Guests enable notifications themselves on the card page ('Get bonus notifications' button)" — nothing is ever pushed to a guest who hasn't opted in. Below that, a composer (Title, Message text) sends a one-off broadcast to every subscribed guest via Send to all.

Push notifications page with a Subscribed guests count, a Title and Message text composer, a Send to all button, and a campaign history table with Delivered, Failed, and Reach percentage columns
Push notifications — composer above, delivery history below.

The Campaign history table below it — described on the page as being "to evaluate marketing campaign effectiveness" — logs every broadcast with Date, Title, Delivered, Failed, and Reach, %, whether it was sent manually here or triggered by an automatic campaign (see Campaigns).

Warn

Push only works once a guest has installed the card page to their home screen (see Installing on the guest's phone) — a real technical limitation, not a bug. A guest who has merely opted in but never installed the page will not receive anything, and that's expected.

12 Settings

Restaurant identity, staff access, and the two links you'll share most.

Beyond the Plan and license box covered in Plans & licensing, the Settings page holds:

Field / sectionWhat it's for
Restaurant nameShown across the admin panel and guest-facing pages
Staff PINsEach cashier now has their own personal PIN, not one shared code — PINs are issued, reset, and revoked on the dedicated Staff page, not here
Staff fraud protectionAn alert threshold, € and a manager-approval threshold, €, each set separately for charges and redemptions — see Staff for what each does
Lock till on screen offA checkbox that signs a cashier out the moment their phone's screen locks or turns off — useful when a shift device changes hands or might be left unattended
Automatic bonus expirationAn Enable bonus expiration checkbox — "If a guest hasn't visited for longer than this period, part or all of their accumulated bonus is deducted"

A single Save button applies these settings together. Two more boxes at the bottom give you the links you'll actually hand out:

Settings page showing Restaurant name, staff fraud protection thresholds, lock-till-on-screen-off, an Automatic bonus expiration checkbox, and Staff link and Guest self-registration link boxes with their URLs
Settings — restaurant name, fraud protection, till auto-lock, bonus expiration, and the staff and guest links.
  1. Staff link

    This is the URL from the role table in the introduction (/staff/{restaurant-slug}) — open it once on the shift device; each cashier then signs in with their own personal PIN.

  2. Guest self-registration link

    "A QR code for this link is on the 'Guests' page." Same link as the Self-registration QR button described in Guests — print the QR on a table tent, receipt, or physical card.

13 Chains: independent locations vs. a unified brand

Two different ways to run more than one location under the platform, with worked examples.

A chain links two or more of your restaurant's locations together so guests, and optionally programs, are recognized across all of them instead of staying siloed per location. Chains are an ENTERPRISE-plan feature and are set up by the platform team when you request it (see Plans & licensing) — you can't create one yourself from the admin panel. Once your locations are linked, a My chain link appears in the top navigation of every location in it, and a location switcher dropdown appears next to your restaurant's name.

Every chain is set up as exactly one of two modes, decided once when the platform team creates it: Independent locations or Unified brand. The mode is not a matter of degree — it's a completely different answer to the question "does this guest's card work the same way everywhere?" The rest of this section walks through both, with two real demo chains screenshotted side by side.

Note

Nothing about chains is optional infrastructure bolted onto a single restaurant — a location inside a chain still has its own PIN-based cashier module, its own license and plan status, and (for Independent locations) its own programs, tiers, and card design, exactly as described everywhere else in this manual. A chain only changes how guest identity and, for Unified brands, configuration are shared between locations.

Independent locations

Use this mode for a group of restaurants that happen to share ownership or back-office management but are otherwise separate businesses — a hotel's beach café and its rooftop bar, for example, with different menus, different pricing, and no reason a coffee cashback bonus earned at one should be spendable at the other.

By default, an Independent location is no different from a standalone restaurant — its guests, programs, and card design are entirely its own, and a guest who signs up at one location is completely unknown at the other. The one thing a chain adds on top is the shared QR code toggle on the My chain page:

My chain page for Adriatic — Beach Café, Independent locations mode, with a checked Use a shared QR code across the chain checkbox, a Copy settings button, and a locations table listing Beach Café (current) and Rooftop Bar with a Switch to link
My chain — Adriatic Hospitality Group, Independent mode. This example has "Use a shared QR code across the chain" turned on.
Shared QR codeWhat a guest experiences
Off (the default)A guest's card only works at the location where they signed up. Scanning it or searching for their phone/name at a sibling location finds nothing — as far as that location's staff and admin can tell, the guest doesn't exist.
OnThe same card/QR code is recognized at every location in the chain — a guest never needs a second card. But their balance, tier, and stamp progress stay local to each location: earning cashback at one location does not add to, or even show up in, their balance at another.
Warn

This is the one detail worth memorizing about Independent chains: turning shared QR on shares the guest's identity (their card is recognized everywhere), never their balance. Balance, tier, and stamp progress are pooled only in Unified mode — see below. If a guest asks "why doesn't my bonus from the beach café show up at the rooftop bar," this is why: it's how Independent mode is designed to work, not a bug.

Here's that distinction in the actual demo data. Marko Petrović signs up and makes a €42 purchase at Adriatic — Beach Café, which runs its own 8% cashback program:

Guests page at Adriatic — Beach Café showing Marko Petrović with card LC-881408391, balance €3.36, tier REGULAR, segment Loyal, total spent €42.00, 1 visit
Adriatic — Beach Café's own Guests page: Marko has a €3.36 balance from his 8% cashback purchase, and is already in the "Loyal" segment.

Switch to the sibling location, Adriatic — Rooftop Bar (via Switch to on the My chain page, or the location dropdown next to the restaurant name), and search the same card number:

Guests page at Adriatic — Rooftop Bar showing the same Marko Petrović, card LC-881408391, tagged (Adriatic — Beach Café), but with balance €0.00, tier REGULAR, segment New, total spent €0.00, 0 visits, Last visit No purchases yet
The exact same card at Adriatic — Rooftop Bar: recognized (shared QR is on) and tagged with his home location, but every number resets to zero — a completely separate account for this location.

Marko's name, card number, and phone are the same at both locations — that's the shared identity at work, and it's why the Rooftop Bar's guest row shows (Adriatic — Beach Café) under his name, a small home-location tag that only appears for a guest recognized from elsewhere in the chain. But his balance, tier, segment, total spent, and visit count are each computed independently per location, starting from zero at the Rooftop Bar despite his purchase history at the Beach Café.

Two more tools exist specifically for Independent chains, both on the My chain page:

  1. Copy settings

    A one-time, one-directional copy of the current location's tiers, programs, and card design to one or more sibling locations you pick — matched and updated by name where a name already exists on the target, created fresh where it doesn't. This is a convenience for setting up several similar locations quickly, not an ongoing sync: edit a program afterward and it does not propagate again automatically. A result panel reports exactly what was created, updated, or skipped (skipped happens when a name matches more than one thing on the target ambiguously).

  2. Switch to

    Every location in the chain, current guest counts, and license/expiration status are listed in one table — click Switch to next to any sibling to move your admin session there instantly, without logging out and back in with different credentials. Independent-chain locations don't share a login the way Unified ones do (see below), but if you're the same owner/admin across several, this saves you from juggling separate accounts.

Unified brand

Use this mode when every location is genuinely the same loyalty program wearing different addresses — a coffee chain where a stamp card started downtown should keep counting up at the airport branch, because to the guest (and to the brand) it's one loyalty relationship, not several.

A Unified chain has exactly one login, shared across every location — created once for the chain's first ("owner") location, with every other location added later reachable only by switching into it, the same Switch to mechanism as Independent chains. There's no separate shared QR code toggle to think about: identity, balance, tier, and stamp progress are always fully shared across every location in a Unified chain — that's the entire point of the mode, so it isn't optional.

Guests page at Bean & Bloom — Downtown showing Ana Jovanović with card LC-428832885, balance €0.00, tier SILVER, segment Loyal, total spent €4.50, 1 visit
Ana Jovanović joins Bean & Bloom — Downtown and buys a €4.50 coffee, earning her first stamp.
Guests page at Bean & Bloom — Airport showing the same Ana Jovanović, card LC-428832885, tagged (Bean & Bloom — Downtown), with the identical balance €0.00, tier SILVER, segment Loyal, total spent €4.50, 1 visit
The same guest at Bean & Bloom — Airport: not just recognized, but showing the identical total spent, tier, and segment — one pooled account, not a fresh one.

Compare this to the Independent example above: at the Rooftop Bar, Marko's numbers all reset to zero. At the Airport, Ana's numbers are exactly what they were at Downtown — €4.50 total spent, tier SILVER, one visit already counted. That's pooling, and it's what "unified" means in practice.

 Independent, shared QR offIndependent, shared QR onUnified
Guest recognized at a sibling locationNoYesYes
Balance / tier / stamps pooled across locationsNo, local per locationYes, always
Programs, tiers, card designIndependent per locationIndependent per locationOne shared configuration
Admin loginSeparate per locationSeparate per locationOne shared login, switch between locations

Two ways a Unified brand's configuration is managed

Every Unified chain shares one configuration, but the platform has two different mechanisms for keeping it shared, and which one your chain uses changes what the My chain page and the Programs page look like. Both mechanisms produce identical results for the guest and cashier — this difference is purely about how the admin panel keeps locations in sync behind the scenes, and it's worth recognizing on screen because the wording is genuinely different.

The classic mechanism (every Unified chain starts here): each location physically holds its own copy of every tier, program, and card design setting. Editing one from any location writes through to every sibling's copy automatically and immediately — from the admin's point of view it behaves like one shared configuration, but under the hood it's N synchronized copies, not one thing.

My chain page for Nordic Bakery — Central, Unified brand mode, note reading Programs, tiers, and card design are managed from the regular Programs, Tiers, and Design pages — changes apply to every location in the chain immediately, locations table listing Central (current) and Riverside
My chain — Nordic Bakery Co., a Unified chain still on the classic synced-copies mechanism.

The newer HQ-owned mechanism: for chains the platform team has migrated (a one-time, reversible cutover), there is no fan-out at all — programs, tiers, and card design live as a single physical row at the chain's owner location, and every other location simply reads that one row. The My chain page's note changes to reflect this, and mentions one extra capability that only exists in this mode:

My chain page for Bean & Bloom — Downtown, Unified brand mode, note reading This chain runs on HQ: programs, tiers, and card design are one shared configuration for the whole chain, edited from the regular Programs, Tiers, and Design pages from any location. Programs can additionally be assigned to specific locations — see the Locations column on the Programs page, locations table listing Downtown (current) and Airport
My chain — Bean & Bloom Coffee, an HQ-owned Unified chain. Same "one shared configuration" idea, but the note calls out per-location program targeting.
Tip

You don't need to do anything differently day to day because of which mechanism your chain uses — you still edit programs, tiers, and card design from the same regular Programs, Tiers, and Card design pages either way, from any location, and changes still apply chain-wide immediately. The only thing that changes is whether the Programs page shows a Locations column (see next).

Per-location program targeting (HQ-owned chains only)

An HQ-owned chain can additionally restrict any individual program to specific locations, instead of it always being live everywhere. This is genuinely new capability, not available on the classic synced-copies mechanism — there, a program is either active chain-wide or disabled chain-wide, nothing in between. On the Programs page of an HQ-owned chain, an extra Locations column appears with one toggle chip per location:

Loyalty programs page for Bean & Bloom — Downtown showing two programs. Airport Travel Bonus has only the Bean & Bloom — Airport location chip highlighted green (Bean & Bloom — Downtown is greyed out). Bean & Bloom Stamp Card has both location chips highlighted green
Programs — Bean & Bloom Coffee (HQ-owned). "Bean & Bloom Stamp Card" is targeted at both locations; "Airport Travel Bonus" is targeted at Airport only — Downtown guests never see it apply.

Click a location's chip to toggle that program on or off there — green means active at that location, grey means not. A brand-new program created on an HQ-owned chain starts with no locations targeted at all (an explicit, deliberate choice on the platform's part — a program never silently goes live somewhere by default); switch every chip on to make it behave like the classic "everywhere at once" model, or leave it partial for something like an airport-only travel bonus that shouldn't apply to guests who never leave downtown.

Note

A new location added to an already HQ-owned chain is an exception to "starts with nothing targeted" above — it automatically inherits every program that's currently active chain-wide, exactly like joining a classic Unified chain would. Targeting is something you narrow deliberately afterward, not something a new location has to be manually opted into from zero.

Choosing between the two chain types

This is a decision the platform team makes with you when a chain is set up, not something you configure yourself later — but it helps to know which questions decide it:

  • Should a bonus earned at one location be spendable at another? If yes, that's Unified. If each location should keep its own books, that's Independent.
  • Do all locations run genuinely the same menu of programs, tiers, and branding — or does each one need its own pricing, its own tier thresholds, its own look? Same everywhere points to Unified; meaningfully different points to Independent.
  • Do you still want a guest's card to be recognized (even if their balance isn't shared) across locations that otherwise run independently — e.g. so a hotel's front desk can look up a guest who's also a regular at its restaurant? That's Independent with shared QR code turned on — the middle ground between the two extremes.

14 Staff: PINs, roles & devices

Every cashier's personal PIN, roles, approved devices, and fraud alerts, in one place.

The Staff page is where you manage everyone who touches the till — from issuing a cashier's first PIN to reviewing a flagged transaction. It's built from three panels.

Cashiers

A table of everyone with till access: name, role, and status. Each cashier has their own personal PIN, separate from everyone else's. Per row:

  • Role — a Cashier / Manager dropdown. A Manager can approve another cashier's transaction that crosses the manager-approval threshold (see below and Settings) by entering their own PIN.
  • Reset PIN — issues a fresh PIN if the old one is forgotten, or if you suspect it's been seen by someone it shouldn't have.
  • Deactivate — removes till access without deleting anything; past transactions still correctly show who processed them.

A + New cashier button adds someone new: name, role, and an auto-generated PIN you hand to them once, in person.

Devices

The first device a cashier signs in from is approved automatically. Any later new device — a replacement phone, or someone attempting a known PIN from an unfamiliar device — shows up here pending approval, and sign-in on it is blocked until an admin or manager taps Approve. Already-approved devices can be pulled at any time with Revoke, e.g. after a lost phone or a departing employee.

Tip

Requiring new-device approval adds a real barrier against someone who learns a cashier's PIN quietly signing in from their own phone — knowing the correct PIN alone isn't enough on an unapproved device.

Suspicious activity

Operations that crossed the alert threshold, € from Settings (set separately for charges and redemptions) — an unusually large single purchase, or an oddly sized redemption. Each row shows who processed it, the amount, the guest, and the date, with three actions: Approve (confirmed legitimate), Decline (flag it as an error or concern), and Mark reviewed (clear it from the list without a verdict either way). This is a retrospective check — the operation on the till already went through; for approval required before an operation completes, see the next callout.

Warn

If a manager-approval threshold, € is set in Settings, an operation above it won't complete on its own — the cashier is prompted to call over a manager, who enters their own PIN right there on the charge/redeem screen to approve it. The resulting transaction history keeps both names: who ran it and who approved it.

Staff page with a cashiers table showing roles and actions, a devices list pending approval, and suspicious activity
Staff — the cashiers table with roles and actions, pending devices, and suspicious activity.

15 The cashier module

What staff see at the till — covered in full depth in the separate cashier quick guide.

Cashiers use a stripped-down, PIN-only, mobile-friendly module — no email, no menus beyond what a till needs. Each cashier signs in with their own personal PIN, issued and managed on the Staff page, not a single shared code. It has three screens.

  1. Sign in with your personal PIN

    The Staff sign-in screen — a PIN field and a Sign in button. The first device a cashier signs in from is approved automatically; signing in from a new device afterward may need an admin or manager's approval (see Staff).

  2. Scan guest card

    A camera-based QR scanner reads the guest's card. If the camera can't start — the screenshot below shows the message "Couldn't start the camera (in use by another app, or unavailable)." with a Try again link — the cashier can always fall back to the manual field underneath: Card number, e.g. LC-123456789, followed by Find by number. The manual field is present under the camera at all times, not only when the camera fails.

  3. Charge screen

    Once a guest is found, a numpad and a two-button toggle appear: Charge (purchase) and Redeem (€X.XX) (the latter's label shows their current balance). In Charge (purchase) mode, the cashier keys in the bill total and taps Record purchase — every matching active program applies automatically, with nothing to pick manually. In Redeem mode, the amount field is pre-filled with the guest's full balance and can be lowered before confirming. A ← Scan another link above the guest card returns straight to the scan screen for the next guest, no page reload needed.

Staff sign-in screen with a PIN field and a Sign in button
Staff sign-in.
Scan guest card screen showing a camera-unavailable message with a Try again link, and a manual card-number field below
Scan guest card — camera above, manual fallback below.
Charge screen for guest Milica Vuković in Charge (purchase) mode, with a green ready-reward banner above the mode toggle and a numpad below
Charge screen, purchase mode — the green "🎁 Ready" banner with its one-tap "Grant" link appears above the numpad whenever a stamp reward is waiting.
Warn

If the amount exceeds the manager-approval threshold, € set in Settings, a regular cashier's PIN isn't enough — the screen asks for a manager to approve by entering their own PIN right there. Smaller operations still go through with just the cashier's own PIN, as usual.

Tip

If a stamp-card reward is ready, that green banner replaces the need for any amount entry — the cashier just taps Grant. For the condensed, till-side version of this section with more troubleshooting scenarios, see the dedicated cashier quick guide.

16 The guest card

Everything a guest sees about their own loyalty status.

A guest's personal card page is the one screen they'll return to over and over. Top to bottom, it shows:

  • Restaurant name and logo, in the branding set on the Card design page
  • The guest's name and tier badge (e.g. "Milica Vuković" with a "PLATINUM" badge)
  • Their total combined balance, and a one-line summary of active programs underneath
  • Their card number (e.g. "Card № LC-820156493")
  • An Add app to Home Screen button (see Installing on the guest's phone)
  • A reward-ready banner when applicable — e.g. "🎉 Your reward is ready: Stamp card: every 10th coffee free — tell the staff!"
  • A stamp-card progress chip when applicable, e.g. "Stamp card: every 10th coffee free: 12 ×/10"
  • A personal QR code, for the cashier to scan or for the guest to save/share
  • A Get bonus notifications opt-in toggle, and any push messages already received under a Notifications heading
  • A full Transaction history — every earn and redeem, with a plain-language description (e.g. "+€0.78 cashback (5%) — 'Cashback 5%'") and the amount. Once the history spans enough time, older entries collapse into per-month groups — the newest month is expanded by default, and a header like "May 2026 (12 transactions)" expands the rest on tap, so a long history doesn't turn into an endless scroll.
Guest card page for Milica Vuković showing balance, tier badge, Add app to Home Screen button, a reward-ready banner, a QR code, a Get bonus notifications toggle, and a long transaction history
Guest card page — the guest's whole relationship with the restaurant on one scrollable screen.
Note

This is the same underlying data as the admin guest detail page (Guests) — a guest can always see exactly what you can see about their own balance and history, nothing hidden.

17 Installing on the guest's phone

No native app — a home-screen install, with one platform-specific catch.

There's no app-store app. The guest's card page is installed straight from the browser as a PWA (progressive web app) via the Add app to Home Screen button, which behaves differently depending on the guest's platform.

Guest card page with the Add app to Home Screen button shown prominently near the top
The install button sits right under the card, impossible to miss.
An in-app instruction dialog titled Install the app, with three numbered steps: tap the Share icon, choose Add to Home Screen, tap Add
iOS: tapping the button opens this instruction dialog instead of installing automatically.
PlatformWhat happens
iOS Safari (iPhone)No browser API can trigger install directly, so the button opens an instruction dialog: "1. Tap the Share icon ⬆️ at the bottom of Safari · 2. Choose 'Add to Home Screen' · 3. Tap 'Add' — the icon will appear on your Home Screen."
Android ChromeThe browser's native one-tap install prompt fires directly — tapping the button triggers the OS's own "Add to Home Screen" / "Install app" confirmation, no manual steps.
Any other browserA generic fallback: open the browser's own menu (usually ⋮ top-right) and look for "Install app" / "Add to Home Screen".
Bad

The iOS instructions only work from Safari itself — not from an in-app browser (Instagram, Telegram, Messenger, etc.). The install dialog says as much: "Only works in the Safari browser (not inside apps like Instagram/Telegram)." If a guest opened your link from a chat app, they must first tap that app's own "open in Safari" / "open in browser" option before the Share-icon steps will work at all.

Tip

Once installed, the home-screen icon uses the restaurant's own logo and color scheme from Card design — and, critically, this is also the point at which push notifications start actually working for that guest (see Push notifications).

18 A note on multilingual guests

Free-text names don't get auto-translated — plan for it.

Note

Program names, tier names, segment names, and card design text (title/subtitle) are all free text you type once when creating them. They are not automatically translated per guest language — the platform's own EN/RU/CG switcher only translates its own interface labels, never text you entered yourself. This demo restaurant happens to have named everything in English ("Cashback 5%", "Platinum", "Champions"), which is why every screenshot in this manual reads cleanly in English — but if your own restaurant's owner types those same fields in Russian or Montenegrin, that's exactly how every guest will see them too, regardless of which language they've switched their own interface to.

If your guests read different languages, a program named entirely in one language will show that way to everyone, regardless of which language they've switched their own view to. This is real, current product behavior, not a bug — plan your naming around it:

  • Favor universal terms where you can — numbers, %, and emoji read the same in every language (e.g. "☕ ×10" instead of a sentence).
  • Where a word is unavoidable, pick one short and recognizable across your guests' languages rather than a full phrase.
  • Remember this applies to tier badges too, since they're shown next to every guest's name everywhere — the admin guest list, the guest detail page, and the guest's own card.