Home › Guides › How to make LearnDash certificates expire

How to make LearnDash certificates expire

Short answer

LearnDash can’t expire a certificate on its own. Its Course Access Expiration setting ends access to the course, counted from enrolment, but the certificate a student already earned stays valid. To give each certificate a real end date you need either custom code or an add-on that stores an expiry per student.

Why don’t LearnDash certificates expire?

Because LearnDash has no field for it. A LearnDash certificate is a template that turns into a PDF when a student who has completed the course opens it. It shows the completion date, and that’s all it knows about time. There’s no “valid until”, no status and nothing that changes a year later.

That’s fine for a hobby course. It’s a problem for training that has to be renewed: first aid, food hygiene, fire safety, safeguarding, CPD. An auditor asking “whose certificate is valid today?” wants a list, and LearnDash can’t produce one.

Doesn’t Course Access Expiration already do this?

No, and it’s the setting people most often mistake for certificate expiry. Course Access Expiration ends a student’s access to the course after a number of days. LearnDash’s own documentation is explicit that it limits access based on the learner’s enrolment date, not the date they finished.

Three things follow from that:

  • The clock starts at enrolment. A student who enrols in January and completes in March gets two months less validity than you meant to give them.
  • The certificate isn’t touched. Access ends, but nothing marks the certificate as expired, and a PDF they downloaded last year still looks current.
  • The data option is destructive. You can choose to delete course and quiz data when access expires. The documentation warns that deleted data can’t be recovered and recommends a backup first. That’s a clean-up tool, not a compliance record.

Course Access Expiration is the right tool for subscriptions and time-limited access. It isn’t a certificate register.

What are the options?

There are three realistic ones. Which fits depends on how many certificates you issue and who needs to check them. If you’re weighing specific add-ons, our comparison of certificate expiry options for LearnDash puts them side by side.

1. A spreadsheet and a calendar

Export completions from LearnDash, add a column with the completion date plus a year, and set reminders. It costs nothing and works for a dozen learners.

It stops working when someone leaves, when a date is typed wrong, or when you have several courses with different renewal periods. Nothing reminds the student either. Someone has to send every email by hand, and the certificate the student holds still has no expiry on it.

2. Custom code

LearnDash fires hooks when a course is completed, so a developer can store an expiry date per student and check it on a schedule. This gives you exactly the rules you want.

The cost is everything around the date. You also need reminder emails, a rule for what happens on the day, a way for an employer to check a certificate and an admin screen to extend or revoke one. Then all of it has to keep working through LearnDash updates, so budget for maintenance, not just the first build.

3. An add-on that tracks expiry per student

This is what we built LearnDash Certificate Expiry for, so treat this section as coming from the people who make one. Whatever add-on you choose, check it answers these questions:

  • Is the expiry counted from each student’s completion date, not from enrolment?
  • Does it remind students before the date, on a schedule you set per course?
  • What happens on the day: does the status change, and can course access end with it?
  • Can someone outside your site (an employer, a regulator) check a certificate without logging in?
  • How does it handle students who finished before you installed it?
  • Does it change LearnDash’s own files? It shouldn’t, or LearnDash updates become risky.

How do you set up certificate expiry with an add-on?

Here’s how it works with LearnDash Certificate Expiry, using the courses on our test site. The full walkthrough, with every setting, is in the setup guide. This is the short version.

Set the validity on the certificate

Open the certificate under LearnDash LMS → Certificates and set Valid for (days), for example 365. Use 0 for a certificate that never expires.

The validity belongs to the certificate, not the course. Every course that awards the same certificate uses the same period. If Food Hygiene Level 2 needs renewing every year and Manual Handling every three, give them separate certificates. It’s easy to miss when two courses reuse one certificate design.

Choose the certificate and reminders on the course

On the course edit screen, the Certification settings pick the certificate the course awards and when it’s granted: straight away, after payment, or after an admin approves it. The same box holds the reminder schedule, as days before expiry. The default is “180,90,60”. For a short validity period, something like “30,7” makes more sense.

Certification settings on a LearnDash course: the certificate, when it's granted, and the reminder schedule.
Certification settings on a LearnDash course the certificate when its granted and the reminder schedule

There’s also a tick box to remove the student from the course when the certificate expires. Leave it off if expired students should still be able to see their course material.

Check the result on the Certifications screen

Complete the course as a test student. A certification appears on LearnDash LMS → Certificate Expiry → Certifications, dated from that completion, with its own expiry date. On our test site that screen lists Food Hygiene Level 2, First Aid at Work and Workplace Fire Safety side by side, each student with their own date and status.

The Certifications screen: every student, course, status and expiry date in one list.
The Certifications screen every student course status and expiry date in one list

From here you can filter by course or status, extend one certification by a number of days, revoke certificates, and export the list to CSV. That export is the list the auditor asked for.

What happens when a certificate expires?

With Certificate Expiry, the certification’s status changes to expired. The public verification page shows it as expired, and the student gets the expired notice. If you ticked the option on the course, their course access ends as well.

Before that, students get the reminders from the course’s schedule. Each email can include the expiry date, the days remaining and a renewal link. Emails are sent by WordPress, so they’re only as reliable as your site’s mail setup. If reminders go missing, fix email delivery first with an SMTP plugin, then check that WP-Cron runs.

What about students who finished before you added expiry?

They aren’t picked up automatically, and no add-on should guess their dates for you. On the Certifications screen, use Grant a Certification to add them, then set each expiry date by hand to match what’s left of their original period.

Granting a certification by hand, with the validity period and optional price.
Granting a certification by hand with the validity period and optional price

If you have hundreds of earlier completions, work from a LearnDash export and do the most recent year first. Anyone who completed more than a validity period ago is already expired, and you may simply want to ask them to renew.

How does an employer check a certificate is still valid?

A PDF can’t tell anyone whether it’s current. What works is a verification link. With Certificate Expiry, you create a page with the verification shortcode, and every certificate gets its own link that can’t be guessed. Opening it shows the holder, the course and the current status: active, expired or revoked.

A QR code for that link can go on the certificate itself, so a printed copy can still be checked. It isn’t added automatically. You place one shortcode in the certificate template where you want the code to print. Our guide to certificate verification pages and QR codes covers placement and what the page should show.

What doesn’t certificate expiry fix?

  • Old PDFs. A certificate a student downloaded before it expired still exists on their computer. The verification link is what tells the truth.
  • Renewal itself. Expiry creates the job of renewing. Letting students renew on their own (retake a quiz, pay, or retake the course) is a separate step, covered in our guide to annual recertification in LearnDash.
  • Lesson-level certificates. Certificate Expiry works per course. If you award certificates for individual lessons or topics, it won’t track those.

LearnDash Certificate Expiry. Per-student certificate expiry, dated from each learner's own completion, with reminders, paid renewal and public verification.

View the add-on