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

https://cubite.io/blogs/sell-moodle-courses-nextjs-storefront

**By:** Amir Tadrisi
**Updated:** 2026-04-24

Build a Next.js course storefront for Moodle with Stripe payments. The modern alternative to WordPress + WooCommerce for selling Moodle courses.

# 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, native Moodle Stripe integration, and a SSO plugin that lands students inside their course in under two seconds. One-time $240. No WordPress required.

## Check a Live Demo

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

[Live Demo](https://moodle.cubite.io)

---

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

Moodle's course pages need a login to view, so Google can't index them. There's no native Moodle Stripe integration. There's no marketing page builder, no blog, no SEO controls and no multi-tenant storefronts.

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 the leading bridge plugin call out exactly this — sync drift, SSO login loops, "1 in 50 enrollments fails."

Cubite replaces the entire stack with one Next.js storefront. You install one Moodle plugin, paste one shared secret, and you're selling.

---

## How it works

### 1. Connect your Moodle in ~5 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) and paste the shared secret. Cubite tests the connection end-to-end, validates every required function, 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, indexed by Google, rendered as static pages on a global CDN.

### 3. Sell. Students land inside the course.

Stripe checkout completes. Cubite creates the Moodle user and enrolls them.

---

## Moodle without WordPress, finally

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 three 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 domain. 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" — this is the answer.

---

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

Your storefront runs on your domain, built with Next.js. Course pages have title tags, meta descriptions, OG images, schema markup, breadcrumbs, and clean canonical URLs — the things Google needs and Moodle's /course/view.php?id=42 URLs don't give you.

Edit course descriptions, hero images, FAQ blocks, and pricing copy from a clean admin. Run a blog on the same domain. Stack landing pages for paid campaigns. Push sitemaps to Google Search Console. 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 "Go to 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. Total time: 1-2 seconds.

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; Moodle profile fields are read-only and refresh from Cubite on every login. No drift, no login loops, no token expiration errors.

---

## Multi-tenant from day one

Run a single Cubite installation that powers many storefronts on different domains, each connected to its own Moodle instance. Your reseller business, your white-label partners, your enterprise customers — all from one codebase, one admin, one billing pipeline.

Every tenant gets its own admin bypass token, so an admin of one Moodle can't accidentally cross-authenticate into another customer's instance. No competitor on this page offers this.

---

## Catalog lockdown — students can't bypass your payment flow

auth_cubite ships with three layers of enforcement built in:

- Self-enrollment and guest enrollment disabled at install time, so students can't add themselves to courses for free
- Catalog pages blocked — /course/index.php, /course/search.php, /course/index_category.php redirect non-admins to your storefront
- Login and signup pages redirect to your storefront's /auth/signin and /auth/signup, with an admin bypass token for tenant operators

Moodle becomes a pure delivery engine. Every dollar your courses earn flows through Cubite + Stripe.

---

## Flexible course linking — sync some, hand-build others

Edwiser Bridge users have one recurring complaint: a re-sync overwrites your marketing copy. Cubite doesn't.

The first sync pulls your Moodle catalog. After that, your Cubite course content — names, descriptions, hero images, SEO fields — is yours to edit. Re-syncs add new courses without touching what you've already polished. And any Cubite course can be linked or unlinked to a Moodle course at any time, so you can also build pure-storefront items: course bundles, pre-launch waitlists, downloads, or consulting calls that don't need a Moodle course behind them.

---

## Cubite vs Edwiser Bridge vs Edwiser Store vs Enrollait vs Course Commerce Pro vs Enrolmart

| Feature | **Cubite** | Edwiser Bridge | Edwiser Store | Enrollait | Course Commerce Pro | Enrolmart |
| --- | --- | --- | --- | --- | --- | --- |
| **Total cost** | **$240 once** | ~$400-600+/yr stacked extensions | Annual + lifetime tiers | $420-840/yr | $199/yr | $2,388-5,988/yr |
| **No WordPress required** | ✓ | ✗ | ✓ | ✓ | ✓ | partial |
| **Native marketing site + blog** | ✓ | partial (via WP) | ✗ | ✗ | ✗ | partial |
| **Real SEO on course pages** | ✓ | partial | ✗ | ✗ | ✗ | partial |
| **Multi-tenant storefronts** | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ |
| **JWT SSO (60s expiry)** | ✓ | partial (session sync) | partial | partial | partial | partial |
| **Stripe checkout** | ✓ | ✓ (via Woo) | ✓ | ✓ | ✓ | ✓ |
| **Catalog lockdown enforcement** | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ |
| **Profile source-of-truth pinning** | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ |
| **Sync-safe marketing copy** | ✓ | ✗ (overwrites) | n/a | n/a | partial | partial |
| **Recurring subscriptions** | ✗ | ✓ | ✓ | ✗ | ✓ | ✗ |
| **B2B seat licensing** | ✗ | partial | ✓ | ✗ | ✓ | ✗ |

Last verified: 2026-04-27. Pricing and features change — verify on each vendor's site before citing. Subscription billing and B2B seat licensing are on the Cubite roadmap; if you need them today, talk to us first.

---

## Switching from Edwiser Bridge

Edwiser Bridge is the most popular WordPress-Moodle integration — and the most-complained-about. 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 "1 in 50 enrollments fails" in high-traffic windows
- Extension renewal stack — base plugin is free, but the features you actually need (WooCommerce, SSO, Bulk Purchase, Selective Sync) bundle to roughly $400-600/year
- Hidden fragility — uppercase usernames break it, changing the Moodle admin password breaks it, plugin updates have broken enrollment

Head-to-head:

|  | **Cubite** | Edwiser Bridge |
| --- | --- | --- |
| Total cost | **$240 once** | ~$400-600+/yr stacked extensions |
| Stack | Cubite + Moodle | WordPress + WooCommerce + Edwiser + extensions |
| SSO model | Signed JWT, 60s expiry, no shared session | Session sync (drifts) |
| Re-sync overwrites marketing copy | No | Yes (top complaint) |
| WordPress required | No | Yes |
| Yearly renewal | None | Per-extension |

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 the closest 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 | $240 once | $34.99-$69.99/month ($420-$840/year) |
| Year-3 cost | $240 | $1,260-$2,520 |
| Multi-tenant storefronts | ✓ | ✗ |
| Native blog + marketing pages | ✓ | ✗ |
| Custom domain | ✓ (included) | Enterprise tier only ($840/yr) |
| Open-source SSO plugin | ✓ | ✗ |
| Subscriptions / recurring billing | ✓ | ✗ |

---

## Who it's for

### Independent course creators leaving Teachable / Thinkific

You want to own your platform, not pay 20% per transaction or get throttled when you grow. Moodle is the most-used LMS on earth and it's free. Cubite is the 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, three Edwiser extensions, and an admin who fixes sync drift every week. Cubite is one Next.js app, one plugin, $240 once.

### Agencies running multi-tenant Moodle deployments

You host Moodle for many customers and need a real branded storefront for each one. Cubite is the only product on this list with native multi-tenant support.

### 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, then enrolls buyers into Moodle automatically. Moodle's built-in course pages require a login and can't be indexed by Google, so a dedicated storefront is the only 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 — for a one-time $240.

### 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 extensions yearly. Cubite replaces the whole stack with one Next.js storefront and one Moodle plugin. No WordPress, no recurring extension fees, and no two-way sync drift — Cubite is the source of truth, Moodle is the classroom.

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

### Do I need WordPress?

No. Cubite is a self-contained Next.js application. Most "Moodle ecommerce" solutions require WordPress + WooCommerce + 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, and paste the shared secret. Cubite's connection test verifies every function 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 supports Moodle 4.4 and later, and is tested on Moodle 5.2 (the current LTS). The auth_cubite plugin uses Moodle's standard authentication API and the modern hook-class system introduced in Moodle 4.4, so it tracks Moodle's official compatibility schedule.

### 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 lands inside the course in 1-2 seconds.

There are no shared passwords, no plaintext credentials, and tokens can't be replayed past 60 seconds. Cubite is the only identity authority.

### Can I use my own domain?

Yes. Run your storefront on courses.your-brand.com or any custom domain. Cubite handles SSL, sitemaps, and canonical URLs. The Moodle plugin auto-detects your storefront URL from the SSO token, so multi-tenant deployments work out of the box.

### Does Cubite support recurring subscriptions?

Not yet. Today, Cubite handles one-time course purchases and bundles via Stripe. Recurring subscriptions and B2B seat licensing are on the roadmap. If you need either today, talk to us first — we'll give you a straight answer about timeline.

For one-time course sales, payment plans, or course bundles, you're set.

### Will syncing courses overwrite my marketing copy?

No. After the initial pull, Cubite's course content is yours to edit. Re-syncs add new Moodle courses without touching the descriptions, hero images, or SEO fields you've already polished. This is a deliberate fix for the most common Edwiser Bridge complaint.

You can also unlink any Cubite course from Moodle, so you can sell bundles, pre-launches, or non-LMS products through the same storefront.

### What happens if I want to leave Cubite?

Your Moodle is untouched — all student data, course content, and progress stays where it lives. You uninstall the auth_cubite plugin and you're back to a standalone Moodle. Cubite's storefront content (course copy, blog posts, marketing pages) is exportable.

We don't lock you in. The price is $240 once because we want you to use the product, not because we want you trapped in a contract.
