Connect products to courses
A course knows which purchase grants access in one of two ways: through the product associated with it, or through a permission rule that names products.
The two approaches
The paid-course setting — the course is marked as paid, and access depends on the student having bought the product associated with that course. Simple, and right for one product and one course.
A permission rule — a rule names the products and the conditions, and the course selects the rule. This is the approach to prefer whenever more than one product is involved, or a subscription, a role or a time window.
They do not combine: a rule on the course replaces the paid check.
Naming products so the connection is obvious
The product is what appears in the cart, at checkout, in the order and in the student's account. Name it so nobody has to guess which course it unlocks:
Course — Bake sourdough at home
Pro plan (includes all courses)
Not Course access and not an internal code. A student looking at an order from three months ago should recognize it immediately.
One product, several courses
A single product can grant access to several courses. Express it with a rule — Has purchased any of these products — and select that rule on each course.
That is how a bundle or a plan works: one purchase, one rule, many courses.
Several products, one course
Also a rule: Has purchased any of these products, listing every product that should unlock the course.
Use it when the same course is sold standalone, inside a bundle, and as part of a plan.
Keep the connection documented
Nothing on the WooCommerce side shows which courses a product unlocks. If several people maintain the catalogue, keep a simple list outside the plugin:
| Product | Grants |
|---|---|
| Course — Sourdough | Bake sourdough at home |
| Pro plan | Every course |
It takes minutes to maintain and prevents the situation where nobody is sure whether a product can be retired.
Changing or retiring a product
Because access is evaluated from purchases, retiring a product does not remove access from people who already bought it — their orders still exist.
But it does affect new buyers, and it affects rules that name the product. Before unpublishing or deleting a product:
- Check which courses depend on it, from your list.
- Update the rules that name it.
- Confirm existing students still get in.
- Confirm the no-access messages still point somewhere valid.
Verify
- Configure the course's access.
- Sign in as a student who has not bought: the no-access message, with a route to the product.
- Buy with that account.
- Reopen the course: it opens.
- Confirm the course appears in that student's My courses, with a sensible access reason.
- Confirm a different student, who bought nothing, still cannot get in.