Skip to Content
Wisteria is in beta — these docs are evolving fast.
ConceptsRecertification

Recertification

Compliance training rarely happens once. A learner certified in food handling needs to recertify annually; a learner who passed a workplace safety course needs to refresh every two years. Recertification is the mechanism Wisteria uses to enforce that cadence.

How it works

Two settings on a course control recertification:

  • Recert required — boolean. Off by default; opt-in per course.
  • Recert interval days — how long after a learner passes before they’re required to re-pass.

When a learner completes a course with recert_required = true, Wisteria records the completion timestamp. After recert_interval_days elapses, the course re-appears on that learner’s dashboard with a fresh due date.

The learner takes the course again — same content, possibly updated since first completion — and Wisteria records the new completion timestamp. The cycle continues indefinitely until the course is archived or the learner is removed.

Who configures recertification

Recert is a course-level setting, configured by the trainer at course submission time. It’s included in the course-submit modal:

  • A checkbox: Require recertification
  • A number input: Interval (days) with quick presets — 365 (annual), 180 (semi-annual), 90 (quarterly)

Recert can be added or changed later from Course Settings.

What learners see

When a course is due for recertification, it reappears on the learner’s dashboard with a fresh “Due in X days” badge. The same urgency colours apply as for any due course:

  • Overdue: red
  • Due in 1–3 days: amber
  • Due in 4–7 days: soft amber
  • Due in 8+ days: neutral

A learner can complete the course early if they want — Wisteria credits the new completion timestamp regardless of whether the previous certification had expired yet.

Tag-driven recert (roadmap)

The cleanest pattern for most organisations is to set recert on tags, not individual courses, and let courses inherit. A tag like annual-safety-recert could mark every course that needs a yearly refresh; updating the tag’s interval propagates to every tagged course.

Tag-driven recert is on the roadmap. For v1, recert is a per-course setting.

Notifications

When a learner’s recertification falls due:

  • A new dashboard assignment appears. Their Due in X days count starts ticking.
  • Email notification. Sent at the recert window start.
  • Approaching-due reminders. Sent if the deadline approaches without completion.

The cron that drives these reminders runs every four hours. Stop conditions: the learner completes the course, the course is archived, the learner is removed.

Auditing recertification history

The audit log records every quiz completion. To see a learner’s recert history for a specific course:

  1. Open Audit Log.
  2. Filter by Action = quiz.pass (or whichever action your auditor needs).
  3. Filter by Actor = the learner.
  4. Filter by Resource = the course or module.

Each completion is a row with a timestamp. Exporting to Excel gives you the full series.

When to use recertification

  • Use it for compliance training with regulatory cadences, safety-critical content, anything where the certificate has an explicit expiry.
  • Don’t use it for product knowledge, onboarding (which is a one-time thing), or content that evolves so frequently that a fixed interval doesn’t fit. For that last case, prefer publishing a new version of the course — learners will see the updated version on their next visit.
Last updated on