Playbook · Updated October 7, 2026

Running a promotion

Launching a discount code without surprises: creating it in the right environment, setting limits, testing it before you announce it, and pausing it.

A promotion code is easy to create and easy to get subtly wrong — the wrong environment, a missing limit, a code nobody tested. This playbook walks the dashboard from idea to launch. For how codes behave at the edges, see Discounts.

Before you start

  • Pick the environment. Codes belong to one environment, so SUMMER25 in a test environment is a different code from SUMMER25 in production. Switch the top-bar environment selector to production before creating the real one.
  • One code per cart. Codes don’t stack; applying a second replaces the first.
  • You’ll need a role that can change application settings — the finance and viewer roles don’t see Discounts.

Create the code

Open Discounts and click Create discount:

FieldNotes
CodeWhat buyers type. Saved in upper case.
TypePercentage off or Fixed amount off
Value1–100 for a percentage, or an amount
Minimum order totalOptional — the subtotal a cart must reach
Usage limitOptional total cap across everyone. Blank means unlimited.
Uses per customerDefaults to 1. Use 0 for unlimited.
Expires atOptional, e.g. 2026-12-31T23:59:59Z
DescriptionYour internal name for it

Then Create.

Set a usage limit on anything you’ll post publicly. A code without one keeps working for anyone who finds it until it expires or you disable it.

A start date and product scoping (limiting a code to certain SKUs) are set through the API rather than the dashboard — see Discounts for developers.

Test it before you announce it

Use the Validate preview card on the same page. Enter the code, a test order total, and optionally a customer, then Validate. You’ll see whether it’s valid, how much it takes off, and the total — or the exact reason it would be rejected (inactive, not started, expired, used up, customer already used it, below the minimum).

Test the edges you care about: an order just under the minimum, a customer who has already used it.

Edit or pause

Edit changes the value, limits, and expiry, and has an Active at checkout switch. Disable pauses a code instantly and Enable brings it back — reversible, and recorded in the audit log. Prefer disabling to deleting.

Delete removes a code permanently, and any checkout that hasn’t finished can no longer apply it.

See how it did

The Uses column shows how many times each code has been redeemed against its limit. Below the codes, the Performance panel shows the last 7, 30, or 90 days: orders that used a code, the revenue on those orders, and the discount given — in total and for your top ten codes. It counts paid orders and doesn’t deduct refunds.

You can also ask an AI assistant — “how did SUMMER25 do?” — which reads the same figures.