CourtBook — User Guide

CourtBook — Complete User Guide

Version 0.5.1 · A booking system for recurring classes

This guide assumes no technical knowledge. Everything is done from your WordPress dashboard.


Contents

  1. How CourtBook thinks
  2. First-time setup
  3. Creating your first class
  4. Putting booking on your website
  5. Your dashboard
  6. Managing bookings day to day
  7. Customer records
  8. Packs and passes
  9. Price tiers
  10. Discount codes
  11. Booking questions (e.g. Tennis Level)
  12. Emails your customers receive
  13. Moving from Amelia
  14. Common tasks
  15. Troubleshooting

1. How CourtBook thinks

Three ideas, and everything else follows:

A Class is a template. “Beginner Tennis, Tuesdays and Thursdays at 6pm, 6 people, $50.” You set this up once.

A Session is one dated instance of that class. Tue 4 Aug at 6pm. CourtBook generates these automatically from your class — you never create them one by one.

A Booking is one person in one session. With their contact details, what they paid, and any extra info you asked for.

Why this matters: the old system made you build every single date by hand. CourtBook asks for the pattern once and produces the whole season.


2. First-time setup

Payments

Go to CourtBook → Settings.

Choose Stripe (recommended to start), then paste in three keys from your Stripe dashboard:

Field Where it comes from Notes
Publishable key Stripe → Developers → API keys Starts pk_ — safe, used by the booking form
Secret key Same page Starts sk_ — keep private, never share
Webhook signing secret Stripe → Developers → Webhooks Starts whsec_

For the webhook: in Stripe, add an endpoint pointing at the URL shown on the Settings page, and subscribe it to payment_intent.succeeded.

Use test keys first. Stripe gives you a test mode with a fake card (4242 4242 4242 4242, any future expiry, any CVC). Do a full practice run before switching to live keys.

Secret fields show blank after saving — that’s deliberate. Leave them blank when editing other settings and your saved keys stay untouched.

Check your emails work

CourtBook sends booking confirmations through your site’s normal email. If your site can’t send email reliably, customers won’t get confirmations. If you’re unsure, send yourself a test booking and check it arrives — including the spam folder.


3. Creating your first class

CourtBook → Classes → Add class

Field What to enter
Name What customers see, e.g. “Beginner Tennis”
Capacity Maximum people per session. Extras go on a waitlist automatically
Price Standard price per session
Duration Minutes
Location e.g. “Court 1” — appears in confirmation emails
First class starts Date and time of the very first session

The recurrence section

This is the part that saves you hours.

  • Repeats — One-off, Daily, Weekly, or Monthly
  • Every N — 1 = every week, 2 = every other week
  • On days — tick Tue and Thu for a twice-weekly class
  • Repeat until — last date of the season

Monthly gives you two styles: the same date each month (“the 15th”), or the nth weekday (“second Tuesday”, “last Friday”).

Click Save & generate occurrences. You’ll see something like “Generated 13 occurrences.” That’s your whole season created.

Changing a class later

Edit and save again. Important: if you change the days or times, the old sessions stay put — CourtBook won’t delete sessions that might already have bookings. Cancel the unwanted ones manually from the Bookings screen.


4. Putting booking on your website

Create a page (e.g. “Book a Class”) and add this text into it:

Loading classes…

That’s it. The page will show your upcoming sessions with prices and spots remaining.

To show fewer classes:

Loading classes…

What customers see

  • Any packs you’re selling, at the top
  • Each upcoming session with date, price, and spots left
  • Full sessions show “Full — join waitlist” rather than just failing
  • A booking form asking for name, email, phone, plus any questions you’ve set up
  • Card payment, if you’ve connected Stripe

5. Your dashboard

CourtBook → Dashboard is the first thing you see. It answers “what do I need to know right now?”

Next class — the very next session, with how many are booked out of capacity.

Bookings (next 7 days) — sessions running, bookings taken, and how many people are waiting.

Revenue (last 7 days), with last 30 days underneath. This counts money actually collected through Stripe — not bookings you comped or marked as pay-later, so it won’t flatter you.

Needs attention — the one panel worth checking daily. It lists only real problems:

  • Someone promoted off a waitlist who still owes you money
  • Classes that are full, where you might want to add a session
  • Customer packs expiring within 14 days with credits unused — a good excuse to nudge them

If nothing’s wrong it says All clear.

Recent bookings — the last five, so you can see activity at a glance.

The dashboard refreshes as soon as anything changes. If a number looks stale, reload the page.


6. Managing bookings day to day

CourtBook → Bookings is the screen you’ll live in.

Pick a session from the dropdown and you get everything on one screen:

The roster — every person booked, with name, email, phone, their answers to your questions (like tennis level), and their status:

  • 🟢 Confirmed — they have a spot
  • 🟡 Waitlisted — waiting for someone to drop out
  • ⚪ Canceled

Add a booking — put someone in yourself. Useful for phone bookings, or to make a class look fuller before it fills naturally. Choose Comp (free) or Drop-in.

Email everyone in this class — one message to the whole roster. This is your rain-cancellation button.

Print roster — a clean printable list with an Attended column, for taking to court.

Download CSV — the same roster as a spreadsheet file, including everyone’s answers to your booking questions. Opens in Excel or Numbers.

Editing one session

Sometimes a single date moves — a court’s double-booked, or you want to squeeze in extra people that week.

Click Edit session. You can change the start time and the capacity for that date only, leaving the rest of the season alone.

CourtBook won’t let you set a capacity below the number of people already booked into that session. If you try, it refuses and tells you why, rather than silently bumping someone.

Cancelling a whole session

Rain, illness, court closure — click Cancel this session.

Everyone booked is cancelled in one go, with pack credits returned and card payments refunded automatically. Nobody is promoted off the waitlist into a class that isn’t running.

You’ll get a summary afterwards: how many bookings were cancelled, how many credits and payments were reversed, and anything that needs your attention.

Cancelling a booking

Click Cancel on their row. CourtBook then automatically:

  1. Frees the spot
  2. Promotes the first person off the waitlist and emails them
  3. Returns their pack credit if they’d used one
  4. Refunds their card payment if they’d paid
  5. Emails them a cancellation notice

You don’t need to do any of that manually.


7. Customer records

CourtBook → Customers

Search anyone who has ever booked. Click through and you’ll see:

  • Their contact details
  • Upcoming classes they’re booked into
  • Past classes they’ve attended
  • Total spend with you
  • Any packs they hold, and how many credits are left

Useful when someone emails asking “how many classes do I have left?” or when you want to know whether a regular has drifted away.


8. Packs and passes

This is how you sell “buy 4, save money” instead of one class at a time.

CourtBook → Packages & Passes → Add package

Field Example
Name “Fall 4-Pack”
Price 160 (i.e. $40 a class instead of $50)
Credits 4
Unlimited pass Tick this instead of credits for a monthly all-you-can-book pass
Expiry Months / 3
Valid for Leave all unticked = works on every class. Tick specific classes to restrict it

How customers use it

  1. They buy the pack on your booking page
  2. When booking a class, they enter the same email
  3. CourtBook spots their credits and offers “use a pack credit” instead of paying
  4. One credit is used per class

If they cancel, the credit comes back. If they’re waitlisted, no credit is taken until they’re actually promoted into the class.

Multi-session courses

For “12 weeks split into three 4-week sessions,” create three packs of 4 credits each, priced however you like, and restrict them to the relevant class.


9. Price tiers

Lets drop-ins and members book the same session at different prices.

Inside the class editor, scroll to Price tiers and add:

  • Drop-in — 50
  • Member — 40

Customers pick their rate on the booking form. Leave tiers empty to just use the single class price.


10. Discount codes

CourtBook → Coupons → Add coupon

Field Notes
Code e.g. FALL20 — customers type this at booking
Type Percentage off, or fixed amount off
Amount 20 = 20% (or $20 if fixed)
Max uses Blank = unlimited. Set 50 to cap it
Expires Valid through the whole of that day
Status Set to Disabled to switch a promo off without deleting it

Coupons stack with price tiers — a Member at $40 using FALL20 pays $32.

The usage count is exact: if you cap it at 50, the 51st person is refused, even if lots of people try at once.


11. Booking questions

Ask customers anything you need at booking time — and see the answers right on the roster.

CourtBook → Booking Fields → Add field

Example — tennis level:

  • Label: Tennis Level
  • Type: Dropdown
  • Options: Beginner, Intermediate, Advanced
  • Required: ticked

Now every booking form asks for it, and the answer shows in the Details column of your roster. No more digging through separate screens.

Other useful ones: emergency contact, racquet hire needed, how they heard about you.


12. Emails your customers receive

Sent automatically:

When What they get
They book Confirmation with class, date, location, amount paid
Class is full “You’re on the waitlist”
A spot opens for them “A spot opened up — you’re booked in”
You cancel their booking Cancellation notice
You use Email everyone Your custom message

All emails come from your site’s normal email address and include your site name.


13. Moving from Amelia

CourtBook → Import

If Amelia is installed, you’ll see how many classes, customers, bookings, and coupons can be brought across.

Always click “Preview import” first. It shows exactly what would move without changing anything.

When you’re happy, click Run import. It’s safe to run more than once — it won’t create duplicates.

⚠️ Back up your site first. Ask your host, or use a backup plugin. This is standard practice before any data migration, not a sign anything is wrong.

Your old bookings, customer records, and their tennis levels all come across.


14. Common tasks cheat sheet

I want to… Do this
Add a whole season of classes Classes → Add class → set recurrence → Save & generate
See who’s coming Thursday Bookings → pick the session
Book someone who phoned Bookings → pick session → Add a booking
Cancel because of rain Bookings → pick session → Email everyone in this class
Make a class look busier Bookings → Add a booking (comp) a few times
Sell a fall 4-pack Packages & Passes → Add package
Run a 20% promo Coupons → Add coupon
Ask a new question at booking Booking Fields → Add field
Give someone their money back Bookings → find them → Cancel (refunds automatically)
Stop taking bookings for a class Classes → edit → Status: Hidden
Take a register to court Bookings → pick session → Print roster
Get the roster into a spreadsheet Bookings → pick session → Download CSV
Move just one date Bookings → pick session → Edit session
Call off a session entirely Bookings → pick session → Cancel this session
Check how many credits someone has left Customers → search their name
See what needs my attention today Dashboard → Needs attention

15. Troubleshooting

“Too many requests” on the booking page A safety limit that stops bots mass-booking: 8 bookings per 10 minutes from the same internet connection. Normal customers never hit it, but a family all booking from one home connection might. It clears itself after 10 minutes. You are never limited when adding bookings from the dashboard.

A customer says they didn’t get their confirmation Check spam first. Then check your site can send email at all — send yourself a test booking. Email delivery is a website setting, not a CourtBook one.

Class shows the wrong time Check Settings → General → Timezone in WordPress is set to your actual location.

“Set the first start date/time before generating occurrences” The class has no starting date. Edit it, fill in First class starts, save again.

Customer can’t see their pack credits They must use the exact same email they bought the pack with. For security, CourtBook emails them a 6-digit code before showing balances — that’s intentional, so nobody else can look up their passes.

Someone booked but the class was full Shouldn’t happen — capacity is strictly enforced even when many people book at the same instant. If you ever see it, tell your developer immediately.

Changed a class’s days but old sessions are still listed Expected. CourtBook won’t delete sessions in case they have bookings. Cancel the unwanted ones from the Bookings screen.


Getting help

When reporting a problem, include: what you were doing, what you expected, what happened, and the class/session involved. Screenshots help enormously.


CourtBook v0.5.1 — built for Rally Society