Release notes / Learnomy
Free Plugin Plugin

Learnomy

Launching an online course usually means stacking a course plugin, a payments addon, and a membership plugin. Learnomy ships all three in one free LMS: courses, quizzes, verifiable certificates, checkout, and memberships. It is AI-agent ready too: every LMS action is exposed through the WordPress Abilities API, so assistants like ChatGPT and Claude can discover and run your academy. Free forever.

10 releases
v1.7.0 latest
July 20, 2026 shipped

v1.7.0 Latest

July 20, 2026
New 8 Improve 3 Fix 22 Security 2 Dev 11 Compat 1

New

  • Live sessions have a Join link, a start time, and a duration. Students see a countdown before it starts, a Join button while it runs, and a clear "session has ended" afterwards.
  • Images in lessons and course content can be set to a width (25%, 50%, 75%, 100%) and aligned left, center, or right, with text flowing around them. On phones they go full width automatically.
  • Courses can be duplicated from the Courses list. The copy is created as a draft with the full curriculum.
  • Refunds can be partial, and a sale stays refundable until it is refunded in full. Refund 25.00 of a 100.00 order today and the Refund button offers the remaining 75.00 later. Only a full refund revokes access and reverses commission.
  • The grace period for a failed subscription payment is configurable under Settings, Payments (0 to 90 days, default 7). It was previously fixed at 7 days with nothing in the interface to show it.
  • Mobile push notifications. Device tokens have been collected since 1.0 and nothing ever sent to them. Add your Firebase service account under Settings, Emails and members get the notifications they already receive in-app and by email on their phone as well. Off by default; a site without a mobile app needs nothing.
  • Instructor withdrawals now capture where the payout should go. When an instructor requests a PayPal payout they enter the PayPal email, and the site owner sees it on the withdrawal so they know exactly where to send the money. An "arrange by email" option is available for any other method, and it stores no account details. No bank numbers are ever stored; those stay with your payment gateway.
  • Members can block another member. The blocked member's comments and reviews no longer appear to them, and they can unblock anyone from a list on their account. Reporting content to a moderator was already available.

Improve

  • The Analytics page now shows completion rate and average score for each course. The site owner previously saw less about their own academy than each instructor saw about their courses.
  • Learnomy follows your theme's colour scheme instead of showing its own dark-mode switch on top of it. Site owners on a theme with no dark mode can turn the switch back on with the learnomy_standalone_dark_mode filter.
  • Instructors can reach rubric grading from the grading queue when a quiz has a rubric. The screen existed but nothing linked to it.

Fix

  • Pausing a subscription now records when it was paused, and resuming clears it. A resumed subscription used to look permanently paused to reports and exports.
  • Scheduled live sessions were locked to students until the moment they began, so nobody could see the countdown or the join link. The start time is now stored separately from the drip schedule, and existing live lessons are unlocked automatically on update.
  • Tax is applied to PayPal payments, not only Stripe.
  • A course's price is charged in the currency set on its plan, instead of always using the site's default currency.
  • Zero-decimal currencies such as Japanese Yen and Korean Won are charged the exact amount, not one hundred times too much, on both Stripe and PayPal.
  • A failed subscription renewal now marks the subscription past due and begins the dunning emails on PayPal, and on Stripe for sites without Pro, matching what WooCommerce already did.
  • A course a member joined through more than one route (for example free and then a membership) no longer appears twice in My Courses, and the "Courses Enrolled" total counts it once.
  • Course prerequisites saved from the front-end course builder no longer lose the first prerequisite in the list.
  • The editor's border, background, and stretch options for an image are now saved. They were previously discarded, so the toggle appeared to do nothing and reverted on reload.
  • Certificates print correctly: the QR code no longer overlaps the signature, a long course title no longer prints through the completion date, the Modern design's signature is no longer cut off the edge of the page, and the Elegant designs now draw the border they are named for.
  • Instructors no longer see the site owner's dashboard, or links to Certificates, Settings, Modules, Categories, and Earnings that answered "Sorry, you are not allowed to access this page". They now get their own dashboard, and are told plainly when an administrator has to do something for them.
  • Licensing assets no longer fail to load on hosts where the document root does not match the plugin path (symlinked hosts, some managed hosts, local dev).
  • Partial refunds are no longer double-counted when the payment gateway's confirmation webhook arrives after an admin refund. A 25.00 refund is recorded as 25.00, not 50.00, so revenue, access, and instructor commission stay correct.
  • A sale can never be refunded past the amount charged, even if the Refund button is double-clicked or two refunds land at the same moment.
  • Uninstalling Learnomy Free no longer deletes Learnomy Pro user data - the instructor's connected payout account, LTI identity, and saved notes and bookmarks are preserved.
  • Mobile push notifications are delivered in the background instead of inside the payment webhook, so a member with several devices can no longer slow a checkout or cause a gateway to retry.
  • Image width and alignment labels in the content editor are now translatable, and the front-end course builder's live-session fields no longer emit duplicate element ids.
  • The Instructors admin page lists every instructor who teaches a course, including course authors and co-instructors. It used to show "No instructors yet" next to courses that had real instructors, because being assigned to a course did not create the instructor record the list is built from.
  • Center-aligned certificate text placed near the left or right edge no longer clips off the page in the download. It stays within the certificate and wraps if needed.
  • Right-aligned certificate text prints where it sits in the designer. It was placed from an estimate of the text width that drifted from the real width, more so for longer lines.
  • Course-access-expiry and membership-renewal reminders are written in each member's own language, not the site's.
  • With "Require login for all course content" turned on, the course grid and course catalog blocks and the XML sitemap no longer show the course list to logged-out visitors. Only the single-course pages and the REST API were covered before.

Security

  • A course's title, full description, status, and price could be read by anyone, including for draft, pending, and private courses, through the Abilities REST surface. It now applies the same visibility rules as the rest of the API.
  • A member's in-progress courses and completion percentages could be read by anyone. That data is now visible only to the member themselves and to staff.

Dev

  • New Notification_Service::send_many() queues a large recipient fan-out (bulk enrolment, announcements) through Action Scheduler. Default async; filter learnomy_notifications_async to force inline.
  • Member blocking stores a lrn_blocked_users table (database version 3.26.0) with routes POST and DELETE /users/{id}/block and GET /users/me/blocks; a blocked member is filtered from comment and review reads on every surface, and both directions are cleared on account erasure.
  • wp learnomy repair student-count counts distinct people, so a course a member joined through more than one route is no longer reported as needing repair on every run.
  • New shared gate \Learnomy\can_view_course( $course, $user_id ): every door that serves a course by ID applies the same two rules (unpublished is owner/admin only; private is owner/admin or enrolled).
  • New lesson columns scheduled_start_at and live_duration_minutes (database version 3.18.0). A live session's start no longer shares the drip column. New filter: learnomy_live_session_duration.
  • New withdrawal column destination (database version 3.19.0) holds the payout payee (the PayPal email), or stays empty for a manual arrangement. The POST /earnings/withdraw endpoint takes an optional payout_email, required when method is paypal. Readable, low-sensitivity; never a bank number.
  • New single readers for values that were previously derived in several places: tax_rate(), tax_amount(), charge_currency(), subscription_grace_days(), Course::prerequisite_ids(), datetime_local_input().
  • New filter learnomy_grading_row_actions on the grading queue, so an extension can add a grading route without forking the view.
  • Image layout is stored on the block as { width, align } and rendered as classes on the figure. Both directions are enforced by the content round-trip gate, so a layout that cannot be read back fails the build instead of being silently erased.
  • New action learnomy_webhook_deleted fires when a webhook is deleted, so an extension can clean up rows that hang off it. Learnomy Pro uses it to purge the deleted webhook's delivery log immediately instead of waiting for retention.
  • Database version 3.20.0 backfills the instructor record for existing course assignments, so course authors and co-instructors appear in the Instructors list on upgrade.

Compat

  • Requires Learnomy Pro 1.7.0 for the Pro modules. Install both updates together.

v1.6.0

July 9, 2026
New 3 Improve 2 Fix 4 Dev 2 Compat 1

New

  • Certificate library: four ready-made certificate designs (two Course Completion, two Quiz Completion) are seeded and available to every instructor out of the box, so a course can award a polished certificate with no design work.
  • Instructor availability: admin-designed certificates stay private to admins by default, and you can share any template with all instructors or specific instructors from the certificate designer.
  • Private academy: a "Require login for all course content" toggle under Settings, General puts every course, lesson, quiz, and the catalog itself behind a login.

Improve

  • Instructors now pick a certificate from a clear, labeled list (Course Completion or Quiz Completion) scoped to what they are allowed to use, instead of a long list of unlabeled templates.
  • Test payment mode is now clear and honest: one "test payment mode is on" notice instead of a misleading "customers cannot purchase" warning, and simulated Test-gateway orders are recorded at zero so they never inflate your revenue, earnings, or payouts.

Fix

  • Deleting an instructor now reassigns their courses to the site admin with a confirmation notice, instead of leaving those courses showing "Unknown".
  • The lessons list now labels standards content types correctly (SCORM, xAPI, LTI, QTI, H5P), while learners no longer see the underlying technical type on course cards.
  • Member account pages (Certificates, Notes, Spaces, Learning Paths, Cohorts, Assignments, Billing, Details) now carry proper browser and search titles instead of just the site name.
  • A certificate whose course was later deleted now verifies as "Course no longer available" and stays valid, instead of showing "Unknown Course".

Dev

  • New extension point learnomy_route_title lets add-ons title their own front-end routes; new filters learnomy_unknown_instructor_label and learnomy_technical_content_types.
  • Certificate library is an extensible registry: add designs on the learnomy_certificate_designs filter (seeded idempotently), and tune the specific-instructor picker cap with learnomy_certificate_instructor_choice_limit.

Compat

  • Requires Learnomy Pro 1.6.0 for the Pro modules. Install both updates together.

v1.5.0

July 6, 2026
New 4 Improve 6 Fix 6 Security 1 Dev 1 Compat 1

New

  • Course-approval gate. Require admin approval before an instructor's course goes live, with a global toggle, a per-instructor override, and Approve or Reject actions on the Pending Review tab.
  • Content moderation. Members can report a review, comment, or course, and admins action those reports from a new Reports queue.
  • Per-template email editor. Edit the subject and body of any Learnomy notification from Settings using merge tags, with no code.
  • SEO plugin handoff. When Yoast or Rank Math is active, Learnomy defers its canonical and Open Graph tags to that plugin while keeping its own Course structured data.

Improve

  • The Email Log now records and shows the failure reason for a failed email, adds a one-click resend, and lets you search by recipient and date.
  • Admin usability sweep: a single Learning Standards hub, a per-module surface map with Pro toggles locked when Pro is not installed, and clearer setup-wizard signposts.
  • Coupons can be restricted to specific courses with a searchable picker, and the enrollment card now reprices live when a coupon is applied.
  • The wp-admin course builder can now add a topic under a lesson without leaving the builder.
  • The course builder and lesson drip scheduling batch their database work instead of running per-row queries, so large courses load and schedule faster.
  • Removed two dead settings surfaces - the site-wide lesson-body search and the API Keys screen - that were wired to nothing.

Fix

  • Catalog search is now fully keyboard-navigable and announces the active suggestion to screen readers.
  • The instructor dashboard now shows the Awaiting Grading widget so essay and manual attempts are not missed.
  • The data-integrity CLI check now flags only genuine orphaned progress rows instead of false positives.
  • In the wp-admin course builder, a section's Rename, Move, and Delete now work the moment you add it, without reloading the page.
  • Deleting a parent course category no longer hides its sub-categories; they move up to the parent's level instead of disappearing.
  • Attempting to refund an already-refunded transaction now reports "already refunded" instead of a misleading "not completed" message.

Security

  • Closed access-control gaps found in a security sweep: the public subscribe endpoint no longer lets a paid plan be joined for free, and REST API keys are accepted only in the request header, not the URL.

Dev

  • New extension points: learnomy_lesson_unlock_date, learnomy_membership_plan_after_form, a course sidebar-card footer seam, and public per-member credential REST endpoints for certifications and teaching.

Compat

  • Requires Learnomy Pro 1.5.0 for the Pro modules. Install both updates together.

v1.4.0

July 1, 2026
New 12 Improve 8 Fix 5 Security 1 Dev 2 Compat 1

New

  • Closed course pricing. Sell a course on any external platform (your own checkout, Gumroad, a CRM) and grant access here by email, CSV bulk upload, or an automatic signed webhook; refunds can auto-revoke access. Includes a copy-paste connection recipe on the Webhooks screen.
  • Solo Academy mode. One switch turns Learnomy into a single-instructor academy, hiding every instructor-marketplace surface (instructor registration, commissions, earnings, become-instructor links) and forcing the monetization module off.
  • Large-exam mode for the Focused and Review board layouts. A clickable question map, flag-for-review, per-answer autosave, and resume to the exact question and remaining time, verified at 150 questions.
  • Five quiz layouts, each labelled with its best use case: Focused (timed exams), Classic (class quizzes), Sectioned (SAT/GRE-style), Conversational (knowledge checks), and Review board (long certification exams).
  • Group questions by subject or category across all five quiz layouts, with a per-category score breakdown in the results so a raw percentage becomes a subject-wise diagnostic.
  • Free section navigation for the Sectioned layout. Candidates choose which section to attempt first and switch between sections until they submit.
  • Rich question stems. Author a formatted passage or scenario above a question's answers, stored round-trip-safe and rendered across every quiz layout.
  • Quiz proctoring. Track when a student switches browser tabs, flag it for graders, and optionally auto-submit the quiz after a configurable number of switches; a monitored notice on the start screen tells candidates the rules before they begin.
  • Native Fediverse video. Embed PeerTube and other Fediverse videos through SSRF-guarded oEmbed discovery, with no per-domain allowlist to maintain.
  • Course search autocomplete. A typeahead dropdown of matching course names appears as you type on the catalog.
  • Content-standard foundation. New lesson content-type, first-login provisioning, and quiz hooks let the Pro SCORM, xAPI, LTI, QTI and H5P modules plug straight into Learnomy's own progress, grading and reporting.
  • The demo installer now seeds a categorized certification exam so a fresh install showcases grouped display, one-click navigation, and subject-wise scoring out of the box.

Improve

  • Add questions from the Question Bank while creating a quiz, without having to save and reopen it first.
  • The per-attempt exam-integrity report for graders now shows the submission IP address alongside the tab-switch count and late-submission signals.
  • Every front-end and admin string is translatable, including the Interactivity-API quiz, catalog and membership modules, with professional copy and refreshed language templates.
  • The quiz layout picker in the editor now describes the best use case for each of the five formats, so instructors choose the right one without guidance.
  • The membership FAQ editor is now an add/remove repeater instead of a fixed grid of blank rows.
  • Admin polish sweep: uniform on/off toggles, consistent status badges and action buttons, clearer Email Log and Settings, a shared CSV-import component, and self-contained settings cards across screens.
  • The demo installer seeds a complete, non-empty dataset on every screen (real courses, lessons, reviews, webhooks, cohorts, spaces, and a categorized certification exam) so the product demonstrates fully out of the box.
  • AI-assisted translations now ship at full coverage for 9 Free locales (German, French, Spanish, Italian, Dutch, Brazilian Portuguese, Polish, Swedish, Russian).

Fix

  • Multiple-choice answer options no longer re-shuffle when a student resumes an in-progress quiz.
  • Flag-for-review marks on the Review board layout now survive a mid-exam refresh.
  • The lesson-player sidebar now shows lessons that are not inside a section.
  • Shortcodes in lesson content and course descriptions (contact forms, WP Fusion, galleries, or any third-party shortcode) now save as the shortcode and render on the front end. They previously corrupted the saved content and could show raw data on the page. The shortcode stays visible as a shortcode in the editor and renders only in the view, exactly like a WordPress post.
  • Removed orphaned enrollment, progress and commission rows left by earlier deletes, and routed demo-data teardown through the full delete cascade.

Security

  • The incoming enrollment webhook now requires a valid HMAC signature. It grants paid access, so an unsigned or unverifiable request is rejected instead of processed.

Dev

  • New extension points: learnomy_closed_cta, learnomy_incoming_webhook_payload, learnomy_bulk_enroll_max, learnomy_section_navigation, learnomy_lesson_content_types, learnomy_provision_role, plus single-source Course pricing constants and question-type/stem seams.
  • cmi5 support is planned with a code-verified implementation plan and will land in a later release.

Compat

  • Aligned with Learnomy Pro 1.4.0. Install both updates together.

v1.3.0

June 1, 2026
New 3 Improve 2 Security 1 Dev 1

New

  • Uniform embeds. The lesson Embed type, embeds inside lesson and course content, and migrated content all render through one WordPress oEmbed pipeline as a premium responsive player, with a clean link-card fallback for anything WordPress cannot embed. Covers all built-in oEmbed providers (YouTube, Vimeo, TikTok, Spotify and ~40 more).
  • Author embed preview now matches the student view in the lesson editor and the front-end course builder, via a new REST endpoint GET /learnomy/v1/oembed-preview.
  • Translation ready. Every front-end string is translatable, and the plugin ships AI-assisted translations for 12 locales (German, French, Spanish, Italian, Brazilian Portuguese, Dutch, Polish, Swedish, Russian, Japanese, Korean, Simplified Chinese).

Improve

  • Classic-layout quizzes now reliably record short-answer, fill-in-the-blank and essay responses.
  • The lesson progress bar is calculated live from completed lessons so it always matches the X of N count.

Security

  • Embeds resolve only through WordPress's built-in oEmbed provider list, closing a server-side request risk on the author preview endpoint.

Dev

  • New filters learnomy_embed_html and learnomy_embed_oembed_args, and a new Learnomy\Content\Embed engine. Front-end account, registration and progress scripts are now i18n-wired.

v1.2.1

June 1, 2026
New 1 Fix 1

New

  • Course visibility is now a three-way choice - Public, Unlisted (hidden from the catalog but open to anyone with the direct link), or Private (enrolled students and admins only) - replacing the single Private hide-from-catalog checkbox so a course can be shared by link without being public.

Fix

  • Restored the Payment Provider Mapping fields on the membership plan editor (Stripe Test/Live Price ID, PayPal Sandbox/Live Plan ID) so plans can be mapped to provider price IDs again.

v1.2.0

June 1, 2026
New 6 Improve 2 Fix 3 Dev 4 Compat 1

New

  • Import courses, lessons, quizzes, and questions from LearnDash, Tutor LMS, and LifterLMS through a guided wizard, with an optional people tier that brings across enrollments and progress.
  • Migrations run in resumable background batches with a dry-run preview, and state up front which data is not migrated (certificates, grades, and payments).
  • Build custom account fields for registration and the account profile from a no-code builder, managed entirely by the site owner.
  • Set per-lesson access requirements through a filterable access gate, including lessons embedded outside the course player.
  • Sections are now optional in the course builder, so lessons and quizzes can sit directly under a course.
  • Reassign a course's lead author and add co-instructors from the course editor.

Improve

  • Instructor roster data can now be anonymized through dedicated privacy hooks for export and erasure requests.
  • Promoted the Abilities API from a single modules-table row to a linked, first-class integrations doc.

Fix

  • Removed per-row queries in the instructor Q&A inbox, students-at-risk, and recent-transactions widgets so large dashboards load in a constant query count.
  • The grading detail screen no longer fatals on a malformed format string, and editing a lesson no longer mangles its media IDs.
  • Corrected a malformed placeholder in the revenue-trend widget that could fatal on PHP 8.

Dev

  • Added a wp learnomy migrate WP-CLI command and REST endpoints that drive the import wizard.
  • Added editor-field and integration hook seams so third-party fields round-trip through the course and account editors.
  • Added an AI Agents and Abilities API integration guide covering the 34 AI-discoverable LMS actions across 6 categories.
  • Added a Dutch (nl_NL) translation and regenerated the .pot.

Compat

  • Aligned with Learnomy Pro 1.2.0. Install both updates together.

v1.1.1

June 1, 2026
Improve 1 Fix 9 Dev 1 Compat 1

Improve

  • Reworded user-facing strings to plain English across admin and front-end (replaced stylistic dashes with natural punctuation).

Fix

  • Deleting a course category that still has courses now moves them to Uncategorized and removes the category, instead of appearing to do nothing; the confirm explains the move and the result reports how many courses moved.
  • Checkout could subscribe a member to the same membership plan twice and double-bill; a second active subscription to the same plan is now rejected, and a different plan is directed to billing to change plans.
  • All 12 Gutenberg blocks now load their styles on any page, not only on Learnomy routes; they previously rendered unstyled elsewhere.
  • The membership pricing block now ships its own styles and shows the currency symbol on the amount.
  • The become-an-instructor page now sends anonymous visitors to the public registration form instead of bouncing them to wp-login and losing the applicant.
  • An unknown course URL now renders the theme 404 page and title instead of a "Course" title on a not-found body.
  • Course and catalog grids no longer leave blank trailing columns when there are fewer cards than columns.
  • The PWA manifest is now served dynamically with valid icons and a non-redirecting start URL, fixing manifest and icon 404s.
  • Documentation and marketing copy corrected against the shipped product: REST auth endpoint (/auth/token) and endpoint count (166), the five Pro quiz question types, the Pro module count (15), lesson content types, settings navigation, and analytics docs.

Dev

  • Full translation readiness: regenerated the .pot, added translator comments to every placeholder string, and registered front-end script strings (modals, course builder, quiz editor, toasts) for translation. The WordPress.WP.I18n check is clean.

Compat

  • Aligned with Learnomy Pro 1.1.1. Install both updates together.

v1.1.0

June 1, 2026
New 2 Fix 3 Compat 1

New

  • Action Scheduler is now bundled, so recurring jobs (membership renewals, reminders, dunning, webhook delivery, large broadcasts) run on a standalone install with no WooCommerce required.
  • BuddyX and BuddyX Pro theme bridge: Learnomy adopts the theme palette and follows its dark mode automatically.

Fix

  • Bearer token authentication now works for REST and mobile clients; tokens were issued but never read, returning 401.
  • The certificate designer pre-loads the Classic template when creating a new certificate instead of opening to a blank canvas.
  • Cancelling a membership now unenrolls the member from the courses that membership granted, even on enrollments created without a stored plan id.

Compat

  • Aligned with Learnomy Pro 1.1.0. Install both updates together.

v1.0.0

Note 19

Note

  • Initial release.
  • 37 custom MySQL tables: courses, quizzes, certificates, memberships, revenue, and more.
  • Course builder with sections, lessons, and topics.
  • 6 quiz question types with auto-grading and manual essay grading.
  • 5 quiz display templates: Focused, Classic, Sectioned, Conversational, Review Board.
  • Certificate generation with UUID verification, QR codes, and Ed25519 signatures.
  • in membership plans with Stripe and PayPal recurring billing.
  • 2-party commission system with instructor payout tracking.
  • Coupon system with percentage and fixed discounts.
  • 145 REST API endpoints under `learnomy/v1` with JWT auth and batch support.
  • 12 Gutenberg blocks, 6 sidebar widgets, 10 shortcodes.
  • 5 WP-CLI top-level commands with sub-commands for inspect, test, and selfcheck.
  • no React, no jQuery, no build step.
  • 34 AI-discoverable LMS actions across 6 categories.
  • FULLTEXT search, JSON-LD schema markup, and XML sitemap.
  • 8 HTML email templates.
  • GDPR data export and erase compliance.
  • Follows your theme's light or dark colour scheme.
  • BuddyNext and Jetonomy ecosystem hooks.