Pricing & Discounts

Limit a promo code to specific booking dates

Set a booking-date window so a promo code discounts only reservations and events that start on the dates you choose, separately from the dates the code itself can be redeemed.

A booking-date window ties a promo code to the date being booked rather than the date the customer buys. Use it to fill a quiet Tuesday, run a one-day promotion, or discount a holiday weekend while still letting people book weeks ahead. (About 2 minutes. You need an existing or new promo code.)

Booking dates vs. valid dates — they answer different questions

The promo code form has two date ranges, and they are independent. Setting one does not set the other.

FieldsWhat they controlExample
Valid From / Expires AtWhen the customer can redeem the code. The checkout window.The code stops working after March 31.
Bookings from / Bookings untilWhich dates can be booked with it. The court date.The code only discounts bookings on March 8.

A code can have both. "Sell it all February, but it only discounts play on March 8" is Valid From February 1, Expires At February 28, Bookings from and Bookings until both March 8.

Before you begin

  • The code must be an Orders code — the kind that discounts reservations, events, products, and packages. Codes set to Memberships & subscriptions have no booking date, so the section is hidden for them.
  • Decide the dates in your club's local time. Both fields are read in the club's timezone, not the customer's and not yours.

Set the booking-date window

  1. Go to Promo Codes in the admin panel.
  2. Open the code you want to change with View Promo Code, or click Add New Promo to create one.
  3. Scroll to the Usage Limits & Validity section.
  4. Find the Booking dates group at the bottom of that section.
  5. Pick a date in Bookings from — the earliest date a customer may book with the code.
  6. Pick a date in Bookings until — the latest date a customer may book with the code.
  7. Save the code.

The three shapes you can set

  • A range — fill both fields. The whole of the first day and the whole of the last day are included.
  • A single day — pick the same date in both fields. This is the shape for a one-day promotion.
  • An open end — fill one field and leave the other empty. Bookings from alone means "this date onward"; Bookings until alone means "up to and including this date".

Leaving both empty removes the restriction, and the code discounts any booking date again.

What customers see

A customer whose booking falls outside the window is told so by name at checkout, in your club's dates:

Promo code "SPRING" is only valid for bookings on Mar 8, 2026.

The wording follows the shape you set — on one day, between two dates, from a date, or until a date. The discount is refused rather than quietly reduced, so nobody pays a surprise amount.

Where the window appears afterwards

  • On the Promo Codes list, the code's row shows its booking window next to the word Bookings.
  • On the code's detail page, a Booking dates row shows the same window.
  • A code with no window shows neither, rather than displaying "any date".

Good to know

An event is judged as a whole. For a league, clinic, or any program with several sessions, every session must fall inside the window. A four-week league that starts inside your window but ends after it is refused, even if the customer is looking at a session that is inside. This is deliberate: the customer pays once for the whole program, not per session, so a partial match would discount dates you fenced off.

A cart with several bookings must pass entirely. If someone books three courts in one order and one of them is outside the window, the whole order is refused rather than discounting the other two.

Cancelled sessions are ignored. A session you have cancelled does not count against the window.

A booking-date code cannot be used on retail alone. If the cart holds only store products or booking-pass packages, there is no booking date to check, so the code is refused with "only applies to bookings." Use a separate code for retail promotions.

If something goes wrong

  • A customer says the code is refused, and the date looks right to you — check the timezone. The window covers whole days in the club's timezone, so a late-evening slot that is already the next day in UTC is still inside the club's day.
  • Someone joining a multi-week program is refused, though the session they picked is inside the window — every session of that program has to be inside. Widen Bookings until to cover the last session, or use a code without a booking window for that program.
  • The code works on courts but is refused at checkout for a product — the cart has no booking in it. A code carrying a booking window only applies to reservations and events.
  • You cannot find the Booking dates group — the code is set to Memberships & subscriptions under What kind of code is this?. Switch it to Orders, and note that switching clears any booking dates already set.
  • The code discounts bookings you meant to exclude — check that you set Bookings from / Bookings until and not Valid From / Expires At. The second pair limits when the code can be typed in, not what it discounts.