SEO for online courses and LMS sites on WordPress
SEO for online courses depends on a small number of strong public pages: a course page that explains what students will learn and for whom, a detailed curriculum, free lessons or tutorials that rank for the questions your course answers, and an instructor page that proves expertise. The paid lessons themselves should stay out of search.
WordPress LMS plugins create a URL for every lesson, topic and quiz. Behind a login, those pages show search engines a login prompt or a sliver of content, which adds hundreds of thin URLs and can outnumber the pages you actually want found.
Pages every online courses site needs
- Course landing page. Outcomes, who it is for, prerequisites, format, length, price and refund policy, as text. Sales pages built from images of text give search engines nothing.
- Curriculum page or section. Module and lesson titles with one-line descriptions. Specific lesson topics match specific searches.
- Free lessons and tutorials. Public, useful lessons on topics from the course. They rank, earn links and show the teaching quality.
- Instructor page. Background, credentials and real work, which supports every claim on the course page.
- Student results and reviews. Outcomes and reviews from students, shown on the course page.
Keep locked lessons out of the index
Check how many lesson, topic, quiz and certificate URLs Google has indexed with a site: search and the Pages report in Search Console. For content that requires enrollment, noindex those post types. In Hydrogen SEO, set Noindex for the LMS post types on Hydrogen SEO > Robots, and they will also drop out of the XML sitemap. Do not block them in robots.txt as well, or Google cannot read the noindex.
Leave free preview lessons indexable, and treat them as real content: a full lesson, not a teaser. Keep student dashboards, profiles and checkout steps noindexed too.
Course schema after the 2025 change
Google phased out the Course info rich result in 2025, so Course markup no longer earns a special display. It is still valid schema.org and describes the course precisely: name, description and provider, plus hasCourseInstance for mode and schedule, offers for price and instructor for who teaches it. Answer engines summarizing "best course for X" can read those facts.
Hydrogen SEO has a Course type in the SEO Settings sheet. Its Schema Markup module covers posts and pages by default, so if your LMS uses its own course post type (LearnDash uses sfwd-courses), add it with the hydrogen_seo_schema_markup_post_types filter. Course reviews shown on the page can carry aggregateRating.
Competing with marketplaces and your own videos
If the same course is on Udemy or another marketplace, that listing may outrank your own site for the course name. Make your own page the fuller one: a detailed curriculum, free lessons, a clear refund policy and an offer the marketplace does not have.
Video is the other overlap. Promo and free lesson videos embedded on your pages can appear in video results; Hydrogen SEO's video sitemap can list them. Private lesson videos hosted with domain restrictions should not be in any sitemap. Transcripts of free lessons make those pages searchable in a way the video alone is not.
Course schema example
A starting point for your site. Replace every value with your own, and only mark up what is visible on the page.
{
"@context": "https://schema.org",
"@type": "Course",
"name": "Bookkeeping Foundations for Small Business Owners",
"description": "A six-week course covering chart of accounts setup, reconciliation, payroll basics and monthly reporting in QuickBooks Online.",
"provider": {
"@type": "Organization",
"name": "Ledgerwise Academy",
"url": "https://example.com/"
},
"instructor": {
"@type": "Person",
"name": "Nadia Brooks",
"jobTitle": "CPA"
},
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "PT24H"
},
"offers": {
"@type": "Offer",
"price": 249,
"priceCurrency": "USD",
"category": "Paid"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.8,
"ratingCount": 143
}
}
Checklist
- Write the course page as text with outcomes, format and price
- Publish a curriculum with lesson titles and descriptions
- Noindex locked lesson, topic and quiz post types
- Keep noindexed LMS types crawlable, not blocked in robots.txt
- Make free preview lessons complete and indexable
- Add Course schema with provider, instructor and offers
- Add your LMS course post type to Hydrogen's schema post types
- Show student reviews on the course page before marking them up
- Add transcripts to free video lessons
Common questions
Is Course schema still worth adding?
Google no longer shows the Course info rich result, but the markup is valid and gives search engines and AI systems exact facts about your course. It is low effort if your SEO plugin supports it.
Should lesson pages be indexed?
Only public ones. Lessons behind enrollment show search engines little or nothing, so noindex them and let free lessons rank instead.
Why does Udemy outrank my own course page?
Marketplaces have strong domains. A more detailed page on your site, with a curriculum, free lessons and reviews, gives Google a reason to rank you for your own course name.