Margin and Moodle — how the calendar feed works

Margin supports Moodle through connected through the iCal calendar feed your school publishes, added once at setup — you paste your school's calendar feed URL once at setup, and upcoming due dates flow to your Todoist and dashboard. Moodle publishes that feed itself; the steps are below, from the official MoodleDocs Calendar page.

Finding your feed URL in Moodle

Open the Calendar, press Export calendar at the bottom of the page, choose which events and which time frame you want, then press Get URL address.

Source: the official MoodleDocs Calendar page, retrieved 2026-08-02. Moodle calls the feature “Export calendar”. Vendor interfaces change — if what you see differs, the vendor's own page is the authority, not this one.

What Moodle feeds carry, and what they don't

The URL is generated for the signed-in user, and covers the courses that user is enrolled in.

So one URL carries your whole enrolment. Moodle's own documentation notes there is no way to generate a URL for a single course.

Moodle asks you to choose a time frame when you export.

Pick the widest option available. A narrow export is the most common reason a Moodle feed looks like it is missing the end of term.

What calendar feeds can and can't carry

In building Margin's feed reader we learned calendar feeds have sharp edges. Here is where ours are, including the one we have not solved.

Why a feed, and not a direct reader

In building Margin we did not find a practical student-facing API for assignment data on Moodle, so we read the calendar feed your school already publishes — that's what Margin uses.

Schools

Moodle campuses are compatible pending verification — the feed format is standard, and we confirm a school once someone there has run it.