Promo codes at the till (in-store)
How staff can apply promo codes during in-store checkout
Promo Codes at Checkout (In-Store)
Staff can apply promo codes during the checkout process for in-store appointments. The system validates all settings before allowing redemption.
Enabling In-Store Usage
To allow promo codes at checkout:
- Edit the promo code
- In the Settings section, enable "Allow In-Store"
- Save the code
How Staff Apply Codes
During checkout:
- Open the checkout drawer for an appointment
- Find the "Promo Code" section
- Enter the promo code
- Click "Apply" to validate
- See the discount applied to the totals
- Complete the checkout with the discount applied
Validation Rules Checked
When staff apply a code at checkout, the system validates:
Basic Validation
- Code exists and is active
- Code is within validity date range
- Code allows in-store channel
Usage Validation
- Total usage limit not exceeded
- Per-customer usage limit not exceeded
Customer Validation
Based on customer scope:
- All Customers - Any customer
- VIP Only - Customer must be VIP
- Tagged Only - Customer must have required tags
- New Customers Only - First-time customer
- First-Time Only - Customer's first booking ever
Service Validation
- Validates against the appointment's service
- Checks service category if category restrictions apply
Staff Validation
- Validates against the staff member assigned to the appointment
Amount Validation
- Checks against the appointment subtotal
Date Validation
- If appointment date range is set, validates the appointment date
Discount Calculation
The discount is calculated after validation:
- Percentage: Subtotal x (percentage / 100), capped at max discount if set
- Fixed Amount: Direct discount amount, not exceeding subtotal
Tax is calculated on the discounted subtotal.
Redemption on Completion
When checkout is processed:
- Promo code is validated again
- Invoice is created with discount applied
- PromoCodeRedemption record is created with:
- Customer information
- Staff who processed
- Original and final amounts
- Channel marked as "IN_STORE"
- Link to invoice and appointment
- Appointment status is updated to COMPLETED
Manual Discount vs Promo Code
Note: Promo codes take priority over manual discounts. If a promo code is applied, any manual discount is ignored to prevent double-discounting.
Use case scenarios
Scenario 1: Customer brings a code from email
"I got an email with WINTER20", customer says. Reception types it at checkout, validates, applies. Customer pays the discounted total.
Scenario 2: Customer doesn't know about promotions
Reception checks active codes ("we have SUMMER15 that applies"), informs the customer. Customer feels like she got a deal she didn't know about.
Scenario 3: Wrong code rejection
Customer gives an old code. System rejects with "Code expired". Reception apologizes, no awkwardness, transaction continues at full price.
Scenario 4: Manual discount conflict
Stylist already gave a 10% friend discount manually. Then promo code gets applied. System uses promo code, discards manual. Reception explains.
Tips for staff
- Always validate before completing checkout: easier to catch errors before than after.
- Check the discount preview: confirm the amount makes sense.
- Read error messages clearly: each one tells you exactly why.
- Promo codes override manual discounts: don't try to stack.