Sell online courses with Stripe — without WooCommerce.
Course Flow is a lightweight, free WordPress plugin that adds direct Stripe Checkout to Tutor LMS, LearnPress, and LearnDash.
No extra plugins. No conflicts. No slow checkouts.
Why course creators choose Course Flow
- No WooCommerce required — avoids unnecessary complexity and plugin conflicts.
- Fast setup — configure Stripe keys and add a shortcode to start accepting payments.
- Direct Stripe Checkout — secure, hosted checkout handled by Stripe.
- Automatic course enrollment after successful payment.
- Optional automatic WordPress user account creation.
- Fully customizable purchase buttons, including image-based buttons.
- Lightweight architecture — minimal frontend and admin assets.
- Translation-ready with included
.pot file.
Key Features
- Direct Stripe Checkout integration (no WooCommerce dependency).
- Supports Tutor LMS, LearnPress, and LearnDash (one active LMS required).
- One-time payments via Stripe Checkout.
- Automatic course enrollment after successful payment.
- Optional automatic WordPress user account creation.
- Secure Stripe webhook handling (
checkout.session.completed).
- Test mode and live mode support.
- Purchase shortcodes:
[courseflow_buycourse id="123"]
[courseflow_course id="123"]
[courseflow_imagebuycourse id="123"]
- Visual button customization (text, colors, hover effects, layout).
- Image-based purchase buttons.
- Admin course list with ready-to-copy shortcodes.
- Secure REST API (
course-flow/v1) with capability and nonce validation.
- Optional plugin telemetry (disabled by default).
- Fully translatable (
.pot file included).
Requirements
- WordPress 6.7 or newer
- PHP 7.4 or newer
- One active LMS plugin:
- Tutor LMS
- LearnPress
- LearnDash
- Stripe account (Publishable Key, Secret Key, Webhook Secret)
- HTTPS enabled
Configuring Stripe Webhooks
To enable automatic enrollment after payment:
- Open Stripe Dashboard → Developers → Webhooks.
- Add endpoint:
https://your-site.com/wp-json/course-flow/v1/webhook
- Select event:
checkout.session.completed
- Copy the webhook secret and paste it into plugin settings.
- Use the TEST CONNECTION button in admin to validate configuration.
Shortcodes
[courseflow_buycourse id="123"] — standard buy button
[courseflow_course id="123"] — alternative purchase button
[courseflow_imagebuycourse id="123"] — image-based buy button
REST API
Namespace: course-flow/v1
POST /create-checkout
POST /webhook
POST /test-connection (admin only)
POST /save-settings (admin only)
Protected endpoints validate user capabilities and nonces.
Admin Pages
Settings — Configuration of Stripe API keys, currency, success page, account creation behavior and optional plugin telemetry.
Courses — List of detected LMS courses with IDs and available purchase shortcodes.
Button Settings — Visual customization of purchase buttons.
Image Button Settings — Management of image-based purchase buttons.
Data Privacy
Course Flow includes an optional plugin telemetry feature.
When explicitly enabled by an administrator, the plugin may transmit limited, non-personal plugin metadata (such as site URL and plugin version) to the plugin author for diagnostic and compatibility purposes.
This feature is:
– Disabled by default
– Explicitly opt-in
– Does not collect personal or user-identifiable data
The plugin functions fully without enabling this option.
More information can be found in the author’s privacy policy:
https://dev.pawelborowiec.com/course-flow/privacy-policy.html
External Services
Stripe
Stripe is used to process payments via Stripe Checkout.
- Stripe JavaScript library is loaded from https://js.stripe.com/v3/
- Stripe API is used for checkout session creation and webhook handling.
- Payment data is transmitted directly to Stripe during checkout.
Service Provider: Stripe, Inc.
Terms: https://stripe.com/legal
Privacy: https://stripe.com/privacy
Localization
- Translation-ready with included
.pot file.
- Translation files should be placed in the
/languages/ directory.
- Default language: English.
Included Libraries
- Stripe PHP SDK (MIT)
- Select2 (MIT)
- Bundled local fonts (OFL)
License
GPLv2 or later