Guide chapters
Promotions and loyalty
The problem#
In a store a discount reduces the owner revenue and that is the end of it. In a marketplace every reduction is a question about whose money was just spent. The same promotion can be a seller cost, a platform cost or a shared one, and the difference only becomes visible at payout.
Four questions before the first campaign#
| Question | Why it has to be settled early |
|---|---|
| Who funds the reduction | without it the seller cannot be settled |
| Commission before or after the discount | it changes the result on every promotion |
| Whether sellers can create their own promotions | it decides whose discount meets whose |
| Whether promotions stack | no rule means discounts nobody planned |
Minimum version#
- The discount recorded as an amount on the order line, not merely as the code that was used.
- Alongside that amount, who funds it.
- One discount mechanism, usually a code, operated by the platform.
- No stacking as the default rule, until deliberately changed.
Recording the funding source costs one field. Reconstructing it later means going through campaigns and guessing which one applied to a given order.
What not to build yet#
- A points-based loyalty programme. That is a separate settlement system, not a promotion feature.
- Seller-created promotions, while the platform has no stable mechanism of its own.
- Stacking rules with priorities and exclusions.
- Targeting by customer segment.
Plan ahead#
A discount as an amount, not a percentage#
A percentage has to be recalculated on every read, and the result depends on what it is applied to. An amount recorded on the line is unambiguous and immune to later price changes.
Funding as information next to the amount#
A platform-funded discount does not reduce the seller revenue, so commission is calculated as if the discount were not there and the platform covers the difference. A seller discount reduces the base. That one piece of information settles the whole later calculation.
A refund has to know about the discount#
On a refund you return what the buyer actually paid, not the list price. If the discount is not recorded on the line, the refund is calculated from the wrong base and the difference only surfaces in settlement.
Triggers#
- the first promotion where a seller asks why they got less;
- the first seller request for a promotion of their own;
- the first refund of a discounted order;
- two discount codes used in one cart;
- the first campaign where the platform subsidises the price.
Next stage#
After the second trigger: separating platform promotions from seller promotions, with distinct funding. After the fourth: an explicit stacking rule, however simple. After the fifth: only then a loyalty programme, deliberately as a settlement system rather than another discount type.
Common mistakes#
| Assumption | Why it costs |
|---|---|
| "A discount is a percentage on a campaign." | The result depends on a base nobody recorded. |
| "All discounts are charged to the seller." | A platform promotion takes money from somebody who did not announce it. |
| "Refunds are calculated from the product price." | The buyer gets back more than they paid. |
| "We will settle stacking later." | By then somebody has placed an order at 70 percent off. |
| "Points are a marketing feature." | Unaccounted for, they are an undisclosed platform liability. |
What works in practice#
Platform-funded discounts I record as a separate adjustment on the order, with an explicit source and their own identifier guarding against being applied twice. The seller therefore receives the full amount, and the cost of the promotion is visible on the platform side instead of dissolving into settlement.
Treating the loyalty programme from the start as a platform cost rather than a seller discount saved a conversation that would otherwise have to be had with every seller separately.
Checklist#
- The discount is recorded as an amount on the order line.
- The funding source is recorded next to the amount.
- It is clear whether commission is calculated before or after the discount.
- Refunds use the amount actually paid.
- There is an explicit stacking rule, even if it forbids stacking.
- Loyalty points, where they exist, have a funding source attached.
I design multi-vendor platforms with onboarding, payments, moderation, and operational workflows.
Explore marketplace development