A client was getting phone calls from course participants, even late at night, because they couldn’t access the course they had just enrolled in.
LearnDash, the Learning Management System (LMS), was not sending emails when people registered for their courses?
We had just dealt with this exact problem on a previous client’s website, and here’s what we did to fix it.
What Was Happening
New users were signing up for courses but getting zero emails. No welcome message, no login details, nothing. Radio silence. 🤐
We checked the LearnDash » Notifications settings, and everything looked fine.
The “New User Registration” email was set up and ready to go… but when we tested it? Nothing.
Users got enrolled in the course just fine, but no emails went out to them or the site admin.
Why This Happens
Turns out, LearnDash doesn’t handle registration emails brilliantly out of the box, especially when:
- Your course is free (so WooCommerce hooks don’t kick in)
- You’re using that Modern UI modal pop-up for registrations
- You want to grab extra details like phone numbers or company names
- You’re expecting it to work like WooCommerce or other membership plugins
What We Needed to Do
We had four main goals:
- Collect custom fields like first name, last name, mobile, and company name
- Actually get those registration emails to send (to both the user and admin)
- Make sure the admin email showed which course the person signed up for
- Send users to the right place after they register
How We Solved It
Built a Proper Registration Page:
First thing we did was ditch the modal pop-up. We created a dedicated registration page using the [ld_registration] shortcode. This gave us way more control over how everything looked and worked.

Added the Extra Fields We Needed:
We used a LearnDash hook (learndash_register_fields_after) to add mobile phone and company name fields, then set up custom validation to make sure people actually filled them in.
Tracked Which Course People Were Signing Up For:
When someone clicks a course registration link, LearnDash adds ?ld_register_id= to the URL. We grabbed that value and stored it temporarily using PHP $_SESSION so we could include the actual course name in the admin email.
Ditched the Built-In Email System:
The LearnDash notification system just wasn’t cutting it, so we built our own using custom code in wp_mail(). Now it:
- Sends a nice welcome email to the new user
- Sends all the registration details to the admin, including which course they picked
Blocked Random Access to the Form:
We added a simple redirect: if someone tries to visit /registration/ without that ld_register_id parameter, they get bounced to the /our-courses/ page.
This stops people from stumbling onto the form when they’re not actually registering for anything.
What We Ended Up With
✅ Emails go out every single time now
✅ All the course and user info gets captured properly
✅ The form looks good and sits nicely in the page
✅ Only people actually registering for courses can use it
Creating a Proper “My Courses” Page
We ran into another issue: once people registered and logged in later, LearnDash just dumped them on the standard WordPress dashboard.
Not ideal when you’re trying to keep things looking professional and user-friendly.
And… course participants had no clear way to get back to their courses after that first registration. They’d log in and see the backend WordPress interface, which is confusing if you’re just there to take a course.
So we built a custom “My Courses” page that:
- Shows all the courses they’re enrolled in
- Gives them quick access to continue where they left off
- Keeps them away from the WordPress admin area entirely
- Looks consistent with the rest of the site
Now when participants log in, they land on a clean page that makes sense. They can see their courses, track their progress, and jump straight back into learning without getting lost in WordPress menus they don’t need to see.

Worth Doing If You’re Having Similar Issues
If you’re running LearnDash and struggling with reliable registration emails (especially for free courses), this approach works really well.
It’s a bit more work upfront, but you avoid all the headaches that come with the built-in notification system… and the late night phone calls. 😩
If you need help setting up custom registration workflows, this solution gives you proper control over the whole registration process, without fighting with the default settings.
