What a promo code is and what it is for

A promo code is a code combination the shopper enters when placing an order to receive a discount, free delivery or a gift. Technically it is a rule in the e-commerce platform: the condition for applying it, the size of the benefit, the validity period, the usage limit.

The instrument is popular for three reasons: it produces an immediate and highly visible effect, it launches without development work, and usage is measurable from the moment the code is entered. That last property creates the central illusion: the number of coupon orders looks like the result of the campaign, although a substantial share of them would have happened without it.

Types of promo code

Type The job The main risk
Public (general) A mass promotion, accelerating seasonal demand Leaks to coupon aggregators and becomes a permanent discount for everyone
Personal (single use) A targeted effect on a specific segment Requires infrastructure for generating and validating codes
First order Acquiring new customers Encourages people to create repeat accounts for the discount
Reactivation Winning back people who stopped buying Trains part of the base to wait for a code instead of paying the price
Category Clearing stock, promoting a category Discounts items that were selling perfectly well anyway
Free delivery Removing a price barrier without a direct discount Lowers the perceived norm — delivery starts to feel free by default

The practical dividing line is a single one: a public code cannot be kept inside a segment. Once it reaches the internet, everyone sees it, including shoppers who would have ordered at full price. Personal single-use codes avoid that problem, but they require the e-commerce platform to generate and validate individual codes.

The hidden cost: the code field at checkout

An empty code field at checkout is a message to the shopper: a price lower than the one you are looking at exists somewhere.

What follows is predictable. The shopper opens a new tab, searches for a coupon, lands on an aggregator where competitor offers sit next to the code they wanted, and some of that traffic never returns. The store pays twice: for the discount and for the interrupted order flow.

What is done about it in practice:

  • collapse the field into an unobtrusive text link reading I have a promo code, with no box and no highlight;
  • keep the field off the payment step and place it only in the cart;
  • for personal codes, apply the code automatically from the link in the message, so the field never has to be found;
  • for segments the campaign is not aimed at, do not show the field at all.
⚠

A separate category of risk covers mechanics that technically work but mislead the shopper: a discount code that only applies to products with an inflated struck-through price, a timer that restarts on page refresh, a personal code sent to the entire base. These are dark patterns: they deliver a short-term lift and a long-term rise in returns and churn.

What a discount actually costs

A discount is paid not out of revenue but out of gross margin — and that changes the arithmetic fundamentally.

Required volume lift = Discount / (Margin - Discount)

where Discount and Margin are percentages of the product price
Gross margin 5% discount 10% discount 15% discount 20% discount
25% +25% +67% +150% +400%
30% +20% +50% +100% +200%
40% +14% +33% +60% +100%

The table reads like this: at a 30% margin and a 10% discount, the store has to sell 50% more units simply to stay at the same gross profit. A smaller lift means the campaign is loss-making, even if turnover and order count went up.

The second part of the cost is the paid discount. That is the share of coupon orders that would have happened at full price. In most campaigns it accounts for a noticeable share of the volume, and without an experiment it cannot be separated from the genuine lift.

How to measure the effect: a holdout instead of before-and-after

The only correct way to measure a promo campaign is a holdout group: a randomly selected part of the audience that receives no code.

Incremental effect = GP(discount group) - GP(holdout), per participant
where GP is gross profit

What exactly to compare:

  • gross profit per participant — the decision metric;
  • conversion uplift — how far the share of buyers rose against the holdout;
  • average order value — a discount sometimes distorts the basket structure rather than growing it;
  • return rate — discounted orders come back more often, and logistics eats what profit remains.

The typical outcome of such a test: conversion does rise, while the incremental gross profit sits close to zero. That is not a reason to abandon promo codes entirely — it is a reason to narrow the audience to the segments where a discount genuinely changes the decision: reactivation of lapsed customers, win-back campaigns, cold traffic with no purchase history.

One more constraint is worth keeping in mind: sending codes by email, SMS and push is handled by the retailer’s messaging platform or CRM, and generating and validating the codes themselves by the e-commerce platform. A personalization platform handles a different part of the task: who sees the offer on the site and at what moment, and how the audience is split into test groups.

Alternatives to a discount

A discount is not the only way to remove a price barrier, and it is almost always the most expensive one available.

Instrument Cost to the business When it beats a discount
Free delivery Below its perceived value The barrier is not the product price but paying extra for nothing
A bonus with the order (sample, consumable) Cost of goods, not price You have items with high perceived value and low cost
A personal product selection No direct cost The shopper did not find a suitable product rather than finding the price high
More volume or a longer term Margin on the additional volume Subscriptions, consumables, regular purchases
Instalments The payment provider’s fee Expensive categories with a long decision cycle

The cause deserves separate attention. Some shoppers leave for reasons that have nothing to do with price: they could not find their size, did not understand the specifications, did not see the returns policy. A discount does not touch that scenario — it merely makes cheaper something that was never right.

Promo campaign checklist

  1. State whose behaviour the campaign is meant to change, and check that this segment really is price-sensitive.
  2. Calculate the required volume lift at your current margin with the formula — before launch, not after.
  3. Choose the code type: personal single-use for segment work, public only for mass seasonal promotions.
  4. Set aside a holdout group and fix the decision metric: gross profit per participant.
  5. Remove the promo code field from the payment step and collapse it into a text link in the cart.
  6. Apply personal codes automatically from the link, so the shopper never goes looking online.
  7. Limit the validity period and the number of uses — otherwise the code turns into the permanent price.
  8. After the campaign, check participants’ return rate and repeat purchases: if discount buyers do not come back, the campaign bought one-off turnover rather than customers.