Founding offer — 25% off applied automatically at checkout. Ends 1 November 2026 or after our first 30 orders. See pricing →
Skip to document content
Guide

Scheduled Tasks, Site Health and the Audit Log

13 min read 5 views
Version
1.0
Last Version Update
October 4, 2026
Effective From
October 4, 2026
Review Cycle
Annual
Next Review Due
October 2027

This page is for site administrators. It explains the background jobs Course Cadence runs, how to make sure they run on time, what the plugin reports in Tools → Site Health, and how to read the audit log.

Everything here needs the WordPress Administrator role.

Scheduled tasks

Course Cadence sends email in the background using WordPress’s built-in task scheduler (WP-Cron). There are seven scheduled tasks: five that repeat, and two one-off tasks created when a student enrols. The technical name of each task is shown because that is what you will see in tools such as WP Crontrol or WP-CLI.

Repeating tasks

Task Technical name When it runs What it does
Weekly guidance dispatch dantian_course_cadence_weekly_guidance_dispatch Once a week, on the Day of Week at the Time of Day set in Settings → Schedule (default Monday at 09:00, in your site timezone) Sends each enrolled student and trainer the guidance for their current week, skipping courses that are paused, on a break, not started or finished, and people who opted out. It never sends anyone the same guidance twice. After each run it books the next one for the following week.
Failed-email retry dantian_course_cadence_retry_failed_emails Every hour (the first run is about an hour after activation) Re-sends guidance that failed to send. Each run handles up to 25 failed delivery records, spaced slightly apart, and gives up on a record after three retries.
Log cleanup dantian_course_cadence_privacy_cleanup Once a day Deletes delivery records and audit-log entries older than the Log Retention Period (default 365 days). See Automatic log cleanup.
Dispatch preview dantian_course_cadence_dispatch_preview Once a week, the number of days set in Preview Days Before Dispatch (default 3) before the dispatch, at the dispatch time Emails the admin a preview of the coming dispatch: which courses Will send, which have No content authored for their week — nothing will be sent, which are Held for a scheduled break, Not started yet, or have Email dispatch paused, plus how many students are behind. Setting the lead to 0 removes this task.
Late-dispatch check dantian_course_cadence_dispatch_watchdog Once a day (the first run is about an hour after activation) Checks that the weekly dispatch is scheduled and actually ran. If the dispatch task has gone missing it re-creates it automatically. If the dispatch is more than a day late, or a dispatch did not record that it finished, it emails the admin once per missed dispatch with the subject “Course Cadence: the weekly guidance dispatch is late”.

The dispatch preview and late-dispatch emails go to the admin digest recipient and are only sent when Send Admin Trainer Digest is ticked in Settings → Emails (it is off by default). The address used is Digest Recipient Email, or the site’s administration email address if that is blank. With the digest off, the late-dispatch check still repairs a missing schedule — it just doesn’t email anyone. See Automated Weekly Emails for the digest itself.

One-off tasks (late enrolments)

When a student enrols in a course whose timeline has already started, Course Cadence queues a catch-up email to go out about five minutes later. Which task is used depends on Email Consolidation (Settings → Emails):

Task Technical name Used when What it does
Catch-up email dantian_course_cadence_send_catchup_email Individual per course One catch-up email per course the student enrolled in.
Combined catch-up email dantian_course_cadence_send_catchup_email_consolidated Consolidated (recommended) — the default Collects every course the student enrols in during the next few minutes and sends one combined catch-up email.

Trainers (course instructors) never receive catch-up emails. Full details: Catch-Up Emails.

What changes the schedule

  • Saving Day of Week or Time of Day (Settings → Schedule) immediately re-books the weekly dispatch for the next matching day and time, and moves the dispatch preview with it.
  • Saving Preview Days Before Dispatch (Settings → Emails) re-books the preview; 0 removes it.
  • Deactivating the plugin removes every task, including queued catch-ups. Activating creates the repeating tasks again.
  • Self-repair. Every time an administrator loads an admin page (and on each background request), Course Cadence checks the five repeating tasks and re-creates any that are missing. So a missing schedule is usually fixed by simply loading the dashboard.
  • Trigger weekly dispatch now (Email Delivery → Send & Status) runs the dispatch immediately. It starts the same 23-hour cooldown as a scheduled run, so if you use it within 23 hours before the scheduled time, that day’s scheduled run is skipped. See Admin Dashboards.

Making scheduled tasks reliable

WordPress does not have a real clock. Its scheduled tasks run only when someone visits the site: on each page load, WordPress checks whether anything is due and starts it. On a busy site this is fine. On a quiet site — for example a training portal that nobody visits early on a Monday — a 9:00 dispatch may not go out until the first visitor arrives, possibly hours later. Caching and security plugins can also block the background request WordPress uses.

For dependable delivery, have your server trigger WordPress’s scheduler on a fixed timetable:

  1. Ask your host (or your developer) to add a server cron job that runs every 5 minutes. Typical commands are:

    • wget -q -O - https://example.com.au/wp-cron.php?doing_wp_cron >/dev/null 2>&1
    • or, if WP-CLI is installed: cd /path/to/wordpress && wp cron event run --due-now --quiet

    On cPanel hosting this is under Advanced → Cron Jobs. Many managed WordPress hosts provide a “real cron” option in their dashboard instead.

  2. Once the server job is running, add define( 'DISABLE_WP_CRON', true ); to wp-config.php (above the line that says “That’s all, stop editing!”) so WordPress stops also running the scheduler on page loads.

  3. Check the next run time on Email Delivery → Send & Status and in Site Health (below).

Running every 5 minutes keeps catch-up emails close to their five-minute delay; every 15 minutes is also workable.

Checking the tasks

  • In Course Cadence: Email Delivery → Send & Status shows Next scheduled run and the Dispatch cooldown.
  • In Site Health: the cron check shows the next weekly dispatch time.
  • With WP Crontrol (a free plugin): go to Tools → Cron Events and search for dantian_course_cadence. You should see the five repeating tasks, plus any catch-up tasks queued in the last few minutes. You can run a task immediately from there.
  • With WP-CLI: wp cron event list lists the tasks and their next run times.

Site Health

Course Cadence adds three checks to Tools → Site Health → Status. Each is tagged with a blue Learning Guidance badge. Passing checks are listed under Passed tests; problems appear at the top under Critical issues or Recommended improvements.

Check Passes when Result when it fails What to do
LMS dependency A supported course source is active. The result names it, for example “Tutor LMS is active”, “LifterLMS is active”, or “Native (Classes) is active” when Course Cadence manages its own classes. Critical — “No supported LMS active” Activate your LMS from Manage Plugins. Without an LMS, Course Cadence uses its own Classes, so this check normally passes.
Course Cadence database tables “All Course Cadence database tables exist” — all 6 plugin tables are present. Critical — “Course Cadence database tables are missing”, listing which ones Deactivate and reactivate the plugin, which creates any missing tables. If they still don’t appear, ask your host to check the database user can create tables.
Course Cadence cron event scheduled “Course Cadence weekly email cron is scheduled”, with “Next run:” and the date and time. Recommended — “Course Cadence weekly email cron is not scheduled” Reload any admin page (the plugin re-creates the task), then recheck. If it is still missing, deactivate and reactivate the plugin.

These checks confirm the plugin is set up; they do not test that email actually leaves your server. To test delivery, send a test email from Email Delivery → Test Emails (Admin Dashboards). WordPress’s own Site Health checks (for example on scheduled events running late or the REST API being blocked) are also worth reviewing.

The checks count only the plugin’s six own tables; the shared class tables used in standalone mode are not part of the database check. The plugin does not add a section to the Site Health Info tab.

Audit log

The audit log is a record of who changed what in Course Cadence.

Location: Course Cadence → Settings → System tab, below the data-retention settings, under the heading Audit Log (“All changes to timelines, prompts, and edit suggestions are logged here.”). The ten most recent entries also appear under Recent Activity on the Overview, with a View full log → link to this table.

What is recorded

Area Actions you will see
Timelines Created, Updated, Deleted, Copied (when a timeline is cloned), Week Inserted
Prompts Created, Updated (including edits applied from approved or auto-approved trainer suggestions, and version rollbacks), Deleted, Prompt Moved (moved to another week)
Edit suggestions Suggested, Approved, Rejected
Catch-ups Catch-up Dismissed, Catch-up Restored (shown against the course)
Classes (standalone mode) Created, Updated, Deleted

Not recorded: changes to settings, the emails themselves (see Email Delivery instead), test emails, and privacy export or erasure requests (WordPress keeps those under Tools).

Reading the table

The table shows 30 entries per page, newest first. Use the page links above and below the table to go further back.

Column Shows
Date When it happened, in UTC (Coordinated Universal Time) — not your site’s timezone. For example, 23:15 UTC on a Sunday is 9:15 on Monday morning in Sydney (AEST).
User The person who did it. System means it happened automatically, or the person’s identity was removed by a privacy erasure.
Action A coloured label such as Created, Updated, Prompt Moved
Entity What was changed: Timeline, Prompt, Edit Suggestion, Course or Class
Course / Week The course name and week where known, for example “Cert III Individual Support — Week 4”, or “—”
Details Extra context where recorded, such as which fields changed, the prompt subject, or the course name; otherwise “—”

Filtering

Above the table are two dropdowns and a Filter button:

  • All Entities / Timelines / Prompts / Edit Suggestions — show only that kind of entry.
  • All Actions / Created / Updated / Deleted / Approved / Rejected — see the note below.

There is no filter by person or date and no export button. To find an entry from a particular day, page back through the newest-first list.

Note for version 1.0.0: the Action filter does not match the entries this version records, so choosing anything other than All Actions shows an empty table. Leave it on All Actions and narrow with the entity filter instead.

Retention and privacy

  • Audit entries are removed automatically once they are older than the Log Retention Period (Settings → System, default 365 days). To keep a longer history, increase that setting.
  • Entries cannot be edited or deleted from the admin screens.
  • When a person’s data is erased through Tools → Erase Personal Data, their entries stay but their identity is removed, so they show as System. See Privacy, Data and Uninstall.
  • Only administrators can see the log.

Troubleshooting

The weekly email went out hours late, or not at all.

  1. Open Email Delivery → Send & Status. If Next scheduled run is in the past, WordPress’s scheduler has not been triggered — the site had no visitors or the background request is blocked. Set up a server cron job as described above.
  2. If it shows “Not scheduled — reactivate the plugin to re-register the cron event.”, reload the page; if it still shows, deactivate and reactivate the plugin.
  3. Once the schedule is healthy, click Trigger weekly dispatch now to send the missed week. It is safe: guidance already delivered is never sent again.

I received “Course Cadence: the weekly guidance dispatch is late”. The email says which situation it found:

  • “…has not run. It is more than a day late.” — the scheduler did not fire. Loading any page usually starts the overdue run; a server cron job prevents it happening again.
  • “The weekly guidance dispatch event was not scheduled at all…” — the plugin has re-created the schedule automatically (the email says so), or asks you to deactivate and reactivate if that failed.
  • “…never recorded completion…” — either the dispatch stopped part-way (check Email Delivery → Analytics for that week, and the server’s error log), or it was skipped because someone used Trigger weekly dispatch now shortly before. Clicking Trigger weekly dispatch now is safe either way.

Catch-up emails arrive much later than five minutes after enrolment. Same cause as above — the scheduler runs only on visits. A server cron job every 5 minutes fixes it.

Site Health says tables are missing. Deactivate and reactivate Course Cadence. If the problem remains, your database user may lack permission to create tables; contact your host.

The audit log shows “System” for a change I made. Either the change was automatic, or the account’s identity was removed by a privacy erasure.

Worked example

A community college running ten nursing and aged-care cohorts on a low-traffic LMS site, dispatching on Mondays at 7:30.

The coordinator noticed some Mondays the guidance arrived after lunch. The site administrator:

  1. Opened Tools → Site Health. All three Course Cadence checks passed, but WordPress reported scheduled events running late.
  2. Opened Email Delivery → Send & Status on a Monday at 10:00 and saw Next scheduled run still showing that morning at 07:30 — the scheduler had not been triggered because nobody had visited the site.
  3. Asked the host to add a server cron job every 5 minutes calling wp-cron.php, then added define( 'DISABLE_WP_CRON', true ); to wp-config.php.
  4. Ticked Send Admin Trainer Digest in Settings → Emails with the coordinator’s address as Digest Recipient Email, and left Preview Days Before Dispatch at 3. Every Friday morning (three days before Monday’s dispatch, at the dispatch time) the coordinator now gets a preview listing which courses will send, and would get a late-dispatch email if a Monday run were ever missed.
  5. The following Monday, Next scheduled run showed the next week’s date shortly after 7:30, and Email Delivery → Analytics showed the week’s deliveries timed within minutes of 7:30.

Later, a trainer asked who had moved a week-6 prompt. The administrator opened Settings → System, set the entity filter to Prompts, and found a Prompt Moved entry for “Cert IV Ageing Support — Week 7” with the user’s name and the time (in UTC).

Related pages

Version History

Version 1.0.0 Major October 4, 2026
Author: DHDW