Discount codes
A code the client enters at checkout for a discount — created through the loyalty rules.
A discount code is a string the client types at checkout to get a lower price: MARCH20, INSTA10, VIP. This article follows a code end to end — where it’s created, what the text itself is allowed to contain, exactly what the client sees at checkout, and why a code sometimes isn’t accepted.
A code is created as a loyalty rule, not in the promotions area. The path is Setup → Loyalty → new rule → the Promo code template. The creation steps are in Promo codes.
1. Rules for the code itself
| Rule | Value |
|---|---|
| Length | 2–32 characters |
| Allowed characters | Latin letters A–Z and digits 0–9 only |
| Lowercase | converted to uppercase automatically |
| Spaces, hyphens, accents, symbols | not allowed — stripped as you type |
| Uniqueness | one active code can belong to only one rule |
Error messages at creation time:
| Message | Cause |
|---|---|
| Enter a promo code. | the field is empty |
| Code must be at least 2 characters. | the code is too short |
| Code can be at most 32 characters. | the code is too long |
| Only letters A–Z and digits 0–9 are allowed. | there’s a space, hyphen or accented character |
| Another active rule already uses this promo code. Pick a different code or archive the other rule first. | the code is taken by another rule |
Don’t use accented or non-Latin letters. They’re simply removed as you type.
Tips for picking a code: short and easy to say on the phone; avoid confusable characters (0 and O, 1 and I); a separate code per channel (INSTA10, FB10, FLYER10) so you can tell what works.
2. What the client sees at checkout
The checkout screen on the public page has a row reading I have a promo code. Tapping it opens a field:
- The field is labelled Promo code. What’s typed is displayed in capitals.
- To the right is an Apply button (or the client presses Enter).
- On success the row becomes a confirmation, e.g. Promo WELCOME (−10%) ✓, and the total recalculates.
- If the code has a ceiling, Maximum discount with this code: … is shown.
- There’s also Remove promo code if the client changes their mind.
3. Every failure message
If the code doesn’t go through, the specific reason appears under the field. Here’s what each means — this is the table you want when a client phones you:
| Message to the client | What happened | What to check |
|---|---|---|
| Invalid promo code. | no such code | spelling; whether the rule was archived |
| This code has expired. | today is outside the rule’s window | Valid from / Valid until in the “Who qualifies” step |
| This code has reached its usage limit. | the usage limit or budget is exhausted | the budget in the Advanced step |
| This code doesn’t apply to the selected service. | the rule is limited to certain services | the service list in “Who qualifies” |
| This code doesn’t apply to your account. | the client isn’t in the target group | the rule’s eligibility conditions |
| Your order doesn’t reach the minimum for this code. | a minimum spend is set | the minimum amount in the rule |
| Sign in to use this code. | the rule requires an identified client | the client must sign in |
| This booking is paid with a package, so promo codes don’t apply. | paying with a package or membership | expected behaviour; the package is already a discount |
| This code can’t be applied to this booking — check it, or sign in for details. | a combination of causes | walk the rows above |
| This code couldn’t be applied. | a generic error | retry; if it repeats, inspect the rule |
4. A code on a banner
A banner can show the code directly on the public page.
- In Setup → Banners, open the banner.
- In the Button section set Action → Copy code.
- Fill in Code to copy. The hint reads 2–32 chars: letters, digits, dashes, underscores. Auto-uppercased.
- Optionally link the banner to the rule in Link a loyalty rule — then a chip labelled Use code appears next to the button.
The client taps the chip and sees Code XXX copied, then pastes it into the checkout field.
Careful — these are two different fields. The code on a banner is plain text that only gets copied. It does not create a discount. If it doesn’t match the loyalty rule’s code letter for letter, the client copies something checkout will reject with Invalid promo code.
Note the allowed characters differ too: the banner field accepts dashes and underscores, the rule does not. Stick to letters and digits in both to be safe.
Linking the banner to the rule also buys you automatic protection: an expired or archived rule hides the whole banner, so the code stops advertising itself.
5. Where to hand out the code
| Channel | Advice |
|---|---|
| Instagram / Facebook post | put the code in the copy and the page link in your bio |
| A banner on your page | for visitors who already got there |
| Print material | a short code that’s easy to copy out |
| A partner business | a separate code per partner so you can measure it |
| A private message to a client | a code with a short deadline works better |
Don’t try to email a code through Mountify — the product has no campaign emails to clients. The only email channels are confirmation, reminder and review request.
6. How to check a code works
- Open your public page in a private/incognito window.
- Pick a service and get to checkout.
- Press I have a promo code, type the code and press Apply.
- Confirm the total drops by exactly the expected amount.
Do this before the advert goes out. Five minutes of testing saves a hundred phone calls.
7. How to stop a code
| You want to… | Do this |
|---|---|
| Stop the code on a given day | fill in Valid until on the rule |
| Stop it right now | archive the rule in Setup → Loyalty |
| Cap the spend | fill in the total budget in the Advanced step |
| Cap a single application | fill in the Discount ceiling |
| Reuse the same code later | restore the rule from the archive, or create a new one with the same code |
Archiving a rule frees the code — you can use it again in a new rule.
8. Troubleshooting
A client says the code is rejected but it works for me. Ask them to read the exact message under the field and match it against the table in section 3. The usual causes are an expired window and a code limited to other services.
The code works but the discount is smaller than expected. The Discount ceiling probably kicked in. Check the Advanced step.
The code works but the discount is bigger. Two combinable rules are stacking. See Stacking and budgets.
I can’t create the code — “already uses this promo code”. Another rule holds it. Find it in Setup → Loyalty and archive it, or pick a different code.
A client with a package can’t use a code. That’s deliberate. The package already carries a discount and the two don’t combine.
What’s next
- Promo codes — building the rule step by step.
- Promo codes & discounts — the map of every discount mechanism.
- Seasonal campaigns — a code with a start and an end.
- Create a banner — how the code reaches a banner.