How do I manage the school calendar?
The parent-facing calendar lives at /calendar (day/week/month views, filterable by category and tag). Admin tools are gathered at Manage School Calendar (/calendar/admin):
Last updated 2026-11-04
From the School Administrator manual, "School Calendar".
The parent-facing calendar lives at /calendar (day/week/month views, filterable by category and
tag). Admin tools are gathered at Manage School Calendar (/calendar/admin):
- + Add Event — one event at a time, with a category (General, Performance, Closure, Athletic, Other; only a Junior or Senior Admin can choose Closure, because a closure removes that day's occurrences from every repeating series that skips school closures; an Organization Editor's event or repeating event can't be a Closure), free-form tags, and an optional Location (for example "Gymnasium"). The location shows with a small pin under the event's title on the day view, and in the pop-up text of the event on the week and month views. It is also included when a parent subscribes to the calendar in their own calendar app.
- Import Events (CSV/Excel) — bulk-import a whole season or term from a spreadsheet template, same preview-then-confirm pattern as the student importer. One file can hold up to 1,000 events; a bigger file is refused at preview with a note to split it (for example by semester). If Confirm import fails, a red message says why and the preview stays so you can try again.
- External Calendar Feeds — see below.
- Clear Calendar Events — Senior Admins only. See below.
You can also add/edit/delete individual events directly from the day view on /calendar itself,
without going through the admin hub.
Repeating events. On + Add Event (the school calendar, or an Organization, Class or Department calendar) the Repeat section turns one event into a series, so a weekly rehearsal or a club that meets Tuesday and Thursday is entered once:
- Repeats: Does not repeat, Daily, Weekly or Monthly, Every N days/weeks/months.
- Weekly: pick the weekdays (the week starts on Sunday; the weekday of your start date is already selected). Weekdays (Mon to Fri) selects all five in one click.
- Monthly: either "On the 22nd" (a 29th, 30th or 31st happens on the last day of shorter months, and the form says so) or "On the third Wednesday" (a fifth weekday is "the last").
- Ends: every repeat must end - on a date, or after a number of occurrences. By default the end is the next June 30. A series is limited to 400 events and 24 months; the form tells you if you go over.
- Skip school closures: leaves out any date covered by a Closure event. If a closure is added later, the events on it are removed; if it is removed, they come back. An occurrence you edited by hand is never removed automatically.
- The preview lists the exact first and last dates and how many events will be created before you save.
Each occurrence is an ordinary event, and the day view says "Repeats weekly on Mon, Wed until Dec 18". When you Edit an occurrence, choose what to change: This event (only that occurrence, which then counts as edited by hand), This and following events (it and every later one; earlier ones stay) or All events (every occurrence you have not edited by hand). For the last two the dates stay as they are and you can change the repeat itself. Delete... on the day view offers the same three choices; a deleted occurrence is not recreated by a later change, and hand-edited occurrences are kept by "following" and "all" (the page says how many). Organization Editors can repeat events on their own organization's, class's or department's calendar; only an admin can make a school-wide repeating event. (The SwiftUI app does not create repeating events yet.)
Make an existing event repeat. Open any ordinary event with Edit (not one that came from an external calendar feed, and not one that already repeats) and use the Repeat section: choose Weekly, Daily or Monthly, set the end, and press Save and repeat. Your other edits on that form are saved first, and the event you opened becomes the first occurrence (it is not copied), so its day must be one of the repeat days. If "Skip school closures" is on and the event itself falls on a closure, it is not converted (turn the option off or pick another event).
In the SwiftUI app (iPhone, iPad, Mac): while editing an ordinary one-off event, the Repeat section works the same way as on the web (your other edits are saved first and the event becomes the first occurrence). A Repeating events screen (the Calendar tab's toolbar for admins; an Organization, Class or Department page's Calendar section for admins and its Editors) lists the series with Change repeat... (the whole series, or from a chosen occurrence on), End now and Delete series; to change a series' title, time or location for all events, edit one of its events and choose All Events.
Manage repeating events. Admin Functions > Manage School Calendar > Repeating Events lists the school-wide repeating events; on an Organization, Class or Department page, Repeating events (beside Add Event) lists that calendar's. Each entry shows what it repeats, its first and last dates, how many events it has, how many you edited by hand and any that need attention (on a school closure, or no longer matching the repeat). From there: Edit all (opens the edit form on "All events"), End now (removes every later event but keeps today's and earlier ones, and keeps later events you edited by hand; offered only while the series is running with events still to come), and Delete series (removes every event, including hand-edited ones, after a confirmation). Events and split... lists every occurrence, with Edit this and This and following... (opens the edit form on that occurrence with "This and following events" chosen, so the rest of the series can change from that date).
SwiftUI app: Admins see a + button on the Calendar tab (Day/Week/Month) to add a new event — it's created for the general school calendar (viewing an Organization's own calendar instead creates the event there — see "Organizations (Teams, Clubs & Groups)"). Opening any event's detail screen shows a pencil icon; tapping it turns every field editable in place, with Delete Event available from within Edit mode (behind a confirmation). Parents don't see either affordance.
Calendar subscription links (parents subscribing to your calendar)
Any school member — not just admins — can go to Subscribe on the /calendar page to generate a
personal .ics link for their own calendar app (Apple Calendar, Google Calendar, Outlook). Leaving
every checkbox unchecked creates a link to the full calendar; checking specific categories/tags (and,
if Organizations is enabled, picking a specific Organization) creates a filtered link. These links
auto-update as events change — they're a live subscription, not a one-time export. Anyone with the
link can see what it covers, so treat it like a password; Revoke removes it immediately.
Ingesting an external calendar feed
On External Calendar Feeds (/calendar/feeds), click + Add Feed to register another
system's own .ics feed URL (e.g. a drama department's own rehearsal-scheduling tool) so its events
show up on your school calendar automatically — no manual re-entry. Registered feeds are checked
once a night. Timed events are shown in your school's time zone (School Settings), whatever time
zone the feed itself writes them in; a feed time with no zone at all is taken as written. Each feed shows its enabled/paused state and the outcome of its last check (event
count, or an error message if it failed). Pause/Resume and Edit are available per feed;
Delete removes the registration (already-imported events are kept). Important: an ingested
event that came from a feed reverts to the feed's own data on the next nightly check — if you need
to permanently change something, Pause that feed first. When an event is moved, cancelled or removed in the feed itself, the nightly check updates or removes it on your calendar too (only today's and later events are ever removed, never past ones). As a safeguard, if a night's check finds no events at all, or fewer than half of the upcoming events already on your calendar, nothing is removed that night — a broken feed can't empty your calendar. A feed must be a publicly reachable web address: addresses that only work inside a private network (such as localhost or a 192.168.… address) are refused when you save, and a feed larger than about 5 MB is treated as an error.
Clearing the calendar in bulk (Senior Admins only)
If an import came out wrong, or you've been experimenting and want a clean slate, Clear Calendar
Events (/calendar/clear) deletes events in bulk instead of one at a time. Junior Admins don't
have this — they can still delete individual events from the calendar itself.
Pick the categories you want cleared. Nothing is selected when you arrive, on purpose: you have to actively choose what to remove, and anything you leave unchecked is kept. Then click Review what will be deleted to see exactly how many events are involved before anything happens, and confirm a second time in the dialog that follows. The category checkboxes are locked while the review is being checked, so the count always matches what will be deleted. Deleted events cannot be recovered.
Two kinds of event are never removed by a bulk clear, and the review step tells you how many of each it found:
- Events from an external calendar feed. These are owned by the feed and would simply reappear at the next nightly check. To remove them for good, Delete that feed under External Calendar Feeds first (its already-imported events then become ordinary events), then clear. Pausing the feed is not enough: a paused feed's events are still kept.
- Events belonging to an Organization. These are managed from that organization's own page by its own editors, so a school-wide clear leaves them alone.
