Skip to content

Loyalty rules

Rules decide when members earn points, get same-visit discounts or free units, or unlock rewards after progress or a tier change.

Loyalty rules list showing the "Earn points on every sale" rule scoped to all stations

Three rule types

Rule type (UI)When it runsWhat the member gets
Checkout perk (immediate)Online POS consult, before paymentSame-basket earn, % off, or buy-X-get-Y
Cumulative reward (after history)After the sale syncs to OperaProgress toward a threshold → grant one or more Rewards
Tier join or upgradeWhen tier changes on the serverGrant Rewards on join / upgrade

Drag the rules list to set run order (top runs first). Empty Scope = all stations, products, and tiers.

Create Rewards before cumulative or tier rules that need to grant them.

Actions (triggers)

ActionUse for
SaleWallet / credit sales
Money saleCash / card / SoftPOS (member attached via Add Loyalty)
Tier changeWith Tier join or upgrade rules

Select every sale type the rule should cover (often both Sale and Money sale for the same earn logic).


Checkout perk (immediate)

Same visit: Touch sends the open basket → Opera returns line results → Touch applies them before tender. After payment, earn can top up the loyalty token when consult ran.

Instruction types

InstructionEffect
Earn loyalty pointsFixed Loyalty points and/or Percent earn of eligible spend into the program loyalty token
Discount percent on basket% off eligible lines this sale (optional single product)
Free product (buy X get Y)Same-visit free units (BOGO-style). Receipt quantity stays; amount to pay drops

There is no “fixed CRD off this basket” checkout instruction. For fixed money-off, create a Sale discount reward and grant it via cumulative or tier rules for a later visit.

Example — Earn 10 points per sale

  1. Rule type: Checkout perk (immediate)
  2. Actions: Sale (+ Money sale if needed)
  3. Instruction: Earn loyalty points → Loyalty points = 10

Example — Earn 5% of spend as points

  1. Checkout perk
  2. Instruction: Earn loyalty points → Percent earn = 5
  3. Optional Scope / currencies so only CRD (or selected tokens) count

Example — 10% off this basket

  1. Checkout perk
  2. Instruction: Discount percent on basket → Discount percent = 10
  3. Optional Product (optional) or Scope Products to limit which lines discount

Example — BOGO (buy 2 get 1) this visit

  1. Checkout perk
  2. Instruction: Free product (buy X get Y)
  3. Scope Products: required (e.g. Fries, Burger)
  4. Buy quantity = 2, Free units = 1
  5. Count quantities:
    • Per product (same SKU) — need 2 of the same product
    • Across selected products (basket) — pool qty across scoped SKUs

Cheapest matching lines receive free units first.


Cumulative reward (after history)

Tracks activity across synced transactions. When Threshold is reached, Opera grants all selected Rewards to grant together. Touch does not invent these grants offline—they appear on a later online consult.

Progress metrics

MetricTypical use
Cumulative spendSpend 500 → reward
Product quantity (buy N)Buy 9 → free product next time
Cumulative top-upTop up 1000 → reward (set Top-up credits)
Transaction count / Action countVisit N times
Distinct calendar days / stations / catalog itemsVariety challenges
Count within time windowN actions inside Time window (seconds)

Count these actions (optional filters): Sale, Money sale, Top-up, Access.

Reset after grant

PolicyBehavior
Reset to zero after grantCounter clears; start again
Keep remainder after grantSurplus carries over (e.g. spend 1200 with threshold 1000)
Reset when window expiresWith rolling window metric
Reset each membership period / calendar monthSeasonal / monthly loops
Never resetOne-shot lifetime progress

Also useful: Bucket size + Repeat grant per bucket (e.g. every 1000 topped up → grant again).

Example — Spend 500 → 10% off next visit

  1. Create Reward: Sale discount, Percentage 10, Redemption = Optional or Automatic
  2. Rule type: Cumulative reward
  3. Metric: Cumulative spend, Threshold: 500
  4. Reset: Reset to zero after grant
  5. Rewards to grant: that discount reward
  6. Optional Limit per customer / Cooldown

Example — Buy 9 → free fries later

  1. Reward: Free POS products, product Fries, Free units 1
  2. Cumulative rule: Product quantity (buy N), Threshold 9, Scope products = Fries (or basket definition you want)
  3. Grant that reward when threshold hits

Not the same as same-line Free product (buy X get Y) at checkout.

Example — Top-up 1000 → catalog bonus

  1. Reward: Free catalog items (e.g. 50 virtual credit)
  2. Cumulative: Cumulative top-up, Threshold 1000, Top-up credits = loyalty/token to track
  3. Bucket size 1000 + repeat grant if every 1000 should fire again

Tier join or upgrade

Grants Rewards when membership tier changes on the server (admin, CSV, pack, enroll)—not from device-only state.

When to grantMeaning
Join tierFirst assignment into Target tier
Upgrade to tierMove up to target (optional Upgrade from tiers)
Join or upgrade to tierEither

Set Limit per customer = 1 (or N) so re-enrollment does not re-grant forever.

Example — Welcome drink on Gold join

  1. Reward: Free POS products (welcome drink)
  2. Rule: Tier join or upgrade → Join tier → Target = Gold
  3. Limit per customer: 1

Immediate vs later benefits

GoalSetup
Benefit on this saleCheckout perk (points / % / BOGO)
Benefit on a later saleCumulative or tier → Reward; redeem Automatic or Optional
Auto-apply next checkoutReward Redemption timing = Automatic
Staff picks at POSOptional (staff selects)

Grant ≠ redeem: cumulative/tier rules grant; the member redeems on a subsequent eligible checkout (unless a prior grant was already fulfilled).


Scope, caps, currencies

FieldNotes
Stations / Products / TiersEmpty = all
Applies to currenciesBlank = all; else only when tender matches (Credit / Virtual / Token). Money sales are treated like CRD for matching when the device sends currencies correctly
Time windowsDay of week + times in event timezone
Min / Max basket (CRD)Optional basket gates
Valid from / toRule active window
Limit per customerMax times this rule can fire for one member
Cooldown between grantsSeconds between firings

On live events, disable rules with history instead of deleting them.

Offline sales

If a sale syncs without a loyalty consult (offline / skipped):

  • Opera can retroactively credit earn (when offline rescue is enabled for the program).
  • Same-visit line discounts already missed are not rewritten on the receipt.
  • Cumulative reward grants still evaluate after sync—they are not part of offline rescue.

Setup checklist

  1. Enable Loyalty under Modules.
  2. Configure Program and Tiers.
  3. Create Rewards templates for next-visit / cumulative / tier gifts.
  4. Create Rules (checkout vs cumulative vs tier); drag run order.
  5. Enroll members (Memberships, packs).
  6. Test on Touch: online consult for perks; complete sales and confirm cumulative grants on a later consult.