Promotions & loyalty
Three ways a customer pays less than list price, each owned by someone different:
- Promotions are percentage-off offers a supplier runs for a period, such as 10% off a first order.
- Loyalty tiers are standing discounts a supplier gives its best customers, such as Gold at 5%.
- Clipp coupons are discounts Clipp gives a restaurant and pays for itself.
On an order they all appear as discount lines. The supplier always sees what each one is worth.
Who uses it
- Supplier staff create promotions, define loyalty tiers and put customers in tiers.
- Restaurants are notified of new promotions and see the discount on their cart, order and invoice.
At a glance
| Discount | Set by | Applies to | Shows on the invoice as |
|---|---|---|---|
| First-order promotion | Supplier | A customer's first live order with the supplier | First Order Discount |
| Percentage-off promotion | Supplier | Every order, within its dates and minimum | Percentage Off Discount |
| Loyalty tier | Supplier | Every order of a customer in the tier | Loyalty Discount |
| Clipp coupon | Clipp | An unpaid order the restaurant applies it to | Clipp Promotion |
Only one promotion applies to an order: the most valuable. A loyalty discount is separate and applies on top.
In this section
| Page | What it covers |
|---|---|
| Promotions page | The list, its tabs, pausing and editing |
| Create a promotion | The wizard: type, terms, customers |
| How discounts apply to an order | Which promotion wins, minimums, caps and loyalty, with worked numbers |
| Loyalty tiers | Defining tiers and putting customers in them |
| Clipp coupons | What they are, and where they are covered |
Where it shows up
- Supplier app: Promotions, Profile settings → Loyalty Tiers, a customer's page, and the Promo/Discount/Fees drawer on an order.
- Restaurant app: a push notification for a new promotion, the cart, and order and invoice emails.
- Documents: discount lines on invoices.
Permissions
| Action | Needs |
|---|---|
| See Promotions | Promotions: read access |
| Create, edit, pause a promotion | Promotions: full access |
| Create, edit or delete loyalty tiers | Admin (Profile settings) |
| Put a customer in a tier | Customers: full access |
Decisions
- Promotions never stack. The most valuable one wins and the rest are dropped. A tie goes to the first-order promotion.
- Loyalty is separate from promotions. A tier customer earns both the best promotion and the loyalty discount.
- A promotion's terms are frozen on the order. Expiring it later does not re-price orders already placed.
Specs
first-order-eligibility.feature
# prefix: SOFE
Feature: First-order promotion eligibility on sale orders
An order always carries every promotion the customer could earn. Whether the first-order
promotion applies is judged each time the order is priced, against the customer's earlier
live orders with the same supplier. At most one promotion applies to an order.
Background:
Given a supplier has a first-order promotion and a percentage promotion
Rule: Eligibility is judged against earlier live orders
Scenario: SOFE-001 a customer with an earlier order gets the percentage promotion
Given an order carries both promotions and its customer has an earlier live order
When the order is priced
Then the percentage promotion applies, within its cap
And the first-order promotion does not apply
Scenario: SOFE-002 a customer with no earlier order gets the first-order promotion
Given an order carries both promotions and its customer has no earlier live order
When the order is priced
Then the first-order promotion applies
Scenario: SOFE-003 both promotions never apply to one order
Given an order carries both promotions
When its customer's eligibility changes and the order is priced again
Then the order holds exactly one promotion
Scenario: SOFE-004 canceling the earlier order makes a later order the first
Given a customer has two live orders
When the earlier order is canceled and the later order is priced again
Then the later order gets the first-order promotion
Scenario: SOFE-005 a later order does not take the first order's promotion
Given a customer's first order earned the first-order promotion
When a second order is placed and the first order is edited
Then the first order keeps the first-order promotion
Scenario: SOFE-006 a deleted earlier order does not count
Given a customer's earlier order was deleted
When the later order is priced again
Then the later order gets the first-order promotion
Scenario: SOFE-008 an order placed from a cart is judged like any other
Given a customer submits a cart to a supplier
When the customer has an earlier live order with that supplier
Then the placed order gets the percentage promotion
But when the customer has no earlier live order it gets the first-order promotion
Scenario: SOFE-010 orders placed at the same moment are ordered by creation
Given a customer has two orders with the same placement time
When both are priced again
Then only the one created first gets the first-order promotion
Rule: Previews price the same way as saves
Scenario: SOFE-007 a preview matches the stored promotion
Given an order that earned the capped percentage promotion
When the supplier previews the order
Then the preview shows the same promotion and net as the stored order
Scenario: SOFE-009 a saved cart's estimate matches the order once placed
Given a customer with an earlier live order has a saved cart
When the estimate is read and then the cart is submitted
Then the estimate and the placed order both carry the percentage promotion
Known limitations
- "Buy X get Y" promotions are not offered. Only percentage-off and first-order promotions can be created, and orders do not price Buy X get Y.
- Promotions apply to a customer's whole order. A promotion cannot target specific products.
FAQ
A customer got a smaller discount than the promotion says. The promotion has a Maximum Discount Value, or the order missed its Minimum Order Value. See How discounts apply.
Why did the customer not get the first-order discount on their second order? It only applies when the customer has no earlier live order with you.