Skip to content

Integrate WPsigner with LearnDash LMS to require signed enrollment agreements, waivers, or compliance documents before students can open course content or download a certificate.

Each course can use its own template. A default template covers any course that does not override it.


Student Enrolls → Signing Prompt → Signs Document → Course Unlocked
(Access blocked until signed)

WPsigner creates a personalized document from the template assigned to that course (or the default) and gates access until the student signs.


ScenarioDescription
Enrollment agreementsRequire students to sign terms before accessing paid course content
Different agreement per courseCourse A uses “Enrollment A”, Course B uses “Enrollment B”
Compliance trainingGate modules behind signed acknowledgments (OSHA, HIPAA, GDPR)
Certification programsCollect an honor-code or exam-integrity agreement before the certificate
Corporate onboardingRequire an NDA or policy document as part of an onboarding course
Waivers and liabilityCollect waivers before physical-activity or lab courses
Continuing educationRequire a signed attestation before granting CE credits

  • WPsigner Pro 3.2.35+ (per-course templates shipped in 3.2.34; activation fixes in 3.2.35)
  • LearnDash LMS plugin (v3.0+)
  • At least one WPsigner template
  • Both plugins on the same WordPress site
ComponentMinimum VersionRecommended
WPsigner3.2.35Latest
LearnDash LMS3.04.0+
WordPress5.86.4+
PHP7.48.1+
LearnDash Add-onsCompatible with ProPanel, WooCommerce, and Group Management

Create one template per agreement you need (or one shared template if every course uses the same PDF).

  1. Go to WPsigner → Templates (or create a document and save it as a template)
  2. Upload the PDF and place the signature fields
  3. Save the template
  4. Repeat if Course A and Course B need different PDFs
  1. Go to WPsigner → Integrations
  2. Turn LearnDash on if the card shows Enable to configure
  3. Click Configure

LearnDash must be installed and active. If the settings screen does not detect it, you can still enable and save — another plugin may be hiding LearnDash only on WPsigner admin pages. The integration still runs on course pages.

This is one screen. You do not edit each course inside LearnDash.

  1. Turn Enable LearnDash Integration on
  2. Choose Require Signature:
    • Before course access (after enrollment) — lessons stay locked until they sign
    • Before certificate download — they can take the course, then must sign for the certificate
  3. Set a Default document template — used when a course has no override
  4. Under Courses and templates:
    • Check each course that needs a signature
    • Next to the course, pick its template, or leave Use default template
  5. Click Save Settings

Example:

CourseTemplate
First AidEnrollment — First Aid
OSHA 10Compliance — OSHA 10
OnboardingUse default template

Test Connection confirms LearnDash and lists how many courses and templates WPsigner found. It is optional.


Students cannot open lessons, topics, or quizzes until they sign. The course page stays available and shows a Sign agreement button.

Students can take the course. The certificate link stays blocked (or opens the signing page) until they sign.


  1. The student is enrolled in a gated course (access mode) or completes it (certificate mode)
  2. WPsigner picks the course template, or the default if none is set
  3. It creates a document for that student and emails the signing link
  4. The course page shows the signing prompt
  5. After they sign, WPsigner stores a signed flag and unlocks access or the certificate

A course is only gated if it is checked and a template can be resolved (course template or default). A checked course with no template does not lock the student out.

DataStorage
Signing statusUser meta _wps_learndash_signed_{course_id}
Document for this student/courseUser meta _wps_learndash_document_{course_id}
Course for a documentOption wps_learndash_course_{document_id}
Default templateOption wps_learndash_document_template
Per-course templatesOption wps_learndash_course_templates ([course_id => template_id])
Gated coursesOption wps_learndash_gate_courses

WPsigner fires these actions during the LearnDash signing lifecycle.

HookTriggerParameters
wps_signer_createdA signing document is generated for the student$signer_id, $document_id
wps_after_document_signedThe student completes their signature$document_id, $signer_id
wps_document_completedThe enrollment document is fully signed$document_id
add_action( 'wps_document_completed', function( $document_id ) {
$course_id = (int) get_option( 'wps_learndash_course_' . absint( $document_id ), 0 );
if ( $course_id ) {
// Custom logic: welcome email, next-course enrollment, etc.
}
});

FeatureDetails
No API keysUses LearnDash PHP hooks
Nonce verificationAll AJAX requests verified
Rate limitingTest: 5/min, Save: 10/min per user
Capability checkmanage_options for settings
Input sanitizationabsint(), sanitize_text_field()

IssueSolution
Enable / Save looked lockedUpdate to 3.2.35+. The screen no longer disables those controls when detection fails.
“LearnDash not detected on this screen”LearnDash is usually still active. Save settings anyway. If courses are empty, turn off any “disable plugins on admin pages” tool for WPsigner.
“LearnDash is active, but not fully loaded here”Same: save. The integration runs on course pages.
No courses listedPublish at least one LearnDash course. Confirm LearnDash is not disabled on this admin page.
No templates listedCreate a template under WPsigner → Templates.
Status stays Not ConfiguredTurn the integration on, choose a default or per-course template, then Save.
Student still blockedThe WordPress user email must match the signer email. Confirm they signed the document for that course.
Wrong PDF for a studentExisting documents keep their original template. New enrollments use the template you assigned.
One agreement for every courseSet only the default template and leave each course on Use default template.
Multiple agreementsEach student + course pair gets one document.