Scale Is the Feature: Why I Built Learnomy
Every LMS plugin demos beautifully.
Five courses, ten students, a tidy dashboard. The video plays. The quiz grades itself. A certificate downloads with your name on it. You think, this is the one.
Then you grow.
The catalog fills up. Real members start paying. A few instructors come on board and all of them open their earnings report at the same time on launch morning. The dashboard that felt instant now hangs for ten seconds. A report times out. Checkout starts arguing with your theme. The thing that sold you in the demo is now the thing you are apologizing for.
I have watched that exact arc too many times, on client sites and on my own. So when I set out to build Learnomy, I started somewhere unfashionable. Not with features. With the foundation.
This is the bet behind the whole plugin: scale is not a thing you add later. Scale is the feature.
The morning it broke
Let me make this concrete, because abstractions are easy to nod along to and forget.
A while back I was helping run a course site that had done everything right. Good content. A real audience. A launch planned for months. The morning the doors opened, a few thousand people showed up over a couple of hours, which is exactly what you pray for.
The site fell over.
Not with a clean error. Worse. It got slow in the way that makes people quietly give up. Pages took fifteen, twenty seconds. The enrollment that should have been one click turned into a spinner, a refresh, a second accidental purchase, a support ticket. The instructor dashboard, the one screen the team needed to watch what was happening, was the slowest page on the whole site.
I spent that morning inside the database instead of celebrating.
What I found was not a bug. It was the design. Every course page ran a pile of meta queries. Every list loaded everything into memory and then counted it. The progress lookups fired once per row, so the more students enrolled, the slower it got. Backwards from what you want. The plugin had not failed. It was doing exactly what it was built to do. It was just built for a world with ten students, not ten thousand.
That morning is the reason Learnomy exists.
I did not want to build another plugin that throws a party at the wrong moment. I wanted the boring kind of reliability, where the busiest day of your year feels like an ordinary Tuesday. You only get that by deciding it up front. You cannot bolt it on after the launch you already lost.
The demo lie
Here is the uncomfortable truth about most WordPress LMS plugins. They are built on top of the post system. A course is a post. A lesson is a post. Progress, enrollments, quiz attempts, transactions, certificates, all of it gets stuffed into post meta, the junk drawer of WordPress.
It is the fastest way to ship an LMS. It is also why so many of them fall apart.
A blog post is a document. You write it, you read it, you are done. A learning platform is nothing like that. It is a living web of relationships that all change at once and all need to be read together. Who is enrolled in what. How far along they are. Which membership renews on Friday. What each instructor is owed this month. Force that into post meta and every report becomes a slow crawl through a table that was never designed to answer the question you are asking.
You do not see this on day one. That is the trap. The post-meta approach looks identical to a proper one when the dataset is tiny. The bill only arrives when you succeed.
I did not want to ship a plugin that punishes people for growing.
So I poured the foundation first
Learnomy runs on its own data engine. Dedicated tables, designed around how a learning business actually reads and writes, with the right indexes in the right places. Enrollments know about courses. Memberships know about renewals. Earnings know about payouts. Every lookup is direct.
You will never see that layer. You are not supposed to. You only notice the absence of pain: the admin stays quick, the reports come back now instead of eventually, and the numbers underneath can get large without anything seizing up.
I held myself to one rule the whole way through, and it is the rule I am proudest of.
Every list, every report, every data method has to work at thousands of rows on the day it ships. Not as a patch I file later when someone complains.
In practice that means pagination is everywhere from the start. Counts come from real counting queries, not from loading an entire list into memory just to measure its length. The columns that get searched and sorted are indexed. The classic killer, where a page fires one extra query per row and a snappy list turns into a thirty-second spinner the day the list gets long, is designed out before it can happen.
None of that demos. You cannot screenshot an index. It is invisible right up until the moment it is the only thing that matters.
That moment is the whole point.
The front end got the same treatment
I am tired of LMS plugins that ship half a megabyte of JavaScript to render a progress bar.
Learnomy is built on the WordPress Interactivity API. The catalog filtering, the quiz player, the progress updates, the dark mode, all of it feels instant, with no framework weighing down your students’ phones and no build step standing between me and a working site. Modern interactivity, none of the modern bloat.
It stays standalone on purpose. Learnomy runs on its own engine. Stripe and PayPal checkout is built in, and the background job runner that handles renewals, reminders, and dunning ships right inside it. Nothing extra to install just to take a payment. Already running a store on WooCommerce? Connect it as an optional gateway and route purchases through your existing checkout. If not, you will never think about it.
And it looks like it belongs on your site. Run BuddyX or BuddyX Pro and Learnomy adopts the theme palette and follows its dark mode on its own. No fiddling. It reads your design instead of fighting it.
Why I keep choosing boring infrastructure
We are living through the cheapest era of software creation in history. AI writes the boilerplate. A feature that used to take a sprint takes an afternoon. Everyone can ship fast now, and most people are.
Which means features stopped being the moat. They never really were.
I made this case in a different context when I wrote that ships are cheap and harbors are not. The same logic runs through how I build. When anyone can clone your feature list by Friday, the thing that separates products is the work nobody can shortcut: the data model, the indexes, and the way the thing behaves on its worst day instead of its demo day.
Boring infrastructure is a moat precisely because it is boring. It does not screenshot well. It makes a terrible launch tweet. It is months of quiet decisions that only pay off later, which is exactly why most plugins skip it.
So that is where I spent the time.
The tables came before the templates. The pagination came before the polish. The API was designed as the real interface, not a box to tick. And when I added anything to Pro, the rule was that it had to extend the same foundation rather than fork it, so the tenth module costs the system about as little as the first.
It is a slower way to build. It is also the only way I know to ship something that is still standing in five years.
There was a payoff I did not fully see coming, either. Because the data sits in clean, queryable tables instead of a meta junk drawer, everything downstream got easier. Reporting tells the truth. The API stays fast. Growing onto a big site stopped being a project and became a non-event. One good decision at the bottom quietly paid for a dozen features at the top.
Free is not a teaser
This part matters to me, because I have been burned by the other kind.
You know the pattern. A plugin gives you just enough to get hooked, then walls off the thing you actually needed behind a paywall the moment you try to use it. I think that is a lousy way to treat people. I wrote about the same philosophy when we shipped WB Gamification as one free engine instead of a pile of paid add-ons, and Learnomy follows the same line.
Learnomy Free runs an entire course business end to end.
You build courses in a clean, Notion-style builder, with sections and lessons and topics nested underneath. Lessons go well past plain text:
- Video and audio, with a player that actually tracks how much got watched
- Inline or downloadable PDFs, and standalone file downloads
- Embeds for slide decks and external players
- Scheduled live sessions
- Protected video that never exposes its source URL
You set how strict completion is, from a simple button to time-on-page to watched-a-percentage to passed-the-quiz. That watch-percentage piece is not a throwaway. It is the difference between knowing someone opened a lesson and knowing they actually learned from it, which is the whole reason I keep arguing that video tracking belongs in every learning platform.
Quizzes are real too. A reusable question bank, several question types, auto-grading with partial credit, and a proper grading inbox so essay answers never rot in limbo. When a student finishes, Learnomy issues a cryptographically signed certificate that anyone can verify at a public URL by scanning a QR code. You design the certificate in a visual editor.
Then you get paid. Stripe and PayPal handle one-off sales and recurring memberships, with renewals, cancellations, and refunds all wired. Coupons, a full transaction ledger, instructor applications, public instructor profiles, commission splits, and a withdrawal queue round it out, so a multi-instructor academy runs without a single spreadsheet.
All of that is the free tier. On your server. No platform fee skimmed off every sale.

Pro is where it grows up
Learnomy Pro is not a different product. It installs next to Free and extends the same tables and the same services. Nothing it does rips out or rewrites what Free already gives you. It is the upscale layer for academies that have outgrown the basics.
What that looks like in practice:
- Structured learning: Learning Paths that chain courses into a gated journey with a certificate at the end, Cohorts that move a group through on a shared schedule, and Content Drip that releases lessons over time.
- Selling to organizations: Spaces turns Learnomy into a set of mini-schools with seat packs and invite links, so a company buys access in bulk and runs its own people.
- Harder assessment: Advanced Quizzes adds matching, ordering, numeric, symbolic math, and randomized calculated questions, plus rubric grading. Assignments add file-upload submissions with inline marking.
- Credentials that travel: Certificates Pro brings a full designer, Open Badges 3.0, Credly, and tamper-evident hash anchoring so any change after issue is caught.
- A grown-up revenue engine: Memberships Pro adds proration, pause and resume, automated dunning, refunds, and gift codes, with a dashboard for recurring revenue, churn, and retention. Stripe Connect pays instructors straight to their own accounts.
- Reach and insight: an analytics dashboard, Webhooks Pro with a delivery log and replay, user-journey visualization, notes and bookmarks for learners, white-label branding, and a stable front-end course builder.
Same foundation underneath. That is why none of it slows the rest down.
The API is ready. The app is next.
This is the part I am most excited about, because it is where Learnomy stops being a plugin and starts being a platform.
Everything in Learnomy is reachable over a complete REST API with token authentication. Courses, lessons, quizzes, enrollments, progress, certificates, memberships, earnings. Not a thin layer bolted on for show. It is the same API the browser front end runs on, so it is real and it is exercised every single day by every visitor.
That changes what your academy is allowed to become. You are not trapped inside wp-admin. Build a custom dashboard, wire up a partner integration, sync learners into another system. The data is not hostage to one front end.
And it is the runway for what comes next. A native mobile app is on the way, and because the API already exists and already powers the web, the app is not a rewrite. It is the same engine in your students’ pockets, learning on a commute, syncing when they reconnect. I am not promising a roadmap bolted onto a closed system. I am telling you the foundation for the app is already shipping in the plugin you can install today.
One more signal of where this is going. Learnomy exposes its core actions through the WordPress Abilities API, which makes them discoverable to the AI assistants and agents that are about to start doing real work inside our sites. Most course plugins are not thinking about that yet. This one already shipped it.
I think about that app the way I think about the rest of the plugin. It should feel boring in the best sense. Open it, your courses are there, your progress already synced, a quiz behaving on a phone the way it does on a laptop. No second login. No separate account. No data stranded somewhere you cannot reach. The web and the app are two doors into the same house, and you hold the keys to both.
It is yours, and that is the real moat
I run a plugin business. I know exactly what it costs to keep one alive, because I have written the P&L out in public. So I have opinions about platforms that rent you back your own audience.
When you build your courses on a hosted platform, your students’ emails, their progress, their purchase history, the trust you spent years earning, all of it lives somewhere you do not control, under terms you did not write, behind an export button that might not be there when you need it.
Learnomy keeps every course, every student, every transaction in your own database, on your own server. No platform cut. No monthly toll for the privilege of reaching the people you already earned. Move hosts, restructure, build something custom on top, and your data comes with you, because it was always yours.
Owning the thing you build is the most future-proof feature there is. Everything else is downstream of that.
If you are choosing an LMS this year
Here is the advice I give people who ask, and I give it even when the honest answer is not Learnomy.
Run the demo with a realistic amount of data, not five courses. Import a few hundred. Make a few hundred test users. Then open the reports and the admin lists and watch the clock. If it drags with hundreds, it will be unusable with thousands, and hundreds is not a big number.
Ask where your data actually lives. If the answer is someone else’s cloud, you are renting your own audience. Ask what happens to your students and your revenue history the day you decide to leave.
Ask whether there is an API you can build on, and whether it is the same one the product runs on or a thin afterthought. That one answer tells you whether the product can grow with you, or whether you hit a wall the moment your needs get specific.
Ask what it costs at scale, not at signup. The platforms that look cheap on day one are usually the ones taking a slice of every sale forever. I have run that math more than once, and the quiet recurring tax almost always dwarfs the sticker price.
Learnomy is my answer to those four questions. The questions matter more than my answer. Ask them of anything you are about to build your livelihood on.
What it is not, and what is coming
I will be straight with you. If you are putting up three courses for a small audience and never expect more, you do not need Learnomy. Almost anything will do, and that is fine.
Learnomy is for the person building something they expect to grow. Someone who wants the plugin to still feel calm when the catalog is deep, the membership base is real, and the instructor team is busy. Someone whose ambitions already point at a mobile app and custom integrations.
It is also early, and I am not going to pretend otherwise. The first public release is out, the foundation is solid, and there is a long list of things in motion. Richer learner experiences. Deeper reporting. More ways to package and sell access. Broader integrations. More investment in the app and the headless story. Each one lands without shaking what came before, which is the entire reason I built it this way.
I am not shipping a finished plugin and walking away. I am building a platform in the open, release after release.
The short version
Most WordPress LMS plugins make you choose. You can have the long feature list, or you can have the performance, but stack both and the whole thing starts to wobble.
I did not want to make you choose. So I poured the foundation first and built everything on top of it. The features and the scale arrive together. The data stays yours. The API is ready. The app is coming.
Start with Learnomy for free, switch on Learnomy Pro when you outgrow the basics, and build your academy on something that was made to carry it.
That was the bet. I think it was the right one.