Start with the behaviour you want to encourage

An offer should have a purpose: welcoming a new customer, encouraging a return visit or introducing a menu item. Avoid launching several overlapping incentives without understanding their combined effect. Points, coupons and delivery waivers can all reduce the effective price of an order.

Define who can use an offer

Write down the audience, eligible products, minimum qualifying amount, redemption limits and validity period. If an offer is personal, make sure the customer account and the offer eligibility agree. A code entered at checkout should be validated before the customer places the order, with a clear result and a simple way to remove it.

Distinguish points from discounts

Points can be pending, available, redeemed or reversed. A points balance is not automatically a cash discount. Use the loyalty record to understand why a balance changed, and decide when an order qualifies for points. Cancellation and reversal behaviour should be part of the setup, not an afterthought.

Show savings without confusing the total

A customer should be able to distinguish the item subtotal, a coupon discount, service fees, delivery fees and any waiver. If delivery is free, show the waived fee clearly. Do not count the same benefit twice in total savings. Review the final calculation with several carts rather than relying on a single happy-path example.

Notifications are a supporting channel

In-app records and push notifications can help customers find relevant offers. Push is not a guarantee that a device will display every message: permissions, connectivity and device settings matter. Keep available offers accessible inside the app even when a push is missed, and test campaigns through the actual campaign workflow rather than only through a direct notification test.