LearnDash Certificate Not Generating After Course Completion? 5 Real Fixes

Muhammad Ahmad Written by Muhammad Ahmad
learndash certificate not generating illustration

A student finishes every lesson, passes every quiz, and the course shows 100% complete, but the certificate they were promised never shows up. If you’re dealing with a LearnDash certificate not generating, the cause is almost always one specific setting or plugin conflict, not a broken feature. The frustrating part is that LearnDash gives no clear error message when a certificate fails to appear, so most course creators end up guessing.

This guide walks through every real cause, in the order they actually show up in practice, based on LearnDash’s own documented behavior and the most common patterns reported across support threads and course-builder communities.

Quick Answer

A LearnDash certificate not generating almost always traces to one of five things: an image-optimization plugin interfering with the certificate’s background image, the wrong shortcode used inside the certificate template, a theme conflict that disables the block editor the Certificate Builder depends on, an outdated LearnDash version with a known PDF bug, or a media-offloading plugin replacing local image URLs the certificate needs.

๐Ÿ“‹ What’s Covered

How LearnDash Certificates Actually Work

A LearnDash certificate is a real WordPress page, built with either the classic Certificate Builder (a specific WordPress page template) or the newer block-based Certificate Builder add-on, which depends on the block editor being active. When a student meets the condition attached to it, either finishing a course or passing a quiz, LearnDash generates a PDF from that page and makes it available to download or emails it directly, depending on your settings.

Because a certificate is really just a styled page rendered into a PDF, almost every certificate problem traces back to something interfering with that rendering step: an image that won’t load, a shortcode that doesn’t resolve, or an editor conflict that stops the certificate template from working the way LearnDash expects.

Common Scenarios Where a LearnDash Certificate Won’t Generate

Before the full breakdown, here are three patterns that show up constantly in course-builder support threads. See if one matches what you’re seeing:

“The certificate page exists but shows a blank or broken image where the background should be.” This is almost always cause 1 (image optimization) or cause 4 (media offloading), both of which interfere with the certificate’s background or logo image specifically.

“The certificate shows placeholder text instead of the student’s name or course title.” That’s cause 2, the wrong shortcode type used inside the certificate template.

“The Certificate Builder add-on simply won’t open or save changes at all.” That points directly to cause 3, a theme feature that has quietly disabled the WordPress block editor.

1. An Image-Optimization Plugin Is Interfering

Image optimization plugins are a well-documented cause of certificate problems, particularly SiteGround’s own SG Optimizer plugin, which is common on SiteGround hosting by default. These plugins compress, lazy-load, or convert images to formats like WebP automatically, and the certificate’s PDF renderer doesn’t always handle that conversion correctly, resulting in a missing or broken background image on an otherwise correctly configured certificate.

โœ“

Fix: Disable image optimization specifically for the image used as the certificate’s background, either by excluding that image’s file path in the plugin’s settings or by disabling optimization for the certificate page entirely.

2. The Wrong Shortcode Is Being Used

LearnDash certificates rely on shortcodes to pull in dynamic data like the student’s name, the course title, or the completion date. Using the wrong shortcode type for the situation is a common mistake: [courseinfo] is meant for certificates tied to course completion, while [quizinfo] is meant for certificates tied to a specific quiz. Using one where the other belongs means the dynamic content simply never appears, and the certificate looks broken or empty even though the PDF technically generated. Per LearnDash’s own Certificate Builder documentation, this exact shortcode-type mismatch is one of the most frequently reported causes of a certificate showing a blank field where the completion date or course title should be.

โœ“

Fix: Confirm whether the certificate is attached to a course or a quiz, and match the shortcode type to that exactly. A course-level certificate should use [courseinfo], a quiz-level certificate should use [quizinfo].

3. A Theme Conflict Is Disabling the Block Editor

The LearnDash Certificate Builder add-on is built on top of the WordPress block editor, and depends on it being active. Some themes, Divi being a well-documented example, include a feature that restores the classic editor and disables the block editor site-wide. When that feature is turned on, the Certificate Builder add-on stops working entirely, since the interface it depends on no longer loads.

โœ“

Fix: Check your theme’s settings for any option that disables or replaces the block editor, and turn it off, at minimum for certificate pages, so the Certificate Builder add-on has the editor it needs.

4. An Outdated LearnDash Version

LearnDash version 3.2.x changed the underlying PDF library used to generate certificates, and that release introduced real, documented issues with certificate generation for some site configurations. Running an old, unpatched version of LearnDash is a genuine cause of certificate failures that has nothing to do with your own settings at all.

โœ“

Fix: Confirm you’re running the latest stable LearnDash release before troubleshooting anything else. This single check resolves a meaningful share of certificate-generation reports on its own.

5. A Media-Offloading Plugin Is Replacing Image URLs

Media-offloading plugins move your image files to external storage, like Amazon S3 or a CDN, and replace the normal local WordPress media URL with a remote one. Certificate generation can fail to correctly resolve these remote URLs during the PDF-rendering step, leading to the same missing-background-image symptom as the image-optimization cause above, but with a completely different root fix.

โœ“

Fix: If you use a media-offloading plugin, check whether it offers an exclusion setting for specific images or folders, and exclude the certificate’s background and logo images so they stay served locally.

Other Reason a Certificate Doesn’t Reach the Student: Emailed Certificates Not Arriving

If the certificate itself generates correctly but the student never receives it by email, the issue usually sits in how the certificate email is triggered rather than in the certificate template. LearnDash relies on a scheduled task to send certificate emails, and if that task isn’t firing reliably, enabling the Cron option specifically for certificate delivery is a documented fix that ensures the send step actually runs.

It’s also worth checking whether shortcodes are outputting correctly inside the emailed version specifically, since an emailed certificate can behave slightly differently than the same certificate viewed directly on the website, particularly around how the email client itself renders embedded images and attached PDFs.

How to Check What LearnDash Actually Recorded

Before assuming the certificate feature itself is broken, it’s worth confirming from the admin side whether LearnDash genuinely considers the completion condition met at all. Go to LearnDash โ†’ Users, select the student in question, and open their course or quiz report. It shows the real recorded completion status and, for quiz-based certificates, the actual score and pass or fail state, independent of what the student sees on their own screen.

This distinction matters because a certificate that never generates and a certificate that generates but displays incorrectly are two very different problems with two very different fixes. If the admin report shows the completion condition genuinely hasn’t been met yet, no certificate fix will help until that’s resolved first. If the report confirms completion but the certificate still won’t display correctly, you can rule out the completion logic entirely and focus on the five causes above instead.

This same admin report is also the fastest way to confirm whether a problem is affecting one student or many. If several students on the same course all show completed status but none of them received a working certificate, that’s a strong signal the cause is a site-wide plugin conflict rather than anything specific to one student’s account, which should immediately point you toward causes 1, 3, 4, or 5 above rather than the shortcode-specific cause 2.

A Quick Diagnostic Order to Follow

When a student reports a missing or broken certificate, check these in order. It’s faster than guessing:

  1. Confirm you’re running the latest LearnDash version.
  2. Open the certificate directly and check whether the background image loads.
  3. Check the shortcode type matches whether it’s a course or quiz certificate.
  4. Check whether your theme has disabled the block editor.
  5. Check any image-optimization or media-offloading plugin’s exclusion settings.
  6. If emailed certificates specifically aren’t arriving, enable the Cron option for certificate delivery.

Why This Specific Problem Is So Common in LearnDash

A LearnDash certificate not generating is such a widely reported issue because a certificate sits at the intersection of several separate systems at once: the WordPress media library, whatever image-optimization or offloading plugins are active, the theme’s editor behavior, and LearnDash’s own PDF rendering step. Any one of those layers can break the chain, and because they’re all independent plugins and settings rather than one single LearnDash feature, the failure can look identical on the surface while the actual fix is completely different depending on the true cause.

This is also why generic troubleshooting advice, like reinstalling LearnDash or clearing a cache, only resolves the problem some of the time. A certificate broken by an image-optimization conflict needs a completely different fix than one broken by a disabled block editor, even though both present identically: a certificate that simply won’t display correctly.

There’s a deeper reason this keeps catching course creators off guard: a certificate is usually one of the last pieces built during course setup, and often the least tested. A course creator will spend hours refining lesson content, quiz questions, and drip schedules, then add the certificate almost as an afterthought once everything else is working. Because it sits at the very end of a student’s journey, a broken certificate can go completely unnoticed until the first real student actually finishes the course, which by then might be weeks or months after launch.

Compounding this, the plugins most likely to interfere (image optimizers, media offloaders, page-builder theme settings) are usually installed and configured long before the certificate itself is built, so the conflict is baked in from day one rather than introduced by a later change. That makes it easy to blame the certificate feature itself when the real culprit has been sitting quietly in the plugin list the whole time.

One simple habit prevents most of this: test the certificate the same day you build it, not the same day you launch the course. Enroll a dummy account, complete every lesson and quiz exactly as a real student would, and confirm the certificate actually generates and downloads correctly before adding a single real student to the course. This costs ten minutes and catches an image-optimization or theme conflict while it is still a five-minute fix, rather than after dozens of students have already finished the course with a certificate that never worked.

Preventing This Before It Happens Again

The real fix isn’t just resolving one broken certificate. It’s testing the actual certificate delivery path, end to end, as a real test student, before a course fully launches. Complete a course as a test account, confirm the certificate generates with its background image intact, confirm the correct dynamic data appears, and confirm the emailed version arrives if you use email delivery. This takes only a few minutes and catches this exact class of problem before real students, and their real disappointment, are the ones who find it first.

It’s worth building this into your standard pre-launch checklist for every new course, not just the first one, since a plugin update or a new image-optimization setting introduced later can silently break a certificate that worked perfectly when the course first launched.

A useful habit worth adopting alongside this checklist: whenever you install or update a plugin that touches images (a new optimizer, a new CDN integration, a new offloading tool), re-test a certificate immediately afterward rather than assuming existing functionality is unaffected. Plugin updates are a genuinely common trigger for a certificate that worked fine last month suddenly breaking with no other visible change on the site, and catching it right after the update makes the cause obvious rather than a mystery weeks later.

It’s also worth keeping a simple record of exactly which shortcode type and which theme settings each certificate template was built with, especially on sites running several courses with different certificate designs. When a certificate does break, having that reference on hand turns a diagnostic session into a five-minute check rather than reverse-engineering the original setup from scratch.

Frequently Asked Questions

Can I manually generate a certificate for a student who already completed the course?

Yes. Once the underlying cause is fixed, LearnDash will generate the certificate correctly the next time the completion condition is checked, and in most cases an admin can also trigger this directly from the student’s course report without needing them to redo anything.

Does this affect every course on the site or just one?

It depends on the cause. A shortcode mistake is usually specific to one certificate template. Plugin conflicts (image optimization, media offloading, the block editor issue) tend to affect every certificate on the site at once, since they’re site-wide settings, not per-course ones.

Is this fixable without a developer?

Yes, in most cases. All five causes above are settings changes inside plugins already installed on your site, not code fixes. If you’ve checked all five and it’s still not resolving, that’s when it’s worth bringing in someone to look at a deeper plugin conflict.

Why does the certificate work on my computer but not for students?

This usually points to the media-offloading or image-optimization causes above, since an admin’s browser can sometimes have a cached version of the image that a new student’s browser has never loaded before, masking the real problem during your own testing.

Will upgrading LearnDash fix this automatically?

Sometimes, specifically if you’re on the affected 3.2.x version with the known PDF library issue. For every other cause on this list, an update alone won’t resolve a plugin conflict or a wrong shortcode, so it’s worth checking the full list even after updating.

Can a certificate be triggered by both a course and a quiz at once?

Yes, some courses use both, awarding a quiz-level certificate for an individual assessment and a separate course-level certificate on full completion. Each needs its own correctly matched shortcode type, so mixing them up on a course that uses both is a common source of this exact problem.

Still stuck after checking all of this?

A LearnDash certificate not generating is almost always one of these five things. If you’ve worked through the list and it’s still not resolving, I’ll help you track down exactly what’s blocking it.

Book a Free 30-Minute Call

Building a course from scratch?

Get certificates, quizzes, and progression logic set up correctly from day one, so this problem never shows up in the first place.

See LearnDash Development