Select one or more tags, then press “Search Plugins”

Find Plugin with any / all of the selected criteria
Search Plugin

AccessTrace For LearnDash Wordpress Plugin - Rating, Reviews, Demo & Download

AccessTrace For LearnDash Wordpress Plugin - Rating, Reviews, Demo & Download
No ratings yet
Free
Follow for free plugins, new theme releases and theme news

Plugin Description

Know exactly what happened to a student’s course access, who or what caused it, and whether it looks right.

When a student says “I lost access to my course” or “I paid but I’m not enrolled”, AccessTrace for LearnDash gives you the answer in seconds. It keeps a clear, searchable record of every enrollment and unenrollment on your site, shows the likely cause, and tells you whether the change makes sense.

It is a passive tool: it only watches and records. It never enrolls or unenrolls anyone, restores access or changes expiry dates, and a logging problem can never block a student’s enrollment.

What you get

  • A complete enrollment history. Every enrollment and unenrollment is recorded with the student, course, date and time, and who or what made the change.
  • The cause, not a guess. See whether a change came from an administrator, a WooCommerce purchase or refund, access expiry, a scheduled task, WP-CLI or the REST API. When the cause can’t be proven it says “Unknown” instead of making something up.
  • Valid, Invalid or Unknown at a glance. Each event is checked and labelled. “Invalid” means something looks wrong, for example a student was unenrolled while their access was still active and no administrator did it. It is worth a look, not proof of a bug.
  • Fast search and filters. Search by student name, username, email or ID, or by course. Filter by action, status, source and date range. Active filters appear as chips you can remove one at a time.
  • Event details. Open any event to see the full story: cause, trigger, who acted, status and the reason for it.
  • Export to CSV. Download exactly what you are looking at, to share with your team or a support agent. Opens correctly in Excel, Numbers and Google Sheets.

Email alerts for administrators

Get told when something needs attention, without watching the log.

  • Turn alerts on or off with one switch.
  • Choose who receives them (defaults to the site admin email).
  • Choose what triggers an email: invalid events only (recommended), unenrollments, enrollments, unknown events, or everything. Optionally limit alerts to chosen sources.
  • Receive each alert immediately, or as an hourly or daily summary.
  • A rate limit protects your inbox during bulk imports: extra events arrive together in one summary email.
  • Write your own subject and message with simple placeholders such as {user_name}, {course_title}, {action}, {status} and {log_url}. Choose plain text or HTML, and optionally set the sender name and address.
  • The student’s email address is hidden in alerts unless you choose to show it.
  • Send yourself a test email to see exactly how alerts will look.

Emails go out through your own site’s mail setup. Nothing is sent to any outside service.

Stay in control of your data

  • Pause logging, or choose whether to record enrollments, unenrollments or both.
  • Ignore specific courses.
  • Delete old events automatically after 30 days up to 2 years, or keep them forever.
  • Choose what happens on uninstall: keep your logs (default) or remove everything.
  • Optionally erase a user’s events when their account is deleted.
  • Works with the WordPress Export and Erase Personal Data tools, and adds suggested text for your privacy policy.

Built to stay out of the way

  • No effect on page speed. Nothing runs unless course access actually changes.
  • The log and the export stay fast, even with a large history.
  • Only administrators can see the log and settings (developers can change this with a filter).
  • Never stores passwords, IP addresses or email addresses in the log.

This plugin is an independent project. It is not affiliated with, endorsed by or sponsored by LearnDash, which is a trademark of its respective owner.

Need help, a custom integration, or want to support development? Get in touch.

Support: Support – wpforwards.com

Requirements

  • WordPress 5.8+
  • PHP 7.4+
  • LearnDash (LearnDash tested up to: 5.2.0). If LearnDash is missing the plugin does not fatal, shows an admin notice, and starts logging once LearnDash becomes available.

For developers

How detection works

The plugin listens to LearnDash’s course access hooks. Events are queued and processed at shutdown, so the expiry signal is recognised regardless of the order LearnDash fires its hooks. Flow: LearnDash hook > event detector > source and trigger detection > verification > event manager > log table. Source and actor are reported only when evidence supports them (admin screen with a privileged user, cron, WP-CLI, REST, a WooCommerce order hook, or the learndash_user_course_access_expired hook). Otherwise the value is unknown. An event is skipped when it repeats the same action for the same user and course within 5 seconds; enroll, unenroll, enroll sequences are always logged.

LearnDash hooks and functions used

Checked in the LearnDash developer documentation (developers.learndash.com):

  • Action learndash_update_course_access( $user_id, $course_id, $course_access_list, $remove ), since 2.1.0. Fires for enrollment ($remove false) and unenrollment ($remove true).
  • Action learndash_user_course_access_expired( $user_id, $course_id ), since 2.6.2.
  • Function ld_course_access_expires_on( $course_id, $user_id ) returns an expiry timestamp.
  • sfwd_lms_has_access() is deliberately not called: it can run LearnDash’s expiry processing and change enrollments, and this plugin is strictly passive.

The documentation specific to LearnDash 5.2.0 was not reachable during development, so no 5.x-specific change could be confirmed or ruled out. Only long-standing hooks are used and every LearnDash call is guarded. Please test on a staging site.

Extension points

Filters: evlfl_capability, evlfl_event_context, evlfl_resolve_source, evlfl_resolve_trigger, evlfl_resolve_actor, evlfl_verify_event, evlfl_sources, evlfl_triggers, evlfl_logs_per_page, and evlfl_should_notify( $send, $event, $id ) (final say on whether an admin email is sent for a logged event).

Actions: evlfl_event_logged( $id, $event ).

Integrations can supply the source, trigger and actor of their own enrollments through the evlfl_resolve_* filters without changing core logging.

Known limitations

  • Not every source can be determined. WooCommerce, memberships, imports and custom code often appear as unknown unless an integration supplies the source.
  • Admin-screen actions are recorded as admin/manual (detected, not confirmed): another plugin acting for an admin in wp-admin can look identical.
  • Verification uses a snapshot at event time; it does not re-check later.
  • Dates in the filter use the site timezone; times are stored in UTC.
  • Events are processed at shutdown; a PHP crash mid-request can lose queued events.

Sample data

For development only, define EVLFL_ENABLE_TEST_DATA as true in wp-config.php to show a “Generate sample events” button. It writes sample rows to the log table only and never touches real enrollments.

Screenshots

No screenshots provided


Reviews & Comments