B2B course sales need seat-level control — the kind of control that standard LearnDash group registration doesn’t come with out of the box. For learningiscreated.org, organizations buy courses for their staff, employees come and go, and seats need to behave like real assets that belong to the organization.
I extended the Wisdmlabs Group Registration for LearnDash plugin so the LMS could match how the business actually sells. Each seat became a first-class entity, subscription cycles became aware of employee turnover, and organization admins got a dashboard they could run themselves.
The challenge
Out of the box, LearnDash group registration handles the basics — buy a group, add users, give them access. What it does not handle well is the messy reality of B2B sales: per-seat accounting, subscription cycles, and what happens when an employee leaves halfway through a paid term.
The client needed seat-level management. Organizations buy a number of seats for a year. Employees come, take courses, and sometimes leave before the year is up. A naive system would either free the seat immediately (and let the org reuse paid investment in a way that breaks the pricing model) or strand the seat (and irritate the buyer). Neither was acceptable. The plugin had to understand subscriptions and turnover.
My approach
I did not fork the Wisdmlabs Group Registration plugin or rewrite it. I extended it through hooks, filters and a companion plugin so updates to Wisdmlabs’ code keep flowing without breaking the customizations.
The mental model I introduced was simple: a “seat” is its own thing. A seat is owned by an organization, tied to a subscription term, and assigned to one user at a time. When an employee leaves, the seat does not vanish — it goes on hold until the next renewal, at which point the org can reallocate it. That single concept removed the ambiguity from every downstream rule.
What I built into LearnDash group registration
On top of the Wisdmlabs plugin, I layered the following customizations:
- Per-organization seat allocation interface — org admins can see total seats, used seats, free seats and held seats at a glance, and assign them to users
- Seat-hold logic during the subscription term — when a user is removed, their seat is held rather than instantly released, protecting the buyer’s investment in the term
- Subscription cycle handling — the system enforces a 1-year minimum subscription and treats the renewal date as the boundary for held seats
- Org admin dashboard for self-service seat management — add users, remove users, hold and reassign without contacting support
- Custom workflow for employee turnover — clear states (active, held, reassignable) so the org always knows what each seat is doing
- Hook-based integration with LearnDash groups — the seat layer drives LearnDash group membership rather than fighting it
Why hook-based extension matters here
Wisdmlabs ships updates to their Group Registration plugin regularly. If I had modified plugin files directly, every release would have meant a painful merge. Instead, the customization sits in its own plugin, listens to the right hooks, and adds its own database layer for seat state. The base plugin can update freely; the seat logic keeps doing its job.
The result
The B2B sales conversation got dramatically simpler. Sales could promise “you buy seats, your admin runs them, your investment is protected for the term” — and the platform actually delivered exactly that. Organization admins stopped sending support tickets for routine reassignments because they could do it themselves.
- Shorter B2B sales cycle — the pricing and seat model is finally easy to explain because the platform enforces it
- Self-serve org admins — assignment, removal and reallocation happen without involving the support team
- Investment in seats stays within the subscription cycle — turnover no longer breaks the pricing model
- Plugin updates keep working — Wisdmlabs ships updates and the seat layer keeps running because the customization lives in hooks, not in forked code
- Clearer reporting — every seat has a state at every point in time, making renewals and audits straightforward
Need a LearnDash plugin customized for your business model?
If your B2B course sales don’t fit what off-the-shelf LearnDash plugins do, the right answer is rarely “another plugin.” Usually it’s a careful, hook-based extension of what you already have. I build LearnDash plugin customizations that match the way you actually sell.
See my LearnDash plugin development service
