Anatomy of a High-Converting LifterLMS Course Sales Page
The sections every high-converting course sales page needs, in order, and how to build each one in LifterLMS with the sales page options, course…
Read articleLifterLMS SEO is mostly about one fact: most of what you sell is hidden from search engines on purpose. Googlebot is a logged-out visitor, so it sees your course sales pages, your catalog and your blog, and almost nothing inside a course. Your rankings come from the pages you choose to make public, not from the lessons.
This guide is for course owners and the developers who build their sites. It covers what Google can actually crawl on a LifterLMS site, which page types to index or keep out, how to turn course pages, catalogs and free lessons into landing pages, and how to add course structured data. Everything about LifterLMS behaviour below was checked against the 10.x plugin source.
Start by understanding how LifterLMS treats a visitor who is not enrolled, because that is exactly how a search crawler is treated.
wp-sitemap.xml to drop lessons, quizzes, certificate templates and earned certificates.That last point catches people out. The filter only affects the sitemap built into WordPress core. If you use Yoast SEO, Rank Math or a similar plugin, it generates its own sitemap, and lessons and quizzes may appear there unless you exclude them in that plugin's settings. A sitemap full of URLs that redirect is a waste of crawl budget and shows up as noise in Search Console.
Use this as a starting point and adjust to your catalogue.
| Page type | Index? | Why |
|---|---|---|
| Course pages | Yes | Your main commercial landing pages. |
| Membership pages | Yes | Landing pages for subscriptions and bundles. |
| Course Catalog and Memberships Catalog | Yes | Hub pages that link to every course and can rank for broad terms. |
| Course category and track archives | Yes, if they have real content | Good for topic clusters once you add an introduction; thin otherwise. |
| Course tag and difficulty archives | Usually no | Rarely add unique value and often duplicate categories. |
| Free lessons | Yes, selectively | Real teaching content that can rank and convert. |
| Paid lessons and quizzes | No | Crawlers are redirected, so they cannot rank anyway; keep them out of sitemaps. |
| Student Dashboard, Checkout, account pages | No | Utility pages with no search value. |
| Certificate templates and earned certificates | No | Personal records, not landing pages. |
Earned certificates deserve a note. Students can turn on sharing for a certificate so it can be viewed publicly. That is useful for the student, but you do not want hundreds of near-identical certificate pages in the index, so keep them out of your SEO plugin's sitemap and mark them noindex.
For most course businesses the course page is the page that has to rank. LifterLMS gives you a Sales Page Content setting on each course and membership with four options:
For SEO, the first two are usually best because the course URL itself holds the content Google indexes. The redirect options move the ranking page somewhere else. That can be fine if you deliberately built a sales page with a page builder, but then the course URL should not be in your sitemap, and every internal link should point to the sales page, not the course.
Whichever you choose, the page Google sees should answer the questions a buyer types into search: who the course is for, what they will be able to do, what is included, how long it takes, and what it costs. The syllabus helps here because lesson titles are visible to crawlers even though the lessons themselves are not. Write lesson titles that describe the skill, not "Lesson 4". Our guide to writing a LifterLMS course sales page covers the copy itself.
The Course Catalog page (set under LifterLMS > Settings > Courses, with Courses per page and Catalog Sorting) and the Memberships Catalog are natural hub pages. Give them an introduction above the course grid, a clear H1 and links to your most important categories. A bare grid of tiles is thin content.
Each course and membership also has a Visibility setting with four values: Catalog & Search, Catalog only, Search only and Hidden. These control the catalog and your site's own search, not Google. A hidden course is still reachable by its URL and can still be indexed if anything links to it. If a course is hidden because it is a private client course or an old version, add a noindex (example below).
URL structure is set under Settings > Permalinks in the LifterLMS Permalinks section, where you can change the course, lesson, quiz, archive and taxonomy bases. Choose these before launch. Changing them later changes every URL, so you need 301 redirects from the old paths. If you are seeing broken links after a change, see fixing LifterLMS course and lesson 404 errors.
Course categories and tracks can become strong topic pages once you add a written introduction to each term and link them from your navigation. Tags and difficulty levels are better treated as filters.
Because a free lesson is public, it is the one piece of course content that can rank on its own. Use this deliberately. A good free lesson answers one specific question completely, shows the quality of the course, and ends with a clear path into the paid course or a free signup.
Two cautions. First, only ticking Free Lesson on an introduction video with two sentences of text will not rank; give it a written version or transcript. Second, the free lesson URL sits under your lesson base, so if your SEO plugin excludes all lessons from its sitemap, add free lessons back individually or link them prominently from the course page and your blog so they are discovered.
If you also want to capture emails from free lessons, our article on building a course email funnel with LifterLMS shows how the free lesson fits into a sequence.
LifterLMS core does not output JSON-LD structured data. Your SEO plugin may add generic WebPage or Article markup, and some offer a Course schema type you can assign to the course post type.
Know what Google actually uses. Its Course list structured data documentation requires name and description on each Course, recommends provider, and only shows the course carousel when at least three courses are marked up together with ItemList markup on a summary or all-in-one page. The separate Course Info rich result (with prices, ratings and course instances) was one of the features Google said in June 2025 it was phasing out, so do not build your plan around it. Other search engines and AI tools still read schema, so clean markup is worth having, but it will not rescue a weak page.
If your SEO plugin does not offer a Course type, a small snippet can add the minimum markup to single course pages. Remove it if your SEO plugin later adds its own, so you do not output two Course objects.
<?php
// Output minimal Course schema on single LifterLMS course pages.
add_action( 'wp_head', 'llmsx_course_schema' );
function llmsx_course_schema() {
if ( ! is_singular( 'course' ) ) {
return;
}
$course = llms_get_post( get_queried_object_id() );
if ( ! $course ) {
return;
}
$data = array(
'@context' => 'https://schema.org',
'@type' => 'Course',
'name' => wp_strip_all_tags( $course->get( 'title' ) ),
'description' => wp_trim_words( wp_strip_all_tags( get_post_field( 'post_content', $course->get( 'id' ) ) ), 40 ),
'url' => get_permalink( $course->get( 'id' ) ),
'provider' => array(
'@type' => 'Organization',
'name' => get_bloginfo( 'name' ),
'sameAs'=> home_url( '/' ),
),
);
echo '<script type="application/ld+json">' . wp_json_encode( $data ) . '</script>' . "\n";
}
// Noindex courses and memberships whose Visibility is set to Hidden.
add_filter( 'wp_robots', 'llmsx_noindex_hidden_products' );
function llmsx_noindex_hidden_products( $robots ) {
if ( ! is_singular( array( 'course', 'llms_membership' ) ) ) {
return $robots;
}
$product = new LLMS_Product( get_queried_object_id() );
if ( 'hidden' === $product->get_catalog_visibility() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
}
The description is taken from the first 40 words of the course description, so make that opening sentence a clear summary of the course. The wp_robots filter works with WordPress core's robots tag; some SEO plugins print their own robots tag instead, in which case set noindex in that plugin's per-post settings. Test with Google's Rich Results Test and the URL Inspection tool after deploying.
A course page targets a commercial query such as "online bookkeeping course for freelancers". Most searches in your niche are informational: how to do a task, what something means, which tool to use. Those are answered by articles, and articles are where a course site gets most of its organic traffic.
A workable structure:
Avoid putting blog posts behind a membership if you want them to rank. If you use Restrict site by membership level under LifterLMS > Settings > Memberships, the whole site is locked to one membership and crawlers will see almost nothing; that setting is for private portals, not for public course businesses.
Speed matters too, mainly through Core Web Vitals on your course and catalog pages. See how to speed up a LifterLMS site.
Not paid ones. A visitor who is not enrolled, including a crawler, is redirected from the lesson to the course page. Lessons marked as free lessons are public and can be indexed.
No. The core plugin does not output JSON-LD. Use your SEO plugin's schema settings or a small custom snippet like the one above.
No. The catalog is a useful hub page. Give it an introduction and keep it indexed. Noindex utility pages such as the Student Dashboard and Checkout instead.
No. It only hides the course from the catalog and on-site search. Add a noindex if the course should not appear in Google.
Run a quick audit: open your SEO plugin's sitemap and remove lessons, quizzes and certificates; check each course's Sales Page Content setting; add introductions to the catalog and your main categories; and decide which free lessons deserve to rank. Then plan five to ten articles that link into your best-selling course.
If you want this done properly, including schema, redirects and template changes, our LifterLMS optimization service covers technical SEO and performance together. For anything that needs custom templates, see LifterLMS customization, or contact us with your site URL.
The sections every high-converting course sales page needs, in order, and how to build each one in LifterLMS with the sales page options, course…
Read article
A practical method for choosing a course price, picking the right pricing model, and translating it into LifterLMS access plans: one-time, payment…
Read article
A line-by-line guide to what a LifterLMS site really costs to launch and run: licences and add-ons, hosting, themes and plugins, third-party…
Read articleSkip the trial and error. Get specialist LifterLMS help and ship faster.