Discount Codes

Feature

Discount Codes

Create discount codes for your clients — flat or percentage, scoped to classes, courses, or both, per-client limits, and inline validation on your booking form.

Why Small Business Owners Need Discount Codes

Most small business owners have goodwill to give. The client who sent three friends your way deserves a thank-you. The person who’s been curious but hasn’t booked yet might commit with a first-session discount. The regular who can’t always afford full price shouldn’t have to ask awkwardly.

But most booking tools either don’t support discount codes at all, or they’ve buried them behind a higher-tier plan, or the client experience is clunky enough that you end up handling it manually — a WhatsApp message, a bit knocked off the next invoice, a cash refund at the door. That creates admin noise and it doesn’t look professional.

Discount codes for small business — sometimes called voucher codes — are built directly into Woven’s booking form. Clients enter a code, see the adjusted price before they pay, and book in one flow. No redirects. No wondering whether it worked.

How Discount Codes Work in Woven

You manage discount codes from the Discounts accordion in your admin settings — the same interface pattern as your locations and FAQs. Creating a code takes about thirty seconds:

  1. Open the Discounts section and click the add button.
  2. Enter your code — any combination of letters and numbers, 3 to 20 characters. Something like WELCOME10, REFER20, or JAN25.
  3. Choose the type: flat amount (e.g. £10 off) or percentage (e.g. 20% off).
  4. Set the value — pence for flat codes, a whole number for percentages.
  5. Choose what the code applies to: Classes, Courses, or Both. The default is Both — a code created without changing this works for every booking type you offer. Set it to Classes if you want it accepted only on single-session bookings, or Courses if it’s meant for multi-week enrolments only.
  6. Optionally add an expiry date. Leave it blank and the code never expires.
  7. Optionally set a per-client usage limit. The default is 1 use per client.
Woven admin Discounts accordion showing three discount codes with Active and Expired status pills, code names, discount values, and per-client usage limits

Each code in your list shows its current status at a glance: Active (green) or Expired (grey). You can edit any code after creating it, and delete codes you no longer need — deleting a code preserves the booking records that used it.

Discount codes are included at no extra cost. The same 1.5% platform fee applies to paid bookings, calculated on the discounted amount.

What Clients See on the Booking Form

When a client opens a paid class or course booking page, they see a discount code field above the payment button. The flow is simple and immediate:

  1. Client enters their code and taps Apply.
  2. The price summary updates on the spot — Original, Discount, and Total — without a page reload or redirect.
  3. If the price looks right, they confirm and pay at the adjusted rate.
Woven booking form showing a discount code applied with original price crossed out and discounted total displayed

The error messages are plain. If a code doesn’t exist: “Code not recognised.” If a code has passed its expiry date: “This code has expired.” If a code isn’t valid for that booking type — for example, a courses-only code used on a single-session booking — the client sees a clear message telling them it doesn’t apply. No vague failure states.

When a 100% discount brings the price to zero, the booking routes through Woven’s free booking flow — no Stripe checkout, no £0 payment screen. The button label changes to “Book for Free” and the client confirms without entering card details. It works cleanly, exactly like booking a free class, with nothing special required on your end.

One small UX detail: if a client’s session expires while they’re mid-booking and they reload the page, the ?discount_error= URL parameter restores any error message automatically. They don’t lose their place or need to re-enter the code.

Per-client limits work differently depending on the code. For 100%-off codes, a second attempt is blocked instantly — the free booking flow checks usage before confirming, so there’s nothing to reconcile afterward. For paid discounts, Woven can’t pre-reject: Stripe only collects the client’s phone number after payment, so it flags a limit breach for you to review — the booking still completes since the payment’s already been taken.

Use Cases — How Small Business Owners Use Discount Codes

Discount codes for small business aren’t about running mass promotions. Most useful cases are targeted: one code, one person, one purpose.

Loyalty rewards for regulars Create a personal code — something like THANKS20 — and send it directly to a long-standing client. They feel recognised. You haven’t publicly discounted your prices.

Referral incentives Give a referring client a code to pass on. Set it to one use per new client so it can only be redeemed once by each person who receives it, without you having to track anything manually.

First-session free trials A 100% discount code for a specific new client routes cleanly through the free booking flow. No cash exchanged, no workarounds, no awkward conversation about money.

Course enrolment promotions Set a code’s scope to Courses and it applies only to multi-week enrolments — it won’t be accepted on single-session bookings. Useful when you want to run a course launch offer without discounting your regular class schedule.

Seasonal and early-bird promotions Set an expiry date when you create the code and share it publicly. When the date passes, the code stops working automatically — you don’t need to remember to disable it.

Flexible pricing for specific clients A flat-amount code that reduces the price significantly (or to zero) for clients who need more flexible access. Per-client limits mean it stays targeted rather than becoming an open discount.

Use caseCode typeApplies toPer-client limitExpiry
Referral thank-youFlat or %Both1Optional
New client trial100%Classes1Optional
Course launch offer%CoursesUnlimitedYes
Seasonal promotion%BothUnlimitedYes
Loyalty rewardFlat or %Both1None

The per-client limit is the detail that makes this genuinely useful as a retention tool rather than a marketing gimmick. For free codes, it’s an instant hard stop. For paid codes, you get a clear flag if the limit’s been hit, so nothing slips through unnoticed even if you’re reviewing it after the fact.

No Complex Setup. No Tier Gating.

Major booking platforms treat promotional codes as a higher-tier feature — something you unlock after committing to a more expensive plan. Glofox and Mindbody reference discounts in their enterprise feature lists. Momoyoga’s codes redirect clients to a separate page, which breaks the flow before they’ve confirmed anything.

Woven’s discount codes are available to every business from day one. They’re built into the online booking flow, connected directly to payments — so a 100% discount correctly bypasses Stripe rather than creating a £0 charge — and the per-client tracking works alongside client management without any additional configuration.

There’s no campaign manager to configure. No additional dashboard to learn. You create a code in your admin settings, share it with whoever you have in mind, and Woven handles the validation, scope check, price adjustment, and booking confirmation automatically.

Tips for Getting the Most from Woven Discount Codes

Use the applies-to scope to target classes or courses, and naming conventions for single-class intent. Scoping a code to Classes or Courses is enforced by Woven — a courses-only code won’t be accepted on a single-session booking. Restricting to one specific class isn’t supported at the code level, so a name like TUESDAY10 or MORNINGYOGA signals the intent even though Woven doesn’t enforce it itself.

Set a per-client limit of 1 by default. It’s already the default when you create a code, and it’s the right choice for almost every use case — loyalty rewards, referrals, and trials are all meant for a single redemption, not repeat use.

Reserve 100%-off codes for your highest-trust cases. Free codes are the one type Woven blocks instantly on reuse — ideal for first-session trials where you want a hard guarantee, not just a flag to review later.

Check for discount_over_limit alerts if you’re running paid promotions widely. A paid discount that’s reused beyond its limit still completes the booking — Woven flags it for you rather than blocking the client mid-checkout, so a quick review keeps things on track.


Get started with Woven — free to start, no monthly fee.


Related:

Frequently Asked Questions

What types of discount codes can I create?

Two types: flat amount (e.g. £5 off) or percentage (e.g. 20% off). Both are created from the Discounts accordion in your admin settings. You set the code text, the type, the value, what it applies to (classes, courses, or both), an optional expiry date, and an optional per-client usage limit.

What happens when a discount reduces the price to £0?

The booking routes through Woven's free booking flow — no Stripe checkout, no awkward £0 payment. The client applies the code on the booking form, the button changes to 'Book for Free', and they confirm without entering card details.

Can I limit how many times one client uses a code?

Yes. The 'uses per client' field lets you set exactly how many times a single client can redeem a code — the default is 1. Leave it blank for unlimited uses. For 100%-off codes, a repeat attempt is blocked instantly. For paid discounts, Woven flags a limit breach for you to review after the fact, since payment's already been taken by that point.

Can I set an expiry date on a discount code?

Yes. The expiry date field is optional — if you leave it blank, the code never expires. Once the expiry date passes, the code shows as Expired in your admin and returns 'This code has expired.' to any client who tries to use it.

Do clients need to do anything special to use a code?

No. When a client books a paid class or course, a discount code field appears on the booking page. They enter the code, click Apply, and see the adjusted price immediately — original, discount, and total. No page reload, no redirect. If the code is invalid, expired, or not valid for that booking type, they see a clear error message.

Can I restrict a code to specific classes?

You can scope a code to **Classes**, **Courses**, or **Both** — so if you want a code that only works for one-off sessions and not for course enrolments (or vice versa), that's supported. What isn't yet supported is restricting a code to one specific named class. The workaround is naming conventions: a code like `TUESDAY10` signals who it's for even though Woven doesn't enforce the restriction itself. Pair that with a per-client usage limit to keep it targeted.

Can a discount apply to courses as well as classes?

Yes. When you create a code, you choose what it applies to: Classes, Courses, or Both. The default is Both, so a new code works across all your booking types until you change it. Set it to Courses for a course-only discount, or to Classes to limit it to single-session bookings.

Woven

Talk to WhatsApp. Run Your Business 🚀

Handling the proverbial mess to ensure your business runs smoothly so you can focus on the things you are great at.