Grant access from a purchase
How a purchase turns into course access, and what that means for timing, accounts and expectations.
There is no enrollment
Nothing is written to the student when they buy. Instead, every time they open a course, POM LMS asks: does this signed-in student's purchase history satisfy the course's requirement?
That single design decision explains most of the behavior in this chapter.
What is checked
For a course using the paid-course setting:
- the student is signed in;
- they have an order in a paid status;
- that order contains the product associated with the course;
- if the product is a subscription, the subscription is active.
For a course using a permission rule, the rule's own conditions are checked instead — which may include products, quantities, timing, roles or subscription state.
Timing
Access appears the moment the order reaches a paid status. There is no queue, no cron and no processing delay: the next page load reflects it.
Access disappears the moment the order stops being in a paid status — a refund, a cancellation, a failed renewal.
So the student's experience is immediate in both directions, which is usually what you want and occasionally surprising: a refunded student loses access without being told.
The account is everything
Access is evaluated for the signed-in account. Two consequences that generate most paid-access support requests:
Guest checkout grants nothing. With no account attached to the order, there is no student to evaluate. Require accounts at checkout for a course site.
Buying with one address and signing in with another grants nothing. The purchase belongs to the account that made it.
Put the fallback in your no-access message: Already enrolled? Sign in with the account you used to buy. It resolves this case without any admin work.
What the student receives
WooCommerce's order emails, and nothing else. POM LMS sends no message when access is granted.
So the order email — or the thank-you page — is where you tell the buyer:
- that their access is active;
- where the course is, with a link;
- that they should sign in with the same account.
Without that, a buyer completes a purchase and is left guessing where to go.
No enrollment date
Because nothing is recorded at purchase time, there is no enrolled on date to display or report on.
If you need cohorts or time-limited access, express it with a time-based permission rule — bought more than N months ago, or less — which derives the window from the order itself.
Progress is separate
Progress belongs to the student and the course, and is unaffected by access. A student who loses access keeps their recorded progress; they simply cannot open the lessons. If access returns, so does their place in the course.
Verify
- Sign in as a student who has not bought and confirm the no-access message.
- Buy with that account and complete payment.
- Without any other step, reopen the course and confirm it opens.
- Confirm My courses lists it with the reason.
- Refund the order and confirm access is removed.
- Repeat the purchase as a guest, if guest checkout is enabled, and confirm access is not granted — so you know what that failure looks like.