All projects
WordPressWooCommercePlugin Development

Simple Course Booking — A WooCommerce Extension for Bookable Course Sessions

A WooCommerce extension that turns any standard product into a bookable course session — with slot management, per-slot capacity limits, attendee detail collection, and automated delivery of Zoom or Teams joining instructions the moment an order completes.

Simple Course Booking — A WooCommerce Extension for Bookable Course Sessions

The Gap It Fills

WooCommerce handles selling products well. It doesn't natively handle selling seats on a course taking place at a specific date and time, collecting the names and email addresses of every attendee, enforcing capacity limits per session, and then automatically emailing everyone their Zoom or Teams details when the order is paid. That requires either a heavyweight plugin suite, a bespoke platform, or something purpose-built — and this is the purpose-built option.

How It Works

Once installed, any WooCommerce product gets a Course Booking Slots meta box in the product editor. From there, add as many sessions as needed — each with a date, time, capacity limit, and optionally a Zoom or Teams link, meeting ID, and password specific to that slot. Save the product and the booking UI appears automatically on the product page.

On the frontend, a multi-step form guides the customer through the process: select a session from available slots (slots that are full don't appear), choose the number of attendees, then fill in a name and email address for each person attending. The cart quantity is automatically synchronised with the attendee count — no manual quantity adjustment needed — and the attendee details travel through to the order as order item meta.

Capacity Management

Capacity is enforced at both ends. The frontend filters out full slots before the customer even sees them, preventing over-selection. When an order moves to Completed, the plugin deducts the booked seats from the slot's remaining capacity and marks the order as recorded — a flag that prevents the same order from decrementing the count twice if the status is updated more than once. The admin dashboard reflects remaining seats in real time.

Automated Meeting Instructions

The most operationally useful feature for training providers and course organisers: when an order status moves to Completed, the plugin automatically emails joining instructions to the relevant recipients. Two modes are supported — send only to the purchaser, or send to every individual attendee. The email includes the session details, Zoom or Teams link, meeting ID, and password, built as a clean HTML email.

For situations where instructions need to go out again — a link changed, an email bounced, a customer missed it — a Resend Instructions button is added directly to the order screen in the WooCommerce admin, triggering the same email flow with a single click.

Admin Dashboard

A dedicated Course Bookings screen under the WooCommerce admin menu gives a real-time overview of every product with slots: session date, time, total capacity, seats booked, and remaining availability. Clicking through to any slot shows the full attendee list — name, email, order ID, and order status — pulled from order meta across all relevant orders. The attendee list is exportable as a CSV, giving organisers a clean register they can use on the day.

Technical Approach

The plugin is structured as four focused PHP classes — Frontend, Admin, Slots, Email — each handling a distinct concern and loaded via a lightweight bootstrap class. It integrates with WooCommerce through standard hooks and filters rather than overriding core behaviour: WooCommerce fragments handle the cart UI, AJAX handles slot data, and order item meta carries attendee information cleanly through the checkout and fulfilment flow.

  • Slot data stored as serialised post meta on the product
  • Frontend slot availability filtered by remaining capacity before rendering
  • Cart quantity synced to attendee count via woocommerce_add_cart_item filter
  • Attendee details stored as order item meta and surfaced in the admin attendee view
  • Capacity decremented atomically on order completion with double-count protection
  • HTML email delivery via wp_mail triggered on woocommerce_order_status_completed
  • Resend meta box on order screen for on-demand re-delivery
  • CSV export of attendees per slot from the admin dashboard

The Result

A training provider or course organiser can run their entire booking operation through their existing WooCommerce store without a separate platform, a monthly SaaS fee, or a complex integration. Customers get a clear, guided booking experience. The organiser gets accurate attendee registers, automated communications, and real-time capacity visibility — all within the admin they already use.

WordPressWooCommercePHPCourse BookingZoomMicrosoft TeamsAttendee ManagementCapacity ManagementCSV ExportEmail AutomationCustom Plugin

Categories

WordPressWooCommercePlugin Development

Interested in similar work?

Get in touch to discuss your project.

Start a conversation

Let's Work Together

Ready to Build Something Remarkable?

Whether you need a bespoke website, a full digital marketing strategy, or a technical partner who understands business — I'm here.