Overview
Email Quiz Certificates* module is part of the Pro Suite of modules for the Uncanny LearnDash Toolkit. Out of the box, LearnDash supports dynamic generation of a certificate after successful completion of a quiz, but the certificate must be viewed online or downloaded to the user’s computer. This Pro module extends LearnDash functionality to attach a certificate to the email that is sent to the user upon the successful completion of a quiz. The certificate email can also be sent to site administrators, group leader(s) or any number of related users.
*This module will send out email with certificate with any quiz that has a certificate associated with it AND user e-mail notification enabled. This module is for sending certificates that are attached to quizzes. For sending certificates that are attached to courses, use this module instead.
Setting Up the User Email
This module uses LearnDash Quiz Email settings to customize the email sent to users. You can find the LearnDash quiz email settings at LearnDash LMS > Quizzes > Settings (Tab).
After you’ve configured the email settings, you will then have to enable User e-mail notification in each quiz containing a certificate you want emailed to the user.
Additional Module Settings
- Use Cron to send certificate: This setting should only be checked if you are having issues with shortcodes not outputting the correct data in the emailed certificates. Otherwise it should be left unchecked.
- Do not store certificates on server: This module by default stores certificates on server. Check this option to disabled this behavior.
- From Name/From Email: The name and email address that the certificate email will be sent from. If left blank, the LearnDash quiz email settings will be used for from name and email.
- Send Certificate to Site Admin/Group Leader(s): Check to send a copy of the email with the certificate attached to the site admin and/or group leader(s).
- CC Certificate To: Include anyone else you want the email CC’d to in this field.
- Admin/Group Leader Email Subject & Admin/Group Leader Email Body: These fields control the email content for emails sent to the site admin, group leader(s) and cc recipients. Tokens are available and listed just below the Email Body field.
Note: The email sent to users must be configured in the LearnDash quiz options screen (see below).
Filters for Developers
This module provides a number of filters for developers:
Modify default save path uo_quiz_certificate_save_path return new path, defaults to: /uploads/user-certificates/
Modify default filename uo_quiz_completion_certificate_filename // returns filename. Passed arguments: $file_name //default filename $user_id //current user id $quiz_id //current quiz id $certificate_post //certificate post self::$current_time_stamp //quiz completion time
whether to generate certificate or not uo_generate_quiz_certificate return true/false Default: True
Modify HTTP url of the certificate.. mandatory if path is changed uo_quiz_certificate_http_url passed default http url return new path
Modify certificate content on-the-fly uo_generate_quiz_certificate_content Default: certificate content arguments passed: $content //default certificate content $user_id //user id $quiz_id //quiz id $course_id //course id that the quiz belonged to Usage: add user_id or quiz_id or course_id to a shortcode in the content.
Example: preg_replace( '/(\[usermeta)/', '[usermeta user_id="' . $user_id . '" ', $content );
Is there a way to remove the attachment from the certificate email? I want them to be notified, but not have the file directly sent to them.
Can you confirm who you want to be notified? LearnDash natively supports notifying the user and admin about quiz results. If you disable our module that notification will go out. If you need Group Leaders and other users to be notified, however, our module would then be needed and it always includes the certificate. Another option may be using the LearnDash Notifications plugin instead from LearnDash, as I’m afraid our email modules always send the attachments.
Is there a way to send these emails for passing quizzes only? I do not want to send emails on failing quizzes.
That is unfortunately not currently possible.
The email trigger itself comes from LearnDash; emails are either sent or they’re not. Our module basically overrides that email to attach a certificate if one was earned, but whether or not the email is sent comes from LearnDash, and currently there is no option to only send notifications when quizzes are passed. We may consider overriding that for a future release, but for now, unfortunately, emails are sent regardless of passing or failing.
Do you have a plug-in for kajabi?
We don’t, sorry about that!
“currently there is no option to only send notifications when quizzes are passed” – Hello, is this still the case? I don’t want to send a certificate if the student hasn’t achieved the pass mark of 80%
This behaviour is on the LearnDash side; it means an email always goes out, not that a certificate will always be attached. So if this is turned on, the email goes out in all cases, but the certificate will only be attached if the user achieves 80% or higher.
Is it possible to change the file name of the quiz certificate pdf attached in the email?
The solution does require a code addition in your child theme and may be better handled via support ticket, but here’s a code sample to hopefully point you in the right direction:
/**
* @param $file_name
* @param $user_id
* @param $quiz_id
* @param $certificate_post
* @param $timestamp
*
* @return string
*/
function update_quiz_certificate_filename( $file_name, $user_id, $quiz_id, $certificate_post, $timestamp ) {
$quiz_post = get_post( $quiz_id );
$quiz_title = $quiz_post->post_name; //sanitized title of the quiz
$user = get_user_by( 'ID', $user_id );
$first_name = sanitize_title( $user->first_name );
$last_name = sanitize_title( $user->last_name );
return "{$timestamp}-{$first_name}-{$last_name}-{$quiz_title}-{$user_id}";
}
add_filter( 'uo_quiz_completion_certificate_filename', 'update_quiz_certificate_filename', 20, 5 );
Is there an option that the certificate will be converted from pdf to jpg before sending by email?
Sorry Nenu, that’s unfortunately not possible right now nor planned. We’ll consider it though for possible inclusion in future!
I don’t want to send a certificate if the student hasn’t achieved the passing mark. Is there a way to achieve?
Hi, a certificate will only be issued and sent if the user achieves a passing score. This is set in the LearnDash settings described here: https://www.learndash.com/support/docs/core/quizzes/quiz-access/#quiz_progression_restriction_settings
A question, I made some short codes to be included in the Certificate Builder. They show fine when an user generates a Certificate, but in the .pdf that gets sent it shows empty on those places.
You can try the Cron option at the top of the modules settings to delay the certificate generation slightly, giving the system more time to populate data, but you may need to raise a ticket. What is likely happening is that the data needed by the shortcode isn’t available yet at the time the email is sent. If the Cron option doesn’t help, let us know what data you’re working with and how it’s populating when you open a ticket.