Home / Help / Promotions & marketing

Promotions & marketing

Coupons, upsells, bundles, campaigns, games, referrals, charity and the safety rails.

Read the walkthrough script for this guide
  1. Marketing, in the left-hand bar under 'Bring them back'. The hub is grouped by what a thing DOES, which is the fastest way to find one: Send something, Price and offers, Bring them back, and Runs on its own.
  2. Start with Price and offers. Coupons: make WELCOME10, ten percent off above a minimum. Watch checkout — the customer types it, and the real discount is computed on our side, never on their phone.
  3. Coupons do more than a percentage: buy-X-get-Y, a fixed amount, and exclusions so a category or a dish is left out of the discount while the minimum order still measures the whole cart.
  4. Offers, which you may know as upsells: pair a drink with every burger, or offer a treat when the cart crosses a threshold. Ten different rule types, set once, and the page does the selling.
  5. Bundles: pick any three for ninety-nine. A bundle is a PRICE, not a discount line — the receipt prices those items AS the deal, so every other rule that reads the subtotal reads the number the customer actually pays.
  6. Quiet-hour offers: a percentage off every order placed inside a window you choose. The cheapest way to move a quiet hour without touching a single price.
  7. Now Send something. Campaigns: pick a template — the seasonal packs include Ramadan, Eid and National Day — fill the brackets, and note that the composer refuses to queue while an unfilled bracket remains.
  8. Choose the audience and the channel. WhatsApp, or free wallet-card notifications for the customers carrying your card. Channels lets you decide that per kind of message rather than one blanket rule.
  9. The safety rails sit on one screen and are always on: a weekly per-customer cap you set, a review queue that HOLDS anybody matched by several campaigns at once until you approve it, a sending window enforced at the moment of sending, and automatic exclusion of numbers that recently failed.
  10. Bring them back: the win-back ladder for customers who stopped, the quiet-regulars nudge for the ones who are about to, referrals, games, and abandoned carts — which has its own card here because that is the job it does.
  11. Abandoned carts is the one to be clear about: the reminder goes out by itself only to a customer who has messaged your WhatsApp before; anyone else's waits for your approval, and nobody is reminded if they order in the meantime.
  12. Runs on its own: weather and timing triggers, building-level plays for the towers you deliver to, and Price drops & comebacks — retiring a dish while keeping its fans, and telling past buyers when a price drops.
  13. A price drop waits until the new price has stood untouched for a period you set, so a corrected typo never reaches a customer.
  14. Charity round-up, worth one honest sentence: the customer rounds their total up to a cause you name, you collect the money with the rest of the order, and it is yours to pass on. It is called out on the ticket because whoever counts the cash needs to know part of it is not takings.
  15. Last: judge all of it on the Dashboard, not here. History proves a message was sent. The Coupons panel shows how many orders actually carried the code.

Step by step

Create a discount code (coupon)

A code your customers type at checkout — percentage or fixed amount.

  1. In your admin panel, open Settings → Coupons (also reachable from the Marketing hub).
  2. Press Add coupon and choose the code customers will type — short and shoutable, like EID25.
  3. Pick the kind: Percent (e.g. 10 = 10% off) or Fixed (e.g. 15 = 15.00 off), and enter the value.
  4. Optional guard rails: a Minimum order the cart must reach, a Max uses cap for the whole code, and Start/Expiry dates.
  5. Optional exclusions: tick categories or specific items the discount must NOT apply to — the discount then computes on the eligible part of the cart while the minimum still measures the whole cart.
  6. Save with Active on. Test it yourself: open your page, add items, type the code at checkout — the preview shows the real value before any order is placed.

Create a Buy X get Y deal

"Buy 2 shawarmas, get a drink free" — built as a coupon of kind bxgy.

  1. Settings → Coupons → Add coupon, and choose the Buy X get Y kind.
  2. Pick the buy item and how many must be in the cart (e.g. Chicken Shawarma × 2).
  3. Pick the get item, how many, and the discount on it — 100% makes it free; 50% half price.
  4. Save and test with a qualifying cart: the reward item is discounted only when the buy quantity is really in the cart, and it is never added to the cart automatically.

Put an upsell on your page

Offers that sell while you sleep. There are TEN rule types — this is the full list.

  1. Open Settings → Upsells and press Add rule.
  2. Choose the rule type: Pair a deal with an item · Category pairing · Free/discounted item over a cart amount · Combo upgrade · 2nd unit discount · Buy X get Y · Happy hour / day-part offer · First order welcome · Every Nth order reward · Checkout add-on shelf.
  3. Fill the type's own fields — which items trigger it, what is offered, at what price — and name the rule for your reports.
  4. Set how many times it may apply per order, switch it Active, and save.
  5. Watch it live: offers appear in the item popup, the cart, or the order summary depending on the type — and every offer is re-checked server-side at checkout.
  6. Tip: 'Smart pairings' on the same page learns real combinations from your own order history and surfaces them for approval.

Create a bundle (pick N for a price)

"Any 3 mezze for 49" — a price, not a discount, so receipts stay clean.

  1. Open Settings → Bundles and press Add bundle.
  2. Name it (the customer sees this), set the bundle size and the bundle price.
  3. Choose the eligible items the customer may pick from.
  4. Decide the switches: may it stack with other bundles in one cart, and do bundle orders earn loyalty stamps.
  5. Save with Active on. The bundle re-prices the chosen items to the deal — receipt, minimum-order rule and VAT all see the bundle price naturally.

Send a campaign (WhatsApp / wallet broadcast)

A one-off message to a chosen audience — with the safety rails always on.

  1. Open Settings → Promotions (the Marketing hub) and press New campaign.
  2. Name the campaign for your own records — e.g. "Weekend biryani push".
  3. Write the message, or start from a template (seasonal packs included). If a template has [bracketed] blanks, the composer refuses to send until every one is filled.
  4. Choose the audience from the built-in segments: Everyone who has ordered · Haven't ordered in a while · Ordered recently · Regulars (several orders in a period) · First-time customers · Tried once, never came back · Exactly N orders · Top spenders · Used a coupon recently · Close to a loyalty reward (shown when your loyalty programme is on). Building-level deals are separate — see condo plays.
  5. Choose the channel for the campaign: WhatsApp, the wallet card, or both. (Automatic promotions each have their own channel row on Marketing → Channels — including a 'Wallet first' option that sends one message per customer, card when they have one, WhatsApp when not; wallet messages are free and never count against the weekly cap.)
  6. Send. Delivery honours the rails automatically: the 10:00–21:00 local sending window (a campaign sent at 11pm goes out after 10:00 next morning), your weekly per-customer cap, the held-for-review queue when one customer matches several campaigns, and exclusion of recently-failed numbers.
  7. Read the results on the campaign's page afterwards: sent, delivered, failed — judge it by orders, not sends.

Set your marketing safety rails

The caps that protect your WhatsApp number and your customers' patience.

  1. Weekly cap: open Marketing → 'Review queue & weekly cap' (or Reports → Message history → the 'Marketing review' tab — same screen), and set 'Marketing messages per customer, per week' (default 2, maximum 14; 0 means "hold everything for my approval"). Wallet-card messages are free and never count against it.
  2. Review queue: the same 'Marketing review' tab. When one customer is matched by several campaigns at once — or a message type always needs approval — the batch is HELD there with the reason printed on each row; approve or discard, singly or all at once. The tab carries a number badge when something waits.
  3. The 10:00–21:00 window and failed-number exclusions are always on — nothing to configure, nothing to forget.
  4. Emergency stop: the marketing pause pulls a marketing-only brake — order confirmations run on a separate lane and are never affected.

Set up referrals

Every customer gets a share link. When somebody they introduce has their first order delivered, both sides get a coupon.

  1. Open Marketing → Referrals and tick 'Referral programme active' — nothing is issued, minted or sent while it is off.
  2. Set how many referrals one customer can be paid for per 30 days, and how long each coupon stays valid. Over the cap the friend still gets their coupon — only the referrer's half is held back.
  3. Under 'What the referrer gets', choose percentage-of-order (with a 'Most it can ever be' cap — issued as a fixed-amount coupon) or a fixed amount. Configure 'What the friend gets' independently.
  4. Read the 'Currently: …' line under each — it spells out in words what will actually be issued.
  5. Write the two messages ({name}/{restaurant} fill in; code and amount are appended automatically) and press Save.
  6. Payouts settle on the friend's first DELIVERED order — a fake introduction earns nothing, and a cancelled-then-replaced first order still pays exactly once.
  7. Judge it on the tiles: links issued, clicks (deduped, preview-filtered), customers introduced, payouts made, held over cap, and referred-customer revenue.

Set up a prize game

A scratch card or the wheel after delivery. The draw happens on our server — nothing on the customer's phone can influence it.

  1. Open Marketing → Games & extras (everything on this page ships off).
  2. Tick 'Scratch card after every delivered order', or 'Spin the wheel on a customer's Nth delivered order', or both — if both apply to one delivery, the spin wins; one delivery never earns two games.
  3. Set the Nth-order number (2–50), how long the link stays open (1–720 hours) and prize-coupon validity (1–365 days).
  4. Fill the six prize slots: what the customer sees, what it gives (nothing / % off / amount off / free item), and its Chance (weight).
  5. Weights are RELATIVE, not percentages — read the list the page prints underneath: it shows the real odds computed by the same function the draw uses. A weight of 0 can never be drawn. Keep a losing slot.
  6. Write the invitation ({name}, {restaurant}, {n} fill in; the link is added automatically) and Save.
  7. Prizes are food and discounts only, never cash; each is minted as an ordinary single-use coupon, so a prize and a tier discount never stack. Watch the five tiles: given, opened, won, spent, and what those orders actually cost you.

Common questions

How do coupons work?

Create a code with a percentage or fixed discount, an optional minimum order, usage cap and validity dates. The customer types it at checkout; our server re-prices the real cart and shows the true value before ordering. A code's use is only consumed when an order actually completes with it.

Can I do 'buy X get Y'?

Yes — buy-X-get-Y coupons count the qualifying items in the cart and discount the reward item accordingly. The reward is never force-added to the cart; the customer stays in control of what they're buying.

Can I exclude items from a discount?

Yes — coupons can exclude categories or specific items. The discount then applies to the eligible part of the cart, while any minimum-order requirement still measures the whole cart.

Why did a coupon show as invalid?

One message covers them all deliberately — expired, used up, below minimum, unknown code — so codes can't be fished. Check the coupon's dates, cap and minimum in your panel; the customer-facing message stays intentionally vague.

How do upsells work?

Rules like 'goes great with' (pair a drink with select mains), cart-threshold treats ('free dessert over 120'), checkout add-ons, and a first-order welcome offer. Offers appear in the item popup, the cart and the summary; every offer is re-validated server-side at checkout so an expired deal can never be charged wrongly.

What are bundles?

Pick-N-for-a-price deals ('any 3 mezze for 49'). A bundle is a PRICE, not a discount line: the chosen items are re-priced so the receipt, any minimum-order rule and even VAT all see the deal price naturally. A mystery item can ride inside a bundle too.

How do campaigns work?

Choose a template (seasonal packs included — Ramadan, Eid, National Day), fill in the bracketed blanks — the composer refuses to queue while any [bracket] is left unfilled — pick the audience, and send. Delivery respects every safety rail below.

What stops me from over-messaging customers?

Four rails, always on: a weekly per-customer cap you set; a review queue that HOLDS any customer matched by multiple campaigns at once until you approve or discard; a 10:00–21:00 local sending window enforced at send time; and automatic exclusion of numbers whose recent messages failed. These exist to protect your WhatsApp number as much as your customers.

How do I choose between WhatsApp and the wallet card for a promotion?

On Marketing → Channels, each kind of automatic message has its own row: tick WhatsApp, the wallet card, both — or 'Wallet first', which sends each customer exactly ONE message: to their wallet card when they hold one at send time, on WhatsApp when they don't. The shipped default is WhatsApp only; wallet messages are free, unbannable, and never count against the weekly cap. Untick everything on a row and that promotion goes completely silent. Ticking both is the safest combination (a deleted wallet card can go unnoticed); Wallet first is the cheapest that still reaches everyone — its one honest risk, stated on the page, is that a card deleted without Google telling us can swallow a message. Campaigns are the one exception: they choose their channels per send, in the composer.

What games can I run?

A scratch card or prize wheel offered after delivery — the customer plays, wins whatever you configured (a code, a free item), and prizes are minted single-use. Dine-in has its own set: scan-again perks, table streaks, a happy-table draw and a treasure hunt.

How does the referral programme work?

A customer shares their link; when the friend's first order is delivered, both sides receive the reward you configured. Rewards are minted as single-use codes and the payout settles exactly once per new customer — a cancelled first order pays nothing until a real one delivers. It ships OFF until you enable it.

What is review-for-reward?

After delivery the customer is invited to leave a Google review with a small thank-you attached. A visible policy note is built in: platforms frown on rewards conditioned on POSITIVE reviews, so the invitation rewards reviewing, not praising — keep it that way.

How does the charity round-up work?

Customers can round their total up to a cause you name. The pledge is computed on our side, itemised separately on the receipt, and correctly excluded from VAT (a donation is not a taxable sale). Totals per order are recorded so the amounts you hand over are auditable.

What are weather-based promotions?

Rules that react to real local weather — a hot-day drinks push, a rainy-day delivery nudge. Weather is checked platform-side; the resulting messages route through the standard marketing rails like everything else.

What are condo plays?

Building-level promotions for the towers you deliver to: a building deal that unlocks when enough distinct customers from one building order, and a 'condo captain' perk for the building's most frequent customer. Minimum sizes are enforced so no one's identity can be guessed from a tiny building.

What is Ramadan mode?

A seasonal mode that switches your page to your Ramadan hours automatically (driven by cached prayer times — never a live lookup during checkout), offers an iftar countdown, and can attach an iftar deal or gift. When Ramadan ends, normal hours return by themselves, everywhere at once.

What storefront nudges exist?

Complete-the-meal suggestions based on real pairing patterns, a beat-the-rush prompt in quiet windows, and a round-up rescue that suggests the cheapest item that lifts a cart over your minimum order. All display-only salesmanship — the money math stays server-side.

Can I discount automatically without codes?

Yes — member-tier discounts apply automatically for qualifying customers, and time-window item pricing exists for happy-hour-style pricing per item. Automatic percentages never stack with a typed coupon: the customer gets the better one.

What is the pacing advisor?

A gentle analysis of your sending patterns that suggests when a campaign would land better and warns when you're crowding your audience — advice, not automation; nothing sends itself.

Do promotions work on group orders?

Group orders don't accept coupons (a shared cart with one payer makes code discounts messy — this is deliberate), but participants still count for promotions and can be pitched the loyalty card at join time.

Where do I see what a promotion achieved?

The campaign and promotion views show sent/delivered/failed counts, and the dashboard's revenue view shows redemptions itemised on orders (coupon codes are stored on each order). Judge a promotion by orders, not sends.

Where do I set the weekly message cap and approve held messages?

Two doors, one screen: Marketing → 'Review queue & weekly cap', or Reports → Message history → the 'Marketing review' tab (it carries a badge when something waits). The field is 'Marketing messages per customer, per week' — default 2, maximum 14; set 0 to review every marketing message before it goes. The same screen lists each held message in full with the reason, and offers Approve & send, Don't send, Approve all and Discard all.

How fast do my automatic marketing messages go out, and can I change it?

They leave your own WhatsApp number one at a time, spaced apart. The gap is yours to set, on the same screen as the weekly cap: Marketing → 'Review queue & weekly cap' → 'Seconds between automatic messages'. The default is 20 seconds, and the platform sets a minimum you cannot go below (shown next to the field). This covers the automatic messages only — win-backs, dormancy nudges, cart reminders and the like; campaigns you build yourself carry their own spacing, set on the campaign. Going faster is not free: if WhatsApp bans your number you lose every ORDER message too — confirmations, delivery updates, rider tickets — not just your marketing. Your number is yours alone here; another restaurant sending has no effect on your pace, and yours has none on theirs.

Do wallet-card messages count against my weekly cap?

No — the cap counts WhatsApp marketing only. Wallet-card messages are free and never counted or held, and order confirmations, delivery updates and rider details are never counted either.

Where is the abandoned-cart option?

Marketing → the 'Abandoned carts' card, under 'Bring them back' — it opens straight onto the right section. Switch it on, set the wait time and the message, and when somebody fills a cart, leaves their name and number, and does not order, a message is prepared. If that person has messaged your WhatsApp before, the reminder is sent by itself in the daytime window, under your weekly cap. If they never have, it waits on the Marketing review tab for you to approve or discard. In both cases nothing is sent if they place an order in the meantime.

What is Beat the rush?

The card is called Quiet-hour offers, under Marketing; the discount still shows on the customer's receipt as "Beat the rush". An automatic percentage off every order placed inside a time window you choose — for filling a quiet hour, no code typed. It ships off, and it costs margin on customers who would have ordered anyway. Both times are INCLUSIVE ('before noon' = end 11:59), judged on our server in your restaurant's own timezone, never on the customer's phone.

Who actually holds the charity money customers round up?

You do. The pledge is paid to you with the rest of the order — cash at the door or on your card machine — and the platform never receives, holds or forwards any of it; you remit it to the cause you named, and customers are told exactly that at checkout. The Games & extras page shows 'Pledged by customers' — that is what you owe the cause — and your revenue is reported with donations already removed.