If you want to sell online courses with WordPress, the LearnDash and WooCommerce combination is the most powerful setup available. Together, they give you a fully featured learning management system paired with a battle-tested ecommerce engine, all on infrastructure you own and control. This guide covers the complete LearnDash WooCommerce integration: installing and connecting both plugins, creating course products, setting up subscriptions, issuing certificates, and building a student dashboard that keeps learners engaged.
Why LearnDash + WooCommerce Is the Right Stack
WordPress powers more than 43% of all websites, and for course creators, that dominance matters. You get access to thousands of plugins, a massive community, and complete ownership of your content and student data. LearnDash is the LMS that serious course creators choose, it handles course structure, quizzes, certificates, and drip content. WooCommerce handles payments, subscriptions, coupons, and order management. When you connect them, you get a course platform that rivals Teachable or Kajabi without the monthly per-student fees.
Here is what the combined stack gives you out of the box:
- Sell individual courses as one-time purchases
- Offer course bundles at a discount
- Run monthly or annual subscription memberships
- Issue branded completion certificates
- Create a custom student dashboard with progress tracking
- Apply coupons, run flash sales, and set up upsells
- Accept payments via Stripe, PayPal, and 100+ gateways through WooCommerce extensions
Prerequisites Before You Start
Before installing either plugin, make sure your hosting environment is ready. LearnDash and WooCommerce together are not lightweight, they deserve a solid foundation.
Hosting Requirements
- PHP 8.1 or higher, Both plugins are fully tested on PHP 8.2
- MySQL 8.0 or MariaDB 10.6+
- 512 MB RAM minimum, 1 GB or more recommended for active student counts above 100
- SSL certificate, Mandatory for any payment processing
- WordPress 6.4+
Managed WordPress hosts like Kinsta, WP Engine, or Cloudways are solid choices. Avoid shared hosting if you expect more than 50 concurrent students, the database connection limits will cause slowdowns during quizzes.
Plugins You Will Need
Plugin | Purpose | Cost |
|---|---|---|
LearnDash LMS | Course structure, quizzes, progress tracking | $199/year |
WooCommerce | Payments, orders, subscriptions engine | Free |
LearnDash WooCommerce Integration | Bridges the two platforms | Included with LearnDash or free add-on |
WooCommerce Subscriptions | Recurring payments for courses | $279/year |
Stripe for WooCommerce | Card payments with SCA support | Free core, fees apply |
Step 1: Install and Configure LearnDash
Purchase LearnDash from LearnDash.com and download the plugin zip. Install it via Plugins > Add New > Upload Plugin, then activate. On activation, LearnDash adds a new top-level menu in your WordPress dashboard.
LearnDash Basic Settings
Navigate to LearnDash LMS > Settings and configure these first:
- PayPal Settings, You can set up PayPal here for LearnDash’s native checkout, but you will replace this with WooCommerce shortly. Skip for now.
- Custom Labels, Rename “Course,” “Lesson,” “Topic,” and “Quiz” to match your brand. A cooking school might use “Recipe Series,” “Technique,” “Skill,” and “Assessment.”
- Course Grid, Enable the course grid add-on to display courses in a visual card layout.
- Login/Registration, Choose whether students register on your site or use WooCommerce’s checkout account creation. With WooCommerce integration active, keep this set to WooCommerce.
Create Your First Course
Go to LearnDash LMS > Courses > Add New. You will see a Gutenberg-based editor with a course builder sidebar. Fill in the course title, description, and then use the course builder to create your structure:
- Sections, Top-level groupings (e.g., “Module 1: Getting Started”)
- Lessons, Individual video or text lessons within a section
- Topics, Sub-items within a lesson for granular content
- Quizzes, Assessments attached to lessons or sections
Under Settings > Access Settings on the course page, you have three access options: Open (free, no enrollment), Free (requires enrollment but no payment), and Buy Now/Recurring Subscription. Set this to Buy Now, WooCommerce will handle the actual payment flow once connected.
Step 2: Install WooCommerce and Configure Payments
Install WooCommerce from the WordPress plugin directory. The setup wizard runs on first activation, work through it to set your store location, currency, and payment methods. If you want a deeper look at WooCommerce itself, the complete WooCommerce setup and customization guide covers advanced configuration in detail. For course sales, you typically need:
- Stripe, Best for global card payments. Install the official Stripe for WooCommerce plugin.
- PayPal Payments, Required if your audience expects PayPal checkout.
- Local bank transfer or offline methods, Optional for B2B corporate training sales.
A lighter-weight checkout alternative: LearnDash FluentCart Integration
WooCommerce is the right choice for most LearnDash setups, but it carries meaningful overhead: a product catalog, order management system, shipping engine, and tax configuration layer that course sellers rarely need. If your site sells courses only and you want a simpler checkout with a smaller footprint, the LearnDash FluentCart Integration by Wbcom Designs bridges LearnDash to FluentCart, a modern, lightweight ecommerce plugin built specifically for digital product sellers.
With this integration, a completed FluentCart order automatically enrolls the student in the linked LearnDash course, the same behavior you get with WooCommerce, but with a checkout flow that has fewer configuration screens and no shipping or inventory management to disable. Access revocation on refund and cancellation works the same way.
When to choose FluentCart over WooCommerce for course sales:
- Your site sells courses only, with no physical products, subscriptions managed elsewhere, or WooCommerce-dependent extensions already in use.
- You want a faster checkout with fewer form fields and no cart page.
- You are starting a new course site and want to minimize the plugin stack from day one.
Stick with WooCommerce if: you need WooCommerce Subscriptions for recurring billing, you already use WooCommerce for other products on the same site, or you rely on WooCommerce extensions like Stripe Billing, AffiliateWP’s WooCommerce integration, or FunnelKit.
Important WooCommerce Settings for Digital Courses
Because you are selling digital products, adjust these settings in WooCommerce > Settings:
- Disable shipping, Go to Shipping > Shipping Zones and remove all zones, or set all course products as virtual so WooCommerce skips shipping entirely.
- Tax handling, Digital goods tax rules vary by country. If selling to EU customers, you may need the EU VAT Compliance plugin. Consult a tax professional.
- Account creation at checkout, Under Settings > Accounts & Privacy, enable “Allow customers to create an account during checkout.” This is how students get their WordPress user account.
- Order emails, Customize the New Order and Processing Order emails under WooCommerce > Settings > Emails to include course access instructions.
Step 3: Connect LearnDash and WooCommerce
The LearnDash WooCommerce integration is the bridge that makes course enrollment happen automatically when a student completes a WooCommerce purchase. If you have LearnDash 4.0 or later, the integration is built in. For older versions, install the free LearnDash WooCommerce Integration plugin from the WordPress plugin repository.
Enabling the Integration
Navigate to LearnDash LMS > Settings > Integrations > WooCommerce. Toggle the integration on. Once active, you will see a new field on every WooCommerce product page: LearnDash Course. This is where you link a product to a course.
How the Integration Works
When a student completes checkout and their WooCommerce order moves to Processing or Completed status, the integration fires an enrollment action that grants the student access to the linked LearnDash course. If the order is refunded or cancelled, access is revoked automatically. This is the behavior you want, no manual enrollment, no support tickets asking “how do I access the course?”
The moment a student’s payment clears, they get course access. No manual steps, no waiting for an email. That’s the power of a properly connected LearnDash WooCommerce setup.
Step 4: Create Course Products in WooCommerce
Every course you want to sell needs a corresponding WooCommerce product. Go to Products > Add New.
Product Configuration for a Single Course
- Product name, Match this to your course title or use a marketing-optimized name.
- Product type, Set to Simple product for a flat one-time purchase.
- Virtual, Check this box. No physical shipping is involved.
- Regular price, Set your course price.
- Sale price, Optional. Use scheduled sales for launch promotions.
- Product description, Write a compelling sales description with your target audience, what they will learn, and the outcomes they can expect. This appears on the product page and in WooCommerce emails.
- Product image, Use a 1200x628px image. This appears in the WooCommerce product gallery and in order emails.
- LearnDash Course field, Scroll to the LearnDash meta box and select the course to grant access to upon purchase.
Course Bundles
To sell multiple courses together at a bundle price, create a single WooCommerce product and use the LearnDash Course field to select multiple courses. When a student buys the bundle, they are enrolled in all selected courses simultaneously. This works natively, no additional plugin required.
Variable Products for Tiered Access
If you want to sell a course with different access tiers (for example, Basic at $99 and Premium with coaching calls at $299), use a Variable product with two variations. Assign different courses or course bundles to each variation through the LearnDash integration. This is how you build tiered pricing without separate checkout pages for each tier.
Step 5: Setting Up Course Subscriptions
Subscriptions are where the LearnDash WooCommerce setup really shines for recurring revenue. You need the WooCommerce Subscriptions plugin ($279/year from WooCommerce.com) to enable recurring payments.
Creating a Subscription Product
With WooCommerce Subscriptions installed, you get a new product type: Simple subscription and Variable subscription. Create a new product, set the type to Simple subscription, and configure:
- Price, The recurring amount (e.g., $29)
- Billing interval, Every month, 3 months, 6 months, or annually
- Subscription length, Ongoing or for a fixed number of billing periods
- Sign-up fee, Optional one-time fee at checkout (useful for onboarding or materials)
- Free trial, Offer 7 or 14 days free to reduce purchase friction
Connect the subscription product to one or more LearnDash courses via the LearnDash Course field. Students who subscribe get course access immediately and retain access for as long as their subscription is active. When a subscription lapses or is cancelled, LearnDash automatically unenrolls them.
Monthly Membership Model
Many course creators use the subscription model to sell an all-access library membership. Create a single subscription product at $49/month, link it to every course in your catalog, and students can access everything while subscribed. This works particularly well for creators who release new content monthly, the ongoing value justifies the recurring payment. For a deeper look at membership architecture, the complete guide to building a WordPress membership site covers membership plugin options, access tiers, and drip content strategies.
Annual Subscriptions with a Discount
Use a Variable subscription product with two variations: monthly at $49 and annual at $399 (saving $189). Present both on the product page so students can self-select. The annual plan reduces churn and improves your cash flow predictability significantly.
Step 6: Issuing Course Completion Certificates
Certificates are a powerful motivator that increases course completion rates. LearnDash has a built-in certificate system powered by the TCPDF library that generates PDF certificates on demand.
Creating a Certificate Template
Navigate to LearnDash LMS > Certificates > Add New. The certificate editor is a standard WordPress post editor where you design your certificate using HTML and CSS shortcodes. LearnDash provides dynamic shortcodes that pull in the student’s name, course name, completion date, and quiz scores.
The most useful certificate shortcodes are:
{learndash_certificate_user}, Student’s display name{learndash_certificate_course}, Course title{learndash_certificate_date}, Completion date{learndash_certificate_quiz_result}, Quiz score percentage
For a professional-looking certificate, use a landscape orientation (set in the certificate settings under Background Image). Upload a branded background image at 3508x2480px (A4 landscape at 300dpi), then position your text fields over it using absolute CSS positioning in the content editor.
Attaching a Certificate to a Course
Open your course editor and scroll to Settings > Course Certificate. Select the certificate template you just created. Under Course Certificate Earned, choose when the certificate is issued:
- On course completion, Student completes all lessons and topics
- On quiz pass, Student passes a final quiz with a minimum score you define
Once attached, a “Get Your Certificate” button appears on the course completion page. Students can download their PDF certificate immediately. The certificate is also linked from the student dashboard under their completed courses.
Using a Third-Party Certificate Service
For more visually polished certificates, the WISDM Certificate Builder for LearnDash and Canva-based certificate generators are popular alternatives. You can also integrate with Accredible or Credly if you need verifiable digital credentials with shareable URLs for LinkedIn.
Step 7: Building the Student Dashboard
The student dashboard is the first page a learner sees after logging in. A well-designed dashboard drives course completion by making progress visible and navigation frictionless.
LearnDash Default Dashboard
LearnDash includes a shortcode-based dashboard out of the box. Add the [ld_course_list] shortcode to any page to display a grid of courses the student is enrolled in, with progress bars. The [learndash_user_course_points] shortcode shows gamification points if you have that feature enabled.
For the student dashboard page, create a new WordPress page called “My Dashboard” or “My Courses” and add these shortcodes:
[ld_course_list mycourses="true" progress_bar="true"], Shows only the logged-in student’s enrolled courses with progress[learndash_profile], Displays the full student profile with course history, quiz attempts, and certificate downloads
Customizing with the Course Grid Add-On
The LearnDash Course Grid add-on (included in the LearnDash Pro package) transforms the plain list into a card-based grid with thumbnail images, progress bars, category filters, and sorting options. This dramatically improves the visual experience for students with multiple enrolled courses.
Enable it under LearnDash LMS > Add-ons. Then on your dashboard page, use:
[ld_course_list mycourses="true" course_grid="true" col="3"]for a three-column grid of enrolled courses
Integrating WooCommerce Account Pages
WooCommerce has its own “My Account” page at /my-account/ where students manage their orders, subscriptions, billing info, and payment methods. You have two options for handling the dual-dashboard situation:
- Add a LearnDash tab to WooCommerce My Account, Use the LearnDash Course My Account Tab add-on or a lightweight custom snippet to inject a “My Courses” tab directly into the WooCommerce account menu. This keeps everything in one place.
- Separate pages with clear navigation, Keep the LearnDash dashboard and WooCommerce My Account as separate pages, but link between them clearly in your header navigation.
Option 1 is the better user experience for most course sites. Students should not have to think about which page to visit for which action.
Using a Page Builder for a Custom Dashboard
If you want a fully branded dashboard with a custom layout, Elementor and Divi both have LearnDash widgets. The LearnDash Elementor Add-on provides dedicated widgets for course listings, progress bars, quiz results, and profile fields that you can drag and drop into any layout. This is the approach for course creators who invest heavily in brand design.
Step 8: Protecting Course Content
Course content protection works through LearnDash’s enrollment check. Every lesson and topic page checks whether the current user is enrolled in the parent course. If not, they see a paywall message with a link to purchase.
Drip Content Scheduling
Drip content releases lessons on a schedule rather than all at once. This is useful for cohort-based courses or programs designed to prevent content overwhelm. Under each course’s Settings, enable Course Schedule and set a lesson release interval (e.g., new lessons every 7 days after enrollment date).
Prerequisites and Course Ordering
If you have a multi-course curriculum, LearnDash lets you set course prerequisites. A student cannot access Course 3 until they complete Course 1 and Course 2. Configure this under Settings > Course Access Settings > Prerequisites on the course edit screen.
Step 9: Coupons, Upsells, and Revenue Optimization
WooCommerce handles all promotional mechanics natively. Here is how to use them for course sales:
Creating Course Coupons
Go to Marketing > Coupons in WooCommerce. Create a coupon with a percentage or fixed discount. Under Usage Restrictions, you can limit the coupon to specific products (your course products) and set a minimum order amount. Under Usage Limits, cap total uses for scarcity-based launches.
Order Bumps and Upsells
WooCommerce core supports linked products (upsells and cross-sells) that display on the product page and cart. For more aggressive conversion optimization, plugins like WooCommerce Checkout Add-Ons or FunnelKit let you add order bumps directly on the checkout page, a checkbox offer for an additional course at 50% off, for example.
Affiliate Program
If you want to grow via affiliates, AffiliateWP integrates with both WooCommerce and LearnDash. Affiliates get a unique referral link, and AffiliateWP tracks conversions and commission payouts automatically. This is one of the fastest ways to scale course sales without spending on ads.
Common Issues and How to Fix Them
Even with a well-configured setup, a few problems come up regularly. Here is what to watch for:
Student Not Getting Course Access After Purchase
This is the most common support ticket on LearnDash + WooCommerce setups. Causes include:
- Order status stuck at Pending, Happens with PayPal if the IPN (Instant Payment Notification) is not configured. Check PayPal settings and WooCommerce payment gateway logs.
- Wrong product linked to course, Verify the product’s LearnDash Course field is set correctly.
- Integration not enabled, Double-check under LearnDash > Settings > Integrations > WooCommerce.
- Caching problem, If you use a page caching plugin, purge the cache after purchases. Some caching plugins cache the “not enrolled” message even after enrollment.
Certificate Not Generating
If the certificate download button does not appear or the PDF is blank, check:
- Is the certificate attached to the course in Settings > Course Certificate?
- Has the student met the completion criteria (all lessons done, or quiz passed)?
- Is your server’s
tmpdirectory writable? TCPDF writes temporary files there.
Subscription Cancellation Not Revoking Access
This is usually a timing issue. WooCommerce Subscriptions fires the unenrollment action when the subscription status changes to “Cancelled” or “Expired.” If access persists, check that the LearnDash integration is listening to the correct WooCommerce subscription hooks. A plugin conflict can sometimes silence these hooks, deactivate other plugins and retest.
Best Practices for Scaling Your Course Business
Once the technical foundation is in place, these practices help you scale without technical debt:
- Use a staging environment, Before updating LearnDash or WooCommerce, test on a staging clone. Major version updates occasionally break integrations.
- Back up before every update, Student enrollment data lives in the WordPress database. An interrupted database migration can corrupt enrollment records. Use Updraft Plus or similar.
- Separate the WooCommerce product page from the course landing page, The WooCommerce product page is your checkout endpoint. Build your course sales page separately with full storytelling, testimonials, and FAQs, then link a “Enroll Now” button to the WooCommerce product for checkout.
- Monitor order completion rates, Install a checkout analytics tool or use WooCommerce’s built-in reports to track abandoned carts. Even a 5% improvement in checkout completion significantly impacts revenue.
- Enable lazy loading for video, If your lessons host videos on Vimeo or Wistia, lazy load them so the lesson page loads fast even with multiple video embeds.
- Use object caching, Redis or Memcached dramatically reduces database load once you have 200+ active students. Kinsta and WP Engine offer Redis as a standard feature.
Learnomy: One Plugin, No Add-On Bill
Most free LMS plugins hold core features behind paid extensions. Learnomy flips that model: courses, quizzes, certificates, checkout, and memberships all ship in the free plugin. You get the complete teaching path without buying anything extra.
Best for: Course creators who want a full feature set without tracking down and paying for five separate add-ons.
- Unlimited courses, sections, lessons, and topics at no cost
- Built-in Stripe checkout, memberships, and content drip in the free tier
- Signed certificates with QR verification included, not sold separately
Start with Learnomy for the full free feature set, or upgrade to Learnomy Pro when you need instructor revenue splits, learning paths, and cohort spaces.
Conclusion
Selling online courses with WordPress using the LearnDash and WooCommerce integration gives you a complete, self-hosted platform that you control entirely. You own the student data, keep 100% of revenue (minus payment processor fees), and can customize every aspect of the purchase and learning experience. The setup takes a few hours to get right, but the result is a course business with no per-student fees, no platform risk, and unlimited scalability.
Start with a single course product, validate that the enrollment, certificate, and student dashboard flow all work correctly, then expand to subscriptions and bundles. Once the technical foundation is solid, your energy goes toward content and marketing, where it belongs.
If you are looking to scale beyond a single-instructor model, the complete guide to building a WordPress marketplace with WooCommerce and Dokan covers multi-vendor selling, the next level for course creators who want to host other instructors on their platform. To layer affiliate revenue alongside direct course sales, the guide to building a WordPress affiliate marketing and review site walks through the full setup.
Frequently Asked Questions
Do I need WooCommerce Subscriptions to sell courses on a recurring basis?
Yes. LearnDash’s native recurring option is limited, and WooCommerce Subscriptions is the standard solution for reliable recurring billing with failed payment retries, subscription management for students, and proper access revocation on cancellation. It is a worthwhile investment if recurring revenue is part of your model.
Can I offer a free preview of a paid course?
Yes. In LearnDash, individual lessons can be set as “Free Sample”, they are visible to non-enrolled visitors while the rest of the course is locked. This lets you give a taste of your teaching style without requiring a purchase. Many course creators make the first two lessons free to reduce conversion friction.
What is the best payment gateway for selling courses internationally?
Stripe supports 135+ currencies and is available in most countries. It handles card payments, Apple Pay, Google Pay, and Buy Now Pay Later options like Klarna in one gateway. For markets where Stripe is not available, PayPal is the universal fallback. Configure both to maximize coverage.
How do I migrate my existing courses from Teachable or Kajabi to LearnDash?
There is no automated migration tool. Export your course content as video files, transcripts, and lesson materials, then rebuild the course structure in LearnDash. For student data, export your student list from your existing platform, create WordPress users in bulk via WP-CLI or a CSV importer, then manually enroll them in the corresponding LearnDash course using the LearnDash group enrollment feature.
Is LearnDash GDPR compliant?
LearnDash itself does not process payment data, so PCI compliance falls on WooCommerce and your payment gateway (Stripe and PayPal are PCI-compliant). For GDPR, LearnDash stores user progress data in your WordPress database. You are the data controller, which means you need a compliant privacy policy, a cookie consent mechanism, and a process for handling data deletion requests. The WP GDPR Compliance plugin can help automate some of those requirements.





No comments yet