Class Bookings with Stripe helps studios, instructors, and venues sell places on scheduled classes using Stripe Checkout (Stripe’s hosted payment page). Customers pick a date, choose seats, and pay securely without WooCommerce or a custom cart.
The plugin uses Advanced Custom Fields (ACF). Each bookable class has schedule, price, capacity, and optional extras. Embed the form with a shortcode or Elementor widget. When a customer clicks Book & pay with Stripe, the plugin creates a soft-hold, opens a Stripe Checkout Session, and redirects to Stripe. A signed webhook marks the booking paid and can send customer and admin emails.
Video tutorials — get started
New to the plugin? Watch these first:
Features
- Classes — Weekly recurring classes, one-off events, or external booking links.
- Capacity — Per class and date; counts paid bookings and active soft-holds.
- Cancelled dates — Block individual dates without disabling the class.
- Bookings — Pending, paid, and expired statuses with Stripe session references.
- Reports — Yearly charts, upcoming attendance, and guest lists.
- Form extras — Waiver, Mailchimp opt-in, and custom ACF fields.
- Emails — Customer and admin templates with merge tags via
wp_mail().
- Result pages — Booking Confirmed, Cancelled, and Error pages on activation.
Stripe Checkout
The plugin uses the bundled stripe-php SDK. It does not embed card fields on your site. Checkout Sessions use inline price_data (GBP), session metadata, and a 30-minute soft-hold aligned with session expiry. Configure webhooks for checkout.session.completed, checkout.session.expired, and checkout.session.async_payment_failed.
Shortcodes
[clasbowi_booking class_id="123"]
[clasbowi_booking_status type="success"] (or cancelled, error)
- Legacy aliases:
[stripe_booking], [yoga_booking], [stripe_booking_status], [yoga_booking_status]
Requirements
- WordPress 6.0+
- Stripe account (keys and webhook signing secret)
- ACF Free or Pro (bundled ACF Free loads if ACF is not active)
- Elementor (optional, for the Elementor widget)
Video tutorials — full series
Step-by-step guides on YouTube (IORoot):
External services
This plugin connects to third-party services to process payments and, optionally, add customers to a mailing list. You must configure your own accounts and API keys for these services in Class Bookings with Stripe → Settings.
Stripe
This plugin uses Stripe Checkout to collect payments. Stripe hosts the payment page; card details are entered on Stripe’s site, not in WordPress.
When data is sent
- When a customer submits the booking form, your WordPress site calls the Stripe API to create a Checkout Session, then redirects the browser to Stripe’s hosted checkout page.
- When payment completes, fails, or the session expires, Stripe sends signed webhook events to your site (
/wp-json/clasbowi/v1/stripe-webhook).
- If webhooks are delayed, the plugin may call the Stripe API again to retrieve the Checkout Session status when the customer returns to your success page.
What data is sent
- To Stripe’s API (server-side): your Stripe secret key (authentication), customer name and email, class and booking details (class name, date, time, location, seats, booking ID), line-item title and price (GBP), and success/cancel return URLs.
- On Stripe Checkout (customer-facing): payment and billing details the customer enters on Stripe’s hosted page.
- From Stripe to your site (webhooks): event payloads about the Checkout Session and payment status (no card numbers are stored in WordPress).
This service is provided by Stripe, Inc.: Terms of Service, Privacy Policy.
Mailchimp
If enabled in plugin settings, this plugin can subscribe customers to a Mailchimp audience when they opt in on the booking form.
When data is sent
- After a booking is marked paid (via Stripe webhook), and only when all of the following are true: Mailchimp opt-in is enabled in settings, you have saved a Mailchimp API key and Audience ID, the customer checked the opt-in box on the form, and the booking has not already been synced.
What data is sent
- To the Mailchimp Marketing API: the customer’s email address, first name, last name (parsed from the booking name), and subscription status (
pending if double opt-in is enabled, otherwise subscribed). Your Mailchimp API key is sent in the request for authentication.
This service is provided by Intuit Mailchimp: Terms of Use, Privacy Policy.