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

ICS Calendar Feeds

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

16 — ICS Calendar Feeds

🔒 Pro feature — requires Dantian Training Hub Pro.

ICS calendar feeds let students and trainers subscribe to their Training Hub schedule in the calendar app they already use — Apple Calendar, Google Calendar, Outlook and others. Once subscribed, sessions, clinic shifts and due dates appear alongside their personal appointments and update automatically, so nobody has to re-check the website for timetable changes.

Each person gets their own private feed link. The link works without logging in, so it can be added to any calendar app, but it only ever shows that person’s own schedule.


Turning feeds on

Feeds are off by default. An administrator enables them:

  1. Go to Training Hub → Settings → Access & Privacy.
  2. In the Calendar Subscription section, tick Calendar Subscription (ICS) — “Allow students and instructors to subscribe to their calendar via an ICS feed link”.
  3. Set the date window:
Setting Default Allowed What it does
ICS Days Back 90 0–3650 How many past days of events the feed includes.
ICS Days Forward 365 0–3650 How many future days of events the feed includes.
  1. Click Save Settings.

The Calendar Subscription section only appears when Pro is active. On a Free-only site there is no calendar subscription option and the calendar pages do not show a subscribe panel.

Turning the setting off stops every feed immediately: calendar apps polling an existing link receive “Calendar subscription is not enabled.” and stop updating. Turning it back on makes the same links work again.


Subscribing (students and trainers)

The subscribe panel appears at the bottom of the calendar pages:

  • Students: the page containing [dthub_student_calendar].
  • Trainers: the page containing [dthub_instructor_calendar].

To subscribe:

  1. Open your calendar page and expand Subscribe to Calendar.
  2. Click Subscribe in Calendar App. On most phones and computers this opens your default calendar app with the subscription ready to confirm.
  3. If that doesn’t work — for example with Google Calendar in a browser — copy the link with Copy and paste it into your calendar app’s subscribe by URL (or From URL) option.
    • Google Calendar: Other calendars → + → From URL → paste → Add calendar.
    • Outlook: Add calendar → Subscribe from web → paste.
    • Apple Calendar: File → New Calendar Subscription → paste.

The calendar appears in your app as [Your site name] Calendar.

Keep the link private. As the panel warns, “This link is private to you. Anyone with this URL can view your calendar.” Don’t post it in group chats or shared documents.


Regenerating your link

If you think your link has been shared, or you want to cut off an old device:

  1. Open your calendar page and expand Subscribe to Calendar.
  2. Click Regenerate Link.
  3. Confirm the prompt: “Regenerate your calendar link? Any previous links will stop working.”
  4. A message confirms “Calendar link regenerated. Previous links will no longer work.” The new link is shown straight away.
  5. Remove the old subscription from your calendar app(s) and subscribe again with the new link.

Anyone still using the old link receives “Invalid or expired calendar link. Please generate a new one from your calendar page.” Each person can only regenerate their own link. Links do not expire on their own.


What the feed contains

Student feeds contain the same items as the student’s calendar page, within the Days Back / Days Forward window:

Event Details
Tutorials in the student’s enrolled courses, plus any they were added to as an ad-hoc attendee Timed event. Title: Tutorial — Course (uses your terminology), plus any session note.
Clinic shifts the student is allocated (or wait-listed) to Timed event. Title: Clinic — Course, plus any allocation note.
Assignment due dates (sites using assignments) All-day event on the due date. Title: Assignment title — Course.
Assessment quiz due dates (sites using assessment quizzes) All-day event on the due date.

Trainer feeds contain the sessions for the courses the trainer instructs.

Each timed event includes, where available: the location, the course, the trainer(s), the student’s attendance status, Ad-Hoc Allocation or Online Session flags, the Zoom join link for online sessions, and any note. End times use the session’s recorded end time, otherwise a duration (default one hour). Times are published in your site’s timezone, and calendar apps convert them to the viewer’s local time.

Who gets a trainer feed? Users with the TutorLMS instructor role or the Administrator role get the trainer version; everyone else gets the student version.

Action plan due dates appear on the student’s calendar page but are not included in the subscription feed.


How quickly changes appear

  • The server keeps a ready-made copy of each person’s feed for up to 12 hours to cope with calendar apps checking frequently. Saving or deleting a session, marking attendance, changing clinic allocations, enrolments or settings clears the affected copies, so the feed itself is normally current within moments.
  • Calendar apps decide how often they re-check. Apple Calendar and Outlook let you choose a refresh interval; Google Calendar typically refreshes subscribed calendars every several hours and cannot be forced. The feed asks apps not to re-check more often than every 12 hours.

There is no manual “clear cache” button — none is needed for normal use. If a change still hasn’t appeared after a day, remove and re-add the subscription.


Seeing who has subscribed (administrators)

Under Settings → Access & Privacy, the Calendar subscribers — last synced section lists everyone who holds a calendar link, with:

  • User, Last synced (shown in your site’s date and time format), number of Polls, URL in use, and the Calendar client (e.g. Google, Apple, Outlook).
  • A summary line: link holders, how many synced in the last 14 days, how many never synced, and how many still use an older link format.

“Never (link generated, no poll logged yet)” means the person opened their calendar page — which creates a link — but has not subscribed.


Security and privacy

  • Every link carries a long random token (256-bit) that cannot be guessed. The site stores only a scrambled fingerprint and an encrypted copy of the token, not the plain link.
  • The feed address is public (calendar apps cannot log in) but returns only the token owner’s events. An invalid token gets a generic error that doesn’t reveal whether the user exists.
  • Feeds are marked private and not-for-indexing, so shared caches and search engines should not store them.
  • Use HTTPS on your site so links and calendar data are encrypted in transit.
  • The token and the sync log (last sync time, poll count, calendar client) are included in WordPress personal-data export and are erased on request with no retention hold.
  • Deleting the Pro plugin keeps calendar tokens (so links keep working after a reinstall) unless Pro Data Removal on Uninstall is turned on under Settings → Access & Privacy, in which case tokens and cached feeds are removed.

Worked example

Northside College of Naturopathy runs weekday tutorials and Saturday student clinics.

The coordinator enables Calendar Subscription (ICS) and keeps the default window (90 days back, 365 forward). In orientation week, students open their calendar page, expand Subscribe to Calendar and tap Subscribe in Calendar App on their phones. A trainer, Sam, does the same from the instructor calendar page.

When a Wednesday tutorial moves rooms, the coordinator edits the session; students’ phones show the new location next time their calendar app refreshes. Later a student reports her laptop was stolen. She clicks Regenerate Link and re-subscribes on her new device; the old link stops working immediately.


Troubleshooting

There is no Subscribe to Calendar panel on the calendar page. Calendar Subscription is off, or Pro is not active. Enable it under Settings → Access & Privacy.

My calendar app says the link is invalid. The link was regenerated (possibly on another device) or the feature has been switched off. Copy the current link from your calendar page and subscribe again.

Google Calendar hasn’t picked up a change. Google refreshes subscriptions on its own schedule, often every several hours. Check your calendar page on the website for the latest details.

A trainer’s feed shows student-style events instead of their teaching sessions. Trainer feeds are given to users with the TutorLMS instructor role or the Administrator role. Trainers with a different role (for example on LifterLMS or with a custom role) receive the student version.

Events are missing from months ago or far in the future. They are outside the ICS Days Back / ICS Days Forward window. Increase the values in Settings.

Version History

Version 1.0.0 Major October 4, 2026
Author: DHDW