April 1, 2026
How to Build a Restaurant Loyalty Program: A Guide to Points, Campaigns, and Moving Customers to Your Own Channel
Finding a new customer costs far more than bringing back one you already have. Most restaurants know this, yet they do not even hold on to their existing customer's phone number. When a customer orders through a marketplace like Uber Eats or Deliveroo, that customer belongs to the marketplace, not to you. The contact details stay with them, they send the next campaign notification, and they take a commission of anywhere from 15% to 35% on every order. The real purpose of a loyalty program is not just to hand out discounts; it is to gradually move the customer onto your own channel.
In this guide we walk through how to build a restaurant loyalty program from scratch: which points model to choose, how to design your campaigns, how to get customers used to your own commission-free online ordering channel, and how to measure all of it with your order ticket and cloud POS data. In RestApp, loyalty is not a separate app; it runs embedded inside your order, dine-in, and delivery flow.
Let us set a concrete target. Say you run a mid-sized restaurant, and half of your 1,200 monthly delivery orders come from marketplaces with an average ticket of around $14. On those 600 orders, an average commission of 25% works out to roughly $2,100 a month. If you moved even a quarter of those orders onto your own channel, you would keep about $525 a month in your own pocket. The loyalty program is the engine that drives that shift.
The Real Purpose of a Loyalty Program: Ownership, Not Discounts
Many operators treat a loyalty program as a discount tool, something like "every 10th coffee free." The discount is only the visible part. The real gain is the customer's contact details, their order history, and your direct connection to them. You do not know the name, the number, or the order history of a customer who comes through a marketplace. You know everything about a customer who comes through your own channel, and you can reach them whenever you want.
That difference shows up clearly in commission too. A marketplace takes a cut of 15% to 35% on every order, and it can steer the customer toward a competing restaurant on its own list rather than back to you. On your own commission-free online ordering site and app, every order is entirely yours. A loyalty program answers the customer's question of "why should I order from here": because they earn points, because they get campaigns made just for them.
Before you build the program, write down a one-sentence goal. For example: "Over the next 6 months, move 40% of my delivery orders onto my own channel." Without this goal, points and campaigns become pure cost. With a measurable goal, you can judge every campaign against it.
Step 1: Choosing the Right Points Model
There are three basic models. The first is spend-based points: 5 points for every $4 spent, with a $2 discount once the customer reaches 100 points. The second is a visit-based stamp system: a free item on the 10th order. The third is a tier system: a customer who passes a certain spend level moves up to levels like "silver" or "gold" and earns better perks. For most restaurants, the simplest and clearest option is spend-based points.
Set your points rate against your profit margin. If you pay 25% commission to a marketplace, giving a customer a 5% to 8% return in points on your own channel still works in your favor. The customer wins while you escape the commission. To get the recipe and cost side right, base it on your recipe and cost management data; setting a points rate without knowing your product cost is just discounting blind.
In RestApp, the loyalty and promotions module handles points automatically. Whether the customer orders at the table with the QR menu or places a delivery order, points collect in a single account. The server does not enter points by hand, the cashier does not keep a tally; the system records the points along with the order. This is critical for the program to actually run, because manual points tracking gets forgotten within a few weeks.
Step 2: Designing Campaigns That Move Customers to Your Own Channel
The job of a campaign is to pull the customer out of the marketplace and get them used to your channel. The most effective method is to reward the channel difference with points. For example: "Double points on orders placed through our own site." The customer can order the same meal from either place, but once they see they earn more points on your channel, the habit shifts. Back this up with a QR code printed on the menu, a card sent with the delivery, and a message at the bottom of the receipt.
Getting that first order onto your channel is the hardest step. Use a strong trigger here: "Order from our site for the first time and earn $3 in welcome points." Have them use those points on their next order so the customer comes back a second time. A one-time discount brings the customer in but does not bring them back; the logic of earning and accumulating points ties the customer to a second and third order. With online payment this flow becomes frictionless, and the customer does not have to hunt for cash at the door.
Separate your campaigns by order type. On pickup orders there is no delivery cost, so you can be a bit more generous with points; this both pleases the customer and lowers your delivery expense. On the delivery side, you can tie points to a minimum basket amount and lift your average ticket. One size does not fit all; each channel has its own economics.
Step 3: Collecting Data and Getting to Know Your Customer
The fuel of a loyalty program is data. As a customer orders through your own channel, what they eat, how often they come, and what time they order all build up. A marketplace does not give you this data. In RestApp, cloud reports let you see your most loyal customers, the at-risk customers who have not ordered in a while, and your most profitable items, all on one screen.
You use this data for campaign targeting. For example, sending a "We missed you, extra points on this order" message to 200 customers who have not ordered in 30 days is far more efficient than a blanket discount for everyone. A general discount loses you money even on customers who would have come anyway; a targeted campaign only calls back the customer who is likely to leave.
To use the data consistently, build a habit of checking it once a week. Through the cloud back office, track how many orders each campaign brought in and how much the points lifted revenue. Scale up the campaign that works and shut down the one that does not. A loyalty program is not something you set up and forget; it is a system you tune continuously.
Step 4: Embedding the Program Into Operations
Even the best loyalty idea collapses if it does not fit into operations. The server forgets to mention points at every table, the cashier skips the points during the rush. The fix is to stop treating loyalty as a separate task and put it inside the order flow. In RestApp, the moment the customer's phone number is entered, points appear automatically on the order ticket and cloud POS screen and are processed along with the order.
A customer ordering at the table with the QR menu sees their own points when they sign in; they do not ask the server, the system reminds them. On the kitchen side, the kitchen display system (KDS) picks up the order instantly, and the loyalty flow does not slow the kitchen down. This way the program runs as part of the existing flow without creating extra workload.
Train your staff with one short sentence: "When you close the bill, ask for the customer's number so they can see their points." One sentence, one habit. Do not write out a complex procedure; the simpler the team remembers it, the more they apply it. With the order taking app, the server handles both the order and the points from a single device at the table.
Step 5: Measuring Results and Growing the Program
Measure the success of a loyalty program with three numbers: the share of orders coming through your own channel, how often customers reorder, and the total commission you pay to marketplaces. If these three numbers are moving in the right direction, the program is working. Track how close you are getting each month to the goal you set at the start, for example "40% of delivery on my own channel."
Look at a real example. A burger restaurant had 70% of its delivery on marketplaces before setting up a loyalty program. With a double-points campaign and welcome points, it brought that share down to 45% in 4 months. Roughly 225 of its 900 monthly orders switched channels, and with an average ticket of around $12 and 28% commission, it escaped about $760 a month in marketplace commission. The cost of the points it handed out stayed well below that.
Once the program is established, it is time to grow. With online reservation, bring dine-in guests into the loyalty account as well, so the dining room and delivery merge into a single customer profile. As you raise your targets, review the plans on the pricing page to see costs clearly, or try it free and test the program with your own menu.
Key takeaways
- The real purpose of a loyalty program is not discounts; it is moving the customer from the marketplace onto your own commission-free channel and owning their contact details and order history.
- Set your points rate against your profit margin; a points rate below the 15% to 35% commission you pay a marketplace still works in your favor.
- Double points on orders from your own channel and welcome points on the first order are the two campaigns that most convince customers to switch channels and come back.
- Leave the points to the system, not the server; if loyalty does not run embedded in the order ticket, QR menu, and delivery flow, it gets forgotten within a few weeks.
- Measure success with three numbers: your own channel share, reorder frequency, and total commission; scale up the campaign that works and shut down the one that does not.
Frequently asked questions
How long does it take to set up a restaurant loyalty program?+
In RestApp, loyalty is not a separate setup project; it comes ready inside your existing order and POS flow. Once you decide on the points rate and your first campaign, you can launch the same day. The real time goes not into technical setup but into deciding which points model and campaign trigger to choose.
How high should I set the points rate, and will I lose money?+
Consider that you pay 15% to 35% commission to a marketplace on every order. Giving the customer a 5% to 8% return in points on your own channel stays well below that commission. So the more you move customers onto your own channel, the more you escape that commission and please the customer at the same time. When you set the right rate knowing your product cost, you profit rather than lose.
How do I get customers used to my own channel instead of the marketplace?+
Three tools work together: double points on orders placed through your own site, welcome points on the first order, and a QR code printed on your menu, receipt, and delivery card. Once the customer sees they get a better deal on your channel for the same meal, the habit shifts over time. Frictionless online payment and fast delivery make that shift permanent.
Do I need a separate app for a loyalty program?+
No. In RestApp, loyalty is embedded inside the order ticket and cloud POS, QR menu, delivery, and pickup flows. The moment the customer enters their phone number, their points appear automatically on the POS screen. There is no need for the server to enter points by hand or for the cashier to keep a separate tally.
How do I tell whether the loyalty program is working?+
Look at three numbers: the share of orders coming through your own channel, how often customers reorder, and the total commission you pay to marketplaces. Through cloud reports you can see how many orders each campaign brought in, then scale up the one that works and shut down the one that does not. These figures show you how close you are getting to your goal each month.
Stop paying commission on your orders
Launch your own commission-free online ordering system with RestApp.