Support

How can we help?

Send us a message and we'll get back to you shortly.

We typically respond within 24 hours

Sell Moodle Courses with Next.js: Build a Modern Storefront

Build a Next.js course storefront for Moodle with Stripe checkout into your own Stripe account: free on a cubite.io subdomain, or on your own domain with Cubite's Growth plan ($290/mo). An alternative to WordPress + WooCommerce for selling Moodle courses.

Amir Tadrisi
Amir Tadrisi
LMS engineer since 2013
13 min read
Sell Moodle Courses with Next.js: Build a Modern Storefront

The Moodle ecommerce stack you actually want: a Next.js storefront with indexable course pages, Stripe checkout paid straight into your own Stripe account, and an SSO plugin that signs students into Moodle with no second login screen. It's free on a cubite.io subdomain; your own domain comes with Cubite's Growth plan ($290/mo or $2,900/yr). No WordPress required. Cubite is one of the options compared here and publishes this guide. If you need recurring subscriptions today, or want checkout to stay inside Moodle, the free paygw_stripe plugin or Edwiser Store may fit you better.

Check a Live Demo

Visit our live demo and see how the Cubite integration with Moodle works

Moodle is a great classroom. It's a terrible storefront.

Moodle shows logged-out visitors its course listings and short summaries, but course pages sit behind a login unless you turn on guest access, so Google sees thin catalog pages. Moodle core's built-in payment gateway is PayPal; Stripe needs a third-party plugin such as the free paygw_stripe, and checkout then lives on Moodle's enrollment pages. There's no marketing page builder, its blog is a user blog rather than a marketing blog, and its search settings stop at letting search engines in or keeping them out.

The standard fix is to bolt on a WordPress site, then a WooCommerce store, then Edwiser Bridge to sync the two. You end up maintaining two CMSes, paying for plugin extensions every year, and debugging sync failures every week. Reviews of Edwiser Bridge call out exactly this: sync drift and SSO login loops.

Cubite replaces the entire stack with one Next.js storefront. You switch on Moodle web services, install one Moodle plugin, paste one shared secret, connect your Stripe account, and you're selling.

How it works

1. Connect your Moodle in about 15 minutes

In your Moodle admin: enable Web Services, enable the REST protocol, create an external service with the eight required functions, generate an API token, then install the open-source auth_cubite plugin (drag-and-drop ZIP), enable it under Manage authentication, and paste the shared secret. Cubite checks the token, confirms all eight functions are in the service, and pulls your course catalog over the standard Moodle REST API.

2. Edit your storefront like a real website

Your courses, your pricing, your marketing copy, your blog, your SEO metadata: all editable in Cubite's admin and published as crawlable pages Google can index.

3. Sell, then send students into Moodle.

When a signed-in student buys a course with Stripe checkout, Cubite creates their Moodle account and enrolls them in the Moodle course.

Moodle without WordPress

If you've ever evaluated Moodle ecommerce, you've seen the same prescription: install WordPress, install WooCommerce, install Edwiser Bridge or MooWoodle, configure two databases, sync the user tables, debug the SSO loop, and renew plugin licenses every year. Two CMSes, five moving parts, recurring bills.

Cubite skips the WordPress layer entirely. The storefront is a Next.js app on your cubite.io subdomain, or on your own domain with Cubite's Growth plan ($290/mo). Stripe checkout is built in. Marketing pages are first-class, not retro-fitted. Two pieces of software (Cubite + Moodle), not five.

If you searched "moodle without wordpress," "wordpress moodle integration alternative," or "moowoodle alternative": Cubite is one answer, and the comparison below covers the others.

Real marketing pages, real SEO. Not a plugin in Moodle's admin UI.

Your storefront is a Next.js site on your cubite.io subdomain, or on your own domain with Cubite's Growth plan ($290/mo). Course pages have title tags, meta descriptions, OG images, Course schema markup, and clean canonical URLs: the things Google needs and Moodle's /course/view.php?id=42 URLs don't give you.

Edit hero images, FAQ blocks, SEO fields and pricing copy from a clean admin. Run a blog on the same domain. Stack landing pages for paid campaigns. Publish a sitemap.xml that robots.txt points to, and connect Google Search Console to see your search data in Cubite. This is a real website, not a Moodle skin.

The Moodle SSO plugin

auth_cubite is the Moodle SSO plugin we ship with Cubite (and publish open source). When a student clicks "Start Course," Cubite issues a signed JWT (HMAC-SHA256, 60-second expiry), redirects to your Moodle's auth_cubite endpoint, the plugin validates the signature, and complete_user_login() sets the Moodle session. No Moodle login screen in between.

This is not a sync: there's no fragile two-way user table replication and no shared password. Cubite is the identity source of truth, and every sign-in refreshes the student's first and last name in Moodle from Cubite.

Multi-tenant from day one

Run many storefronts on different domains from one Cubite account, each connected to its own Moodle instance and paid into its own Stripe account. Your reseller business, your white-label partners, your enterprise customers, all from one admin.

Every storefront gets its own random admin bypass link to Moodle's own login form, so one tenant's bypass link does nothing on another tenant's Moodle.

Catalog lockdown: Moodle stops being a second shop window

auth_cubite ships with three layers of enforcement built in:

  • Self-enrollment and guest enrollment disabled at install time, so Moodle's own enrollment pages can't be used to join courses for free
  • Catalog pages blocked on Moodle 4.5 or later: /course/index.php, /course/search.php, /course/index.php?categoryid=N redirect non-admins to your storefront
  • Moodle's login page sends students to your storefront, where /auth/signin and /auth/signup handle accounts; your Moodle admins get a per-tenant bypass link, and keeping Moodle's self-registration off keeps its own signup page closed

Moodle becomes a pure delivery engine. Every sale runs through your storefront's checkout and is paid straight into your own Stripe account; Cubite takes no cut.

Flexible course linking: sync some, hand-build others

Edwiser Bridge users have one recurring complaint: a re-sync overwrites your marketing copy. Cubite's re-sync keeps the cover images, SEO fields and prices you set; course names and summaries still follow Moodle.

The first sync pulls your Moodle catalog. After that, the parts you set in Cubite (cover images, about-page images, SEO titles and descriptions, prices) survive every re-sync; course names, summaries, URL slugs and dates follow Moodle, so edit those in Moodle. You can also build pure-storefront items: native Cubite courses, learning-path bundles and waitlisted pre-launches that don't need a Moodle course behind them.

Cubite vs Edwiser Bridge vs Edwiser Store vs Enrollait vs paygw_stripe vs Enrolmart

Feature
Cubite
Edwiser Bridge
Edwiser Store
Enrollait
Moodle + paygw_stripe
Enrolmart
PriceFree on a cubite.io subdomain; Growth $290/mo or $2,900/yr for your own domainFree base plugin; Bridge Pro $179/yr or $449 lifetime, plus WordPress hosting$199/yr or $597 lifetime$34.99-$69.99/mo, or $360-$710/yr billed yearlyFreeNot published
No WordPress required✓✗✓✓✓partial
Native marketing site + blog✓partial (via WP)✗✗✗partial
Real SEO on course pages✓partial✗✗✗partial
Stripe checkout✓✓ (via Woo)✓✓✓✓
Recurring subscriptions✗✓✓✗✓✗

Competitor prices checked 2026-10-19 on each vendor's own pricing page or plugin listing. Pricing and features change, so verify on each vendor's site before citing. If you need subscription billing or B2B seat licensing today, talk to us first.

Switching from Edwiser Bridge

Edwiser Bridge is a popular WordPress-Moodle integration, with 4,000+ active installs on WordPress.org, and not without problems. The recurring pain in public reviews and Moodle forums:

  • Sync drift: courses get out of step; one re-sync overwrites your marketing copy
  • SSO login loops: sessions expire mid-flow, students bounce back to the login page
  • Token expiration errors: public reports of failed enrollments in high-traffic windows
  • Paid features in Pro: base plugin is free, but the features you actually need (WooCommerce, SSO, Bulk Purchase, Selective Sync) come in Edwiser Bridge Pro at $179/yr or $449 lifetime, on top of WordPress hosting
  • Hidden fragility: uppercase usernames break it, changing the Moodle admin password breaks it, plugin updates have broken enrollment

Head-to-head:

Cubite
Edwiser Bridge
Price (checked 2026-10-19)Free on a cubite.io subdomain; Growth $290/mo or $2,900/yr for your own domainFree base plugin; Bridge Pro $179/yr or $449 lifetime, plus WordPress hosting
StackCubite + MoodleWordPress + WooCommerce + Edwiser + extensions
SSO modelSigned JWT, 60s expiry, no shared sessionSession sync (drifts)
WordPress requiredNoYes
Yearly renewalNone on a cubite.io subdomain; Growth for your own domain renews monthly or yearlyBridge Pro yearly, or a $449 lifetime license

If you're paying for the Edwiser stack today, the migration path is straightforward: install auth_cubite, point Cubite at your existing Moodle, sync your courses, freeze your WordPress shop, redirect customers.

Considering Enrollait?

Enrollait is a direct rival in positioning: also a storefront layer for Moodle, also Stripe-direct, also no-WordPress. The differences are billing model and breadth.

Cubite
Enrollait
Pricing (checked 2026-10-19)Free on a cubite.io subdomain; Growth $290/mo or $2,900/yr for your own domain$34.99-$69.99/month, or $360-$710/year billed yearly
Native blog + marketing pages✓✗
Custom domainWith Growth ($290/mo or $2,900/yr)Enterprise tier only ($69.99/month or $710/year)
Open-source SSO plugin✓✗

Who it's for

Independent course creators leaving Teachable / Thinkific

You want to own your platform and keep more of each sale: Cubite takes no cut, while entry plans on hosted course platforms can add a per-sale fee. Moodle is widely used, and it's free, open-source (GPL) software. Cubite is a storefront that makes selling on it as nice as Teachable.

Training companies stuck on the Edwiser stack

You're paying for WordPress hosting, WooCommerce, Edwiser Bridge Pro, and an admin who fixes sync drift every week. Cubite is one Next.js app and one plugin: free on a cubite.io subdomain, with Cubite's Growth plan ($290/mo or $2,900/yr) for your own domain.

Agencies running multi-tenant Moodle deployments

You host Moodle for many customers and need a real branded storefront for each one. Cubite runs many branded storefronts from one account, each connected to its own Moodle.

Universities and corporate L&D launching paid programs

You already run Moodle internally. You need a public-facing buying experience that your marketing team can actually edit. Cubite gives you that without a six-month integration project.

Frequently asked questions

What is a Moodle storefront?

A Moodle storefront is a separate, public-facing website that markets and sells your Moodle courses and enrolls buyers into Moodle. Moodle shows logged-out visitors its course listings and short summaries, but course pages need a login unless guest access is on, so a dedicated storefront is a practical way to run real marketing, SEO, and ecommerce alongside Moodle.

Cubite is a complete Moodle storefront (Next.js front-end, Stripe checkout, signed-JWT SSO, and a Moodle plugin), free on a cubite.io subdomain, with your own domain and branded sender email on Cubite's Growth plan ($290/mo or $2,900/yr).

How is Cubite different from Edwiser Bridge?

Edwiser Bridge connects Moodle to a WordPress site running WooCommerce, so you maintain two CMSes and pay for an Edwiser Bridge Pro license. Cubite replaces the whole stack with one Next.js storefront and one Moodle plugin. No WordPress, no plugin licenses to renew, and no two-way sync drift: Cubite is the source of truth, Moodle is the classroom.

If you're hitting sync errors or login loops with Edwiser, Cubite is built specifically to fix those problems.

Do I need WordPress?

No. Cubite is a self-contained Next.js application. The classic "Moodle ecommerce" setup pairs Moodle with WordPress, WooCommerce and a bridge plugin, which means three pieces of software to maintain. Cubite is one.

You keep your existing Moodle. Cubite handles everything in front of it.

What does setup actually involve?

Setup is a one-time, ~15-minute process inside your Moodle admin. You'll enable Web Services, enable the REST protocol, create an external service with eight Moodle functions, generate an API token, install the auth_cubite plugin, enable it under Manage authentication, and paste the shared secret. Cubite's connection test confirms all eight functions are in the service before you go live.

The eight required functions are: core_webservice_get_site_info, core_course_get_courses, core_course_get_courses_by_field, core_course_get_categories, core_user_create_users, core_user_get_users_by_field, enrol_manual_enrol_users, core_enrol_get_enrolled_users. If any are missing, the setup wizard tells you which one and where to enable it.

Which Moodle versions are supported?

Cubite works with Moodle 4.4 or later, and the plugin's catalog lockdown needs Moodle 4.5 or later, so run Moodle 4.5 LTS or a newer release such as the current 5.3 LTS. The auth_cubite plugin uses Moodle's standard authentication API and the Hooks API.

How does the SSO work? Is it secure?

Cubite issues a signed JWT (HMAC-SHA256) with a 60-second expiry. The student's browser redirects to your Moodle's auth_cubite endpoint, which validates the signature, finds or creates the user by email, and calls Moodle's standard complete_user_login() to set the session cookie. The student arrives in Moodle already signed in and goes straight to the course.

No password is shared: Moodle never sees the student's Cubite password, sign-in tokens expire 60 seconds after they are issued, and Cubite is the identity authority for your storefront's students.

Can I use my own domain?

Yes, with Cubite's Growth plan ($290/mo or $2,900/yr): run your storefront on courses.your-brand.com or any custom domain; a free site runs on its cubite.io subdomain. Cubite handles SSL, sitemaps, and canonical URLs, and the Moodle plugin picks up your storefront URL from the SSO token, so each Moodle follows the storefront it is paired with.

Does Cubite support recurring subscriptions?

Not yet. Today, Cubite sells one-time course purchases and learning-path bundles through Stripe checkout. If you need recurring subscriptions or B2B seat licensing today, talk to us first, and we'll give you a straight answer about timeline.

For one-time course sales, you're set.

Will syncing courses overwrite my marketing copy?

Partly. A re-sync keeps the cover image, about-page image, SEO fields and price you set in Cubite, and refreshes each course's name, summary, slug and dates from Moodle, so edit names and summaries in Moodle.

You can also sell native Cubite courses, learning-path bundles and waitlisted pre-launches that have no Moodle course behind them, through the same storefront.

What happens if I want to leave Cubite?

Your Moodle keeps everything: all student data, course content, and progress stays where it lives. To leave, uninstall the auth_cubite plugin, move the users who sign in through Cubite to another authentication method (for example, manual accounts with a password reset), and turn self or guest enrollment back on if you used it. Your storefront content (course copy, blog posts, pages) can be pulled out through Cubite's API, and each public course, blog post and page also has a Markdown version.

We don't lock you in. The storefront is free on a cubite.io subdomain, and Cubite's Growth plan for your own domain is $290/mo billed monthly (cancel anytime) or $2,900/yr. Perpetual ($7,500 once, then $1,500/yr for maintenance and support) and Enterprise (custom, annual) are there if you need a perpetual license or a contract.