How to Create and Manage Discount Codes
Step-by-step guide to creating flat and percentage discount codes in Woven admin — scoping to classes, courses, or both, setting expiry dates and per-client limits, and understanding what clients see on the booking form.
Discount codes let you offer a price reduction to specific clients or groups without publicly changing your prices. You manage all codes from the Discounts accordion in your admin settings.
Creating a Discount Code
Open the Discounts section in your admin settings and click the add button. You will be prompted to fill in a short form:
Code — Enter the code text clients will type on the booking form. Codes must be 3 to 20 characters, uppercase letters and numbers only (for example: WELCOME10, REFER20, JAN25). Each code must be unique within your account.
Type — Choose either Flat amount or Percentage:
- Flat amount reduces the price by a fixed value in pence (for example, a value of 1000 = £10 off).
- Percentage reduces the price by a whole-number percentage (for example, 20 = 20% off). The discount is floored at zero — a code can never push a price below £0.
Value — The amount to discount. For flat codes, enter the value in pence. For percentage codes, enter a number between 1 and 100.
Expiry date — Optional. If you set a date, the code stops working after that date and shows as Expired in your admin. Leave the field blank and the code never expires.
Uses per client — Optional. Limits how many times a single client can redeem the code. The default is 1. Leave the field blank to allow unlimited uses per client.
Scoping a Code to Classes, Courses, or Both
Every code has an Applies to setting that controls which booking type the code works for:
- Both (default) — the code applies to one-off classes and multi-week courses.
- Classes — the code applies only to one-off class bookings.
- Courses — the code applies only to multi-week course bookings.
If a client enters a code on a booking form that does not match the code’s scope — for example, a courses-only code on a class booking — the code will not apply and they will see an error.
Single-class limitation. You cannot restrict a code to one specific class. Codes apply across all bookings of the permitted type for your business. If you want to target a particular session, use a naming convention instead: a code like TUESDAY10 or MORNINGYOGA signals the intended use, even though Woven does not enforce that restriction technically. Pair this with a per-client limit of 1 to keep redemptions in check.
What Clients See on the Booking Form
When a client opens a paid booking page, a discount code field appears above the payment button.
- The client enters their code and taps Apply.
- The price summary updates immediately — showing the original price, the discount amount, and the new total — without a page reload.
- The client proceeds to pay at the adjusted amount.
If the code is not valid, clients see a clear error message:
- “Code not recognised.” — the code does not exist for this business.
- “This code has expired.” — the expiry date has passed.
When a code reduces the price to £0, the booking routes through the free booking flow. The button label changes to Book for Free and the client confirms without entering card details — no Stripe checkout, no £0 payment screen.
Per-Client Limit Behaviour
How the uses-per-client limit is enforced depends on whether the code is a 100%-off code or a paid discount:
100%-off codes — the free booking flow checks usage before confirming. A repeat attempt is blocked immediately and the booking does not complete. There is nothing to reconcile afterward.
Paid discount codes — the limit cannot be enforced before payment, because Stripe collects the client’s phone number at checkout. If a client exceeds the limit, the booking completes and payment is taken, but Woven flags the breach for you to review after the fact.
For this reason, 100%-off codes provide a hard guarantee on reuse; paid codes provide a flag-and-review safety net.
Managing Your Codes
In the Discounts section of admin settings, each code shows its current status — Active (green) or Expired (grey) — alongside the code text, type, value, and per-client limit.
Editing — You can edit any code after creating it: change the value, update the expiry date, or adjust the per-client limit.
Deleting — You can delete a code at any time. Deleting a code removes it from your list but preserves any booking records that used it — past bookings are unaffected.
There is no separate activation step: a code is active as soon as you save it, provided it has no expiry date or the expiry date has not yet passed.
Tips
Use a naming convention for single-class intent. Since codes apply to all bookings of a given type, a name like TUESDAY10 or NEWCLIENT communicates the intended use to recipients even though Woven does not restrict by specific class.
The default per-client limit of 1 is usually right. Loyalty rewards, referrals, and first-session trials are each meant for a single redemption per person. The default is already set to 1 — only change it if you have a deliberate reason to allow multiple uses.
Reserve 100%-off codes for high-trust cases. Free codes are the only type that blocks reuse instantly. For situations where you need a hard guarantee — first-session trials, specific gifted sessions — a 100%-off code gives you that without any after-the-fact review step.
Scope codes deliberately. If you run both classes and courses, a courses-only code ensures clients cannot accidentally (or intentionally) apply it to one-off sessions, and vice versa. Use the Applies to setting rather than relying on clients reading the code name.
Check for limit breaches after paid promotions. If you share a paid code widely, some clients may attempt to redeem it more than once. Woven flags these rather than blocking them mid-checkout, so a periodic check of your bookings keeps things clean.
Related: