Discount codes
Discount codes give clients a percentage or fixed price reduction when they enter the code during online checkout. Codes are managed on the promotions page (Configurations > Promotions), on the Discounts tab. There is no editing dialog: the tab is an inline-editable table, and each row saves as soon as you change a field. For the client's side — entering the code in the online booking cart — see Promotions in online booking. Codes need the Promotions and Vouchers modules; see Promotions for all prerequisites.
Overview
Every code is one row in the table. Add discount adds a new row; fill in its fields directly in the table. There is no save button and no active/inactive switch — a code is live from the start and applies for as long as it is within its validity dates and limits. To pause a code, set Valid until to today's date. The only other lifecycle action is deleting it with the delete icon at the end of the row, which removes it immediately and without confirmation.
Editing requires the Configuration & settings right with Manage; without it the table is read-only. The Columns button in the table header adds audit columns showing who created or last changed a row, and when. The table does not show how often a code has been used so far.
| Column | What it does |
|---|---|
| Code | What clients type at checkout. |
| Valid from / Valid until | When the code can be redeemed. |
| Max uses | How many orders may use the code in total. |
| Max value | The total amount the code may deduct across all orders. |
| Discount type / Discount value | % percent or Fixed, and the size of the reduction. |
| Sessions | Which session resources the code covers; empty = the whole cart. |
| Client groups | Which member groups may use the code; empty = everyone. |
Code
Enter the Code clients will type at checkout. It is converted to capital letters automatically as you type, and clients may type it in any case. A code text can exist only once in your organisation — also after its row has been deleted — so a new campaign needs a new code text.
go flow never shows the code to clients on its own. Publish it yourself, for example in an announcement or an email.
Validity period
Valid from and Valid until bound when the code can be redeemed. Leave either date empty to leave that side open.
- Valid from — the code works from 00:00 on that date.
- Valid until — the code stops working at 00:00 on that date, so that date itself is no longer included. To let a code run through 31 October, choose 1 November.
Times are midnight in the time zone of the computer you picked the date on.
Usage limits
- Max uses — how many orders may use the code in total. One order counts as one use, however many places it books. A use is counted when the order is paid, or confirmed without payment (for example when wallet credit or a voucher covers the rest). A cart that is abandoned does not count. Clients who are already checking out when the last use is taken still receive the reduction, so the limit can be exceeded by a few orders.
- Max value — a cap on the total amount the code may deduct across all orders. The order that reaches the cap still receives its full reduction; after that the code stops applying.
Leave either field empty for no limit. Once Max uses is reached, the cart rejects the code with "Invalid voucher code"; Max value is only checked when the client checks out.
Discount type and value
Choose the Discount type — % percent or Fixed — and enter the Discount value.
- % percent — that percentage of the amount the code covers. Enter a value between 1 and 100.
- Fixed — that amount, deducted once per order (not per place), and never more than the amount the code covers.
How a code deducts
| Sessions setting | What the code reduces |
|---|---|
| Empty (unscoped) | The whole cart: sessions, treatment appointments and products such as a gift voucher bought in the same cart. |
| Session resources selected (scoped) | Only the places on sessions of the selected session resources. Treatment appointments and products are never covered. |
The reduction is spread over the covered lines in proportion to their price. A gift voucher bought with an unscoped code carries the amount the client actually paid for it, not its list value — a CHF 100 voucher bought with a 20% code is worth CHF 80. Cancellation refunds are also based on the amount actually paid.
A client may enter several different codes in one cart; each is deducted in turn, a percentage from the amount that is left. How a code combines with an automatic early-bird or last-minute price depends on Allow discount stacking, see Combining discounts.
Clients can enter a code only in a cart that holds at least one session or treatment appointment; a cart with products only has no code field. Pay at the desk is not offered once a code is applied.
Codes limited to sessions. A code with Sessions set is accepted in the cart when the cart holds a place on a covered session; otherwise it is refused with "This code is not valid for the sessions in your cart". The cart shows the amount checkout will deduct: a percentage code limited to sessions appears as the amount off the covered places, not as a percentage of the whole cart. To reduce certain sessions automatically, without a code, use a pricing rule with Sessions set on the Pricing promotions tab.
Client groups
Client groups limits the code to clients in the selected groups; when empty, anyone can use it. The select is only available when your organisation has a Group membership field (see Client groups). A client in any one of the selected groups qualifies.
Membership is checked on the client record when the client checks out, not when the code is typed: the cart accepts the code for anyone and shows the reduction, and checkout then drops it for a client outside the groups, who is asked to pay the full price. Merely knowing the code does not make a client eligible. Check both an eligible and an ineligible client before making a members-only offer public — the test is described in Run a promotion or discount code.
Changing or ending a code
Every change applies to checkouts after the dashboard has synchronised it. Orders that are already paid or confirmed never change.
| Change | Existing bookings and orders | Carts in progress |
|---|---|---|
| Edit Discount type, Discount value, Sessions or Client groups | Unchanged | Checkout uses the new values. |
| Change the Code text | Unchanged | The old text no longer matches; a client who added it gets no reduction at checkout. |
| Valid until passed, or a limit reached | Unchanged | No reduction at checkout. |
| Delete the row | Unchanged; the order keeps its discount | No reduction at checkout. The code text stays reserved. |
In every "no reduction at checkout" case the cart and the order summary may still show the reduction the client saw when they entered the code; the amount on the payment page and on the receipt is what counts. In Orders, a code's reduction appears in Discount total.