M cenaly.ru
⚙️ Features

⭐ Loyalty

Bonus program, promo codes, CRM, reviews

Documentation

Loyalty program and coupons

The loyalty engine runs three programs on one guest ledger: stamps, points and a regular-guest discount. The ledger is kept per guest and per location, and only the server writes earnings and redemptions into it — a balance cannot be forged from the browser.

Switch it on in Location settings → Loyalty. While the engine is off, none of the three programs run and no files are created.

The guest is identified by phone number; for a signed-in guest the ledger may be kept under their account.


Stamps (stamp card)#

The classic "every sixth coffee is free" card.

Setting What it defines
Stamps per order how many stamps one qualifying order gives (usually 1)
Reward threshold how many stamps are needed
Reward type a free item (you pick the dish) or a percentage discount
Minimum order amount below it no stamp is given (0 — always give one)
Program name shown to the guest; translated into your menu languages

Stamps are credited when an order reaches a realised status, and exactly once per order: reprocessing does not double the balance. The reward is applied by the cashier as an ordinary discount marked "loyalty"; redemption is idempotent too, and the balance never goes negative.


Points#

The second program on the same ledger.

Setting What it defines
Earn percentage what percent of the paid check comes back as points
Redemption cap what share of a check (%) can be covered by points. Not set — 50 %
Excluded categories categories that earn no points (alcohol being the classic)
Minimum check amount below it no points are earned

Exclusions are set by category: there is no pinpoint list of items in the interface yet (the engine understands such a field, but it cannot be filled in from the settings).

1 point = 1 currency unit, points are whole numbers. The cap is not accidental: uncapped redemption is a straight hole in revenue.

The till shows the cashier exactly the number of points the server will later deduct: the calculation at the till and on the server is one and the same formula.


Regular-guest discount#

The third and simplest program: if a guest has made at least the configured number of completed orders, the till suggests a discount of the configured percentage.

It is a suggestion — applying it or not is the cashier's call. The order count comes from the guest directory (Returning guests).

The guest directory only lives on AWS brands (cenaly.com, cenaly.ru and others). In the Russian contour (cenaly.ru) there is nothing to count a guest's orders with, so the regular-guest suggestion does not appear at the till yet. Stamps and points do not depend on it and work everywhere.


The loyalty panel at the till#

The till has a "Loyalty" panel (it appears only when the engine is on). Given the guest's phone number it:

  • shows the stamp and point balances;
  • lets you apply a stamp reward;
  • lets you redeem points within the cap;
  • suggests the discount for a regular guest.

A redemption turns into an ordinary discount on the ticket — the till's money math is not forked.

Redeeming points on a cash or pay-the-courier order happens at the till. At online checkout the guest redeems points themselves, but only when paying online: cash and "pay the courier" go through the till, and so do the points.


What the guest sees#

  • a checkout teaser — a loyalty block with the balance and the option to redeem points when paying online;
  • progress on the order screen — how many stamps are collected and how many are left; the screen is public, so no private API is needed.

Coupons and promo codes#

Coupons are a separate tool, unrelated to the loyalty ledger.

Type What it does
Percent a percentage discount, with an optional maximum amount
Amount a fixed discount in currency
Free shipping zeroes out delivery
BOGO "buy one, get one" under a configurable rule

Every coupon can carry: a scope (whole cart / specific products / a collection), a minimum order amount, a total usage limit and a per-guest limit, a validity window, whether it stacks with other coupons, and customer conditions (for example, new guests only). Every application is written to a redemption ledger, so the limits are enforced honestly.

Location promo codes (the "Promo codes" block in the location settings) also have a validity window — a "Valid" column with "from" and "to" dates. As soon as the table holds scheduled or expired codes, a filter appears above it — "Active / Scheduled / Expired / All" with counters; active ones are shown by default. If every promo code of a location has expired, the storefront does not open the code field to the guest at all.

More on commercial tools — Commerce.


Limits: what the program does not do#

An honest list, so you don't plan around things that don't exist:

  • points do not expire — there is no validity period;
  • there are no tiers (bronze/silver/gold) — earning is the same for every member;
  • there is no referral program. There is a separate tool — an affiliate program for site owners and bloggers (a commission on referred orders) — but it is not "invite a friend" for guests;
  • there is no QR stamping at the table — a stamp is only given for a paid order.


FAQ#

Can I enable only stamps or only points?#

Yes. The programs are enabled independently inside the shared engine: you can run stamps only, points only, or both.

Why doesn't the guest see their points?#

Check three things: the loyalty engine is on for this location, the points program is on, and the guest left a phone number with the order. Without a phone number (or a sign-in) there is nothing to attach the balance to.

Do points accrue on alcohol?#

Not if you added the alcohol category to the exclusions. By default there are no exclusions.

Can a guest redeem points when paying cash?#

Yes, but the cashier does it at the till. At online checkout redemption is available only for online payment.

Do points expire after 90 days?#

No. There is no expiry for points right now — they sit on the guest's account until spent.