Sell courses with WooCommerce
When courses are sold, WooCommerce holds the products and the orders, and POM LMS decides access from them. There is no enrollment step: a student's access is evaluated from their purchases every time they open a course.

In this chapter
| Task | Article |
|---|---|
| Check what must be in place | Requirements |
| Link products to a course | Connect products to courses |
| Understand how a purchase grants access | Grant access from a purchase |
| Sell access as a subscription | Subscriptions and active access |
| Know which orders count | Order status and course access |
| Handle refunds and expiry | Refunds, cancellations and expiration |
| Point blocked students at what to buy | Related products in no-access messages |
| Prove the whole path works | Test a paid course |
| Fix something that did not work | Paid access troubleshooting |
Access is evaluated, not granted
The model to internalise: nothing is written to a student's record when they buy. Instead, each time they open a course, POM LMS asks whether their purchases satisfy the course's requirement.
Two consequences, both useful:
- Access appears as soon as the order reaches a paid status — no processing step, no enrollment queue.
- Access disappears as soon as it stops being paid — a refund removes it with no manual work.
And one to plan for: there is no record of when a student was enrolled, because there is no enrollment.
The two ways to require a purchase
| Mechanism | Suits |
|---|---|
| This is a paid course, with a product associated | One product, one course |
| A permission rule | Several products, subscriptions, roles, time windows |
They do not combine — a rule replaces the paid check. Choose one per course. For anything beyond a single simple product, the rule is the better tool.
What POM LMS does not do
- No price, buy button or add-to-cart control on the course page.
- No emails when someone buys.
- No enrollment date or completion certificate.
- No student list per course in the administration.
- No automatic course access for a product that is not associated with a course or matched by a rule.
The course page persuades; WooCommerce sells; POM LMS checks.
Start with Requirements.