Class Bookings with Stripe

Class Bookings with Stripe

Details
View on WordPress

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.

Details

Plugin code:
class-bookings-with-stripe
Plugin version:
1.0.0
Author:
Outdated:
No
WP version:
6.0 or higher
PHP version:
7.4 or higher
Test up to WP version:
7.0
Total installations:
0
Last updated:
2026-06-08
Rating:
Times rated:
0
booking
checkout
classes
elementor
stripe