Canvas Calendar Sync is a small Python tool that copies your Canvas LMS assignments onto a dedicated Google Calendar and keeps them accurate every time it runs.
Canvas's built-in calendar feed can't be customized, and one-off imports go stale the moment an instructor moves a deadline. This tool tracks each assignment by its Canvas ID, so every run makes your calendar match Canvas:
- New assignment: an event is created at the exact due time
- Due date or title changed: the existing event is updated in place, not duplicated
- Assignment removed: its event is deleted
- Lost state file: events carry a private tag, so tracking is rebuilt from the calendar instead of creating copies
Who it's for
Students at any school that uses Canvas, plus tutors, parents, and developers who want deadlines in Google Calendar with reminders, colors, and sharing, and who are comfortable running a Python script on a schedule.
Features
- Works with any Canvas instance (
*.instructure.comor self-hosted) using your own access token. It only reads from Canvas. - Syncs into a separate calendar (created for you), with events marked free so they don't block your schedule
- Configurable titles, event length, reminders, time zone, and course include/exclude lists
- Skips ungraded or optional items by pattern, and doesn't backfill old past-due work on the first run
- Safety checks: it only touches events it created, never treats a failed Canvas request as "no assignments", and holds back mass deletions
--dry-runshows exactly what would change without changing anything