Canvas already knows every assignment your professors posted. What it does not do is tell you that three of them land in the same 48 hours, or remind you the night before, or show you what your grade looks like if you skip the discussion post. It gives you six course pages and leaves the arithmetic to you.
So most students end up doing the copying by hand. You open each Canvas course, scroll the assignments tab, and retype the due dates into a planner or a phone calendar. It takes an hour at the start of the semester and it is wrong by week three, because a professor pushed the paper back a week and you were the last person to hear about it.
Canvas Sync is Semora's way of skipping that copying step. Connecting Canvas takes one step: copy the private Calendar Feed link Canvas already gives you and paste it in. There is no access token to generate and nothing for your school to approve. If the connector is unavailable or not permitted, scan the syllabus or paste the assignment list into Semora instead.
The current Canvas connector and its limits
Connecting Canvas takes one step: copy the private Calendar Feed link Canvas already gives you and paste it in. There is no access token to generate and nothing for your school to approve. They do not currently provide a Semora OAuth or institution-managed sign-in flow.
Canvas's Calendar Feed needs no administrator involvement at all. Canvas documents OAuth as the approved authorization route for applications used by multiple users. Keep the feed link private, and follow your institution's policy on connecting outside services.
If the connector is unavailable or not permitted, scan the course syllabus or copy the Canvas assignment list and paste it into the scanner on the web app. Both routes keep a review step before deadlines are added.
Checking availability and importing courses
Learning-platform import is free on every plan. Start from Semora's connection screen and choose Canvas; there is no institutional permission to confirm.
The screen asks for one thing: the private Calendar Feed link Canvas already gives you, under Calendar then Calendar Feed. Your school's Canvas address comes from that link, so there is nothing else to type. Semora checks the link is a real Canvas feed over HTTPS and says what is wrong before attempting the connection.
Once the link is accepted, choose the courses you want to import and the Semora semester where they belong. If you would rather not connect Canvas at all, use the syllabus scanner or paste the assignment list instead.
- Open learning-platform connections in Semora and choose Canvas.
- Enter your school's HTTPS Canvas address if prompted.
- Paste the private Calendar Feed link from Canvas. No access token, and nothing for your school to approve.
- Choose the active courses and semester you want to import.
- If no direct connection is available, scan the syllabus or paste the assignment list.
Choosing which courses come in
Tap “Find my courses” and Semora asks Canvas for your active enrollments only. Dropped courses and finished semesters still sitting in your Canvas account do not show up, which spares you from scrolling past last spring's classes to find this term's.
Everything that comes back is pre-selected. Tap any course to deselect it, or use Clear and Select all to flip the whole list at once. You also name the connection, it defaults to “Canvas”, and pick which semester the imported courses belong to, defaulting to your active one. If you have not created a semester yet, the screen links you straight to that step instead of failing on save.
Each course you keep becomes a real Semora course, not a read-only mirror. It gets a color from a rotating set of six, a book icon, and a permanent link back to its Canvas counterpart, and exactly one Canvas course maps to exactly one Semora course. From there it behaves like every other course in the app: rename it, add your own tasks alongside the imported ones, track grades in it.
The import is all-or-nothing. If something fails partway through — a network drop or an authorization error — Semora rolls back the connection and any courses it had started creating before reporting that nothing was saved. You do not end up with three of your five classes imported and no clear way to tell which two are missing.
What actually gets imported from each assignment
For every dated item in the courses you selected, Semora pulls what the Calendar Feed carries: the title, the date, and whatever description Canvas put in the entry. Descriptions arrive unescaped from the calendar entry and trimmed to a readable length, and a long one is cut at a sentence break rather than mid-word.
Semora also guesses a type for each item so your calendar is not one undifferentiated wall of “assignment.” The Calendar Feed does not say what kind of item something is, so the title is matched: midterm, exam, test, or a bare “final” becomes an exam, while “final draft” and “final paper” stay assignments; quiz becomes a quiz; project becomes a project; read, reading, or chapter becomes a reading; everything else stays an assignment. It is a keyword match, not comprehension, so a paper called “Unit 3 Response” lands as a plain assignment. You can change the type on any task in two taps.
Here is what ends up on each imported task:
- The title, and the description as plain readable text.
- The due date and time, converted to your device's local clock from the absolute timestamp Canvas returns, so an 11:59 p.m. deadline stays 11:59 p.m. instead of drifting by your UTC offset.
- Not grades. The Calendar Feed carries dates, not marks, so points and scores stay yours to enter in Semora's grade tracking.
- Not submission status. The Calendar Feed carries no record of what you have handed in, so completion in Semora is yours to set.
- A link back to the assignment's own Canvas page, opened straight from the task in Semora.
How refreshing works after the first import
Refreshes use the same Calendar Feed link as the initial Canvas import. Semora shows the current connection state so you can tell whether imported coursework is up to date or needs attention.
While the feed link works and your device is online, Semora can refresh coursework during normal app use. If a refresh fails, the connection records a status instead of silently presenting the import as current.
You can also force one. Every connection in Settings has a “Sync now” button, and it reports back exactly what happened: how many assignments were updated, and how many were skipped for not having a usable due date. Each connection carries a plain-language health state you can read at a glance — never, syncing, success, partial, error, or credentials required.
After each successful sync, Semora reschedules the reminders on your tasks. That is the part that makes a moved deadline actually useful: when a professor pushes a paper from Tuesday to Friday, the notification moves with it instead of firing on the old date.
A Calendar Feed link does not expire. If you reset it in Canvas, Semora marks the connection as needing attention and a Reconnect action accepts the new link in place.
What Semora can do with a Canvas connection
Connecting Canvas takes one step: copy the private Calendar Feed link Canvas already gives you and paste it in. There is no access token to generate and nothing for your school to approve.
For Canvas, Semora reads one thing: the dated items in the Calendar Feed link you pasted. That feed carries no grades and no submission state. Moodle works the same way, from the personal calendar export link you copy out of your own Moodle: dates, and no grades or submission state either. Blackboard, which connects with a school-issued token, can also read gradebook columns. Semora never submits coursework, posts, edits, or deletes anything in your learning platform.
There are guardrails on any school address you enter. The URL must be HTTPS; localhost, .local hostnames, and private network ranges are refused, while redirects are limited to the same origin.
Disconnecting removes the connection from Semora. Coursework already imported into your planner, including your completion history and grades, remains available unless you delete it separately.
What a sync will never overwrite
Every synced assignment is matched on a composite key: the connection, the Canvas course, and the Canvas assignment ID. Running a sync twice does not create duplicates, and the same import repeated ten times produces the same result as running it once.
Nothing gets deleted, either. If an assignment disappears from Canvas, Semora keeps the task along with your completion state and any grade attached to it. The sync function explicitly declines to authorize removals, on the reasoning that bounded pagination or a visibility rule on the school's side could make a perfectly valid assignment look like it vanished. Even where a removal is authorized, the database marks the task rather than deleting it, and the task screen labels it as no longer listed in the LMS but kept in Semora.
Canvas refreshes the fields you have not touched — title, description, type, due date, due time, and which course an item belongs to. The moment you edit one of those yourself it becomes yours, and syncs stop overwriting it. The rules are specific rather than vague:
- A field you edit is yours from then on. Rename an assignment or move its date and later syncs leave your version alone.
- One deliberate exception: if Canvas moves a deadline EARLIER than the date you set, the earlier date wins, because being protected from a deadline that moved up is not protection. Semora flags the disagreement so you can see what changed.
- Grades are never touched by a sync. The Calendar Feed carries no scores, so the number you typed in cannot be overwritten by an import.
- Completion is yours alone. The Calendar Feed carries no submission state, so whether you have handed something in is something only you tell Semora — and no sync un-checks it.
- The same applies to the late flag: once something is marked late, a later sync will not quietly clear it.
- Because the feed carries no submission time, Semora leaves the completion time unknown rather than stamping the sync time, which could make on-time work look late.
Blackboard and Moodle, honestly
Semora lists Canvas, Blackboard, and Moodle. Canvas connects with the private Calendar Feed link Canvas already gives you, with no token and no school approval; Moodle connects the same way, with the personal calendar export link Moodle gives every user by default, so there is nothing for an administrator to enable there either; Blackboard still uses a school-issued token, so its availability depends on school configuration.
When Blackboard import is available, Semora can read course lists and gradebook columns for titles, due dates, and point totals. Depending on the institution's setup, score or submission detail may be more limited than Canvas.
Moodle is available to anyone with a Moodle account, because the link comes from your own Moodle rather than from an administrator: open Calendar, then Import or export calendars, then Export calendar, then Get calendar URL, copy the URL, and paste it into Semora. Your Moodle password is never typed into Semora — you sign in to Moodle itself, in your own browser. The one place it is harder than Canvas is that trip out to the browser, since Canvas's link is already on the calendar page you are looking at. Like Canvas, the feed carries dates rather than marks: no grades, no submission status, and an assignment with no due date set never becomes a calendar event, so it does not appear.
For Canvas, the connection screen asks for the private Calendar Feed link Canvas already gives you: no token, and nothing for your school to approve.
What it costs, who it is for, and where it gets awkward
Connecting a learning platform is free on every plan. Connecting Canvas takes one step: copy the private Calendar Feed link Canvas already gives you and paste it in. There is no access token to generate and nothing for your school to approve. Moodle takes the same kind of link, copied out of your own Moodle under Calendar, then Import or export calendars, then Export calendar — one trip to the browser, and nothing for your school to approve. Blackboard still uses a school-issued token, so its setup varies by school. Pro is $4.99 per month or $29.99 per year, which works out to about $2.50 a month on the annual plan. It can be bought with a card on the web at app.semoraai.com, where Stripe processes the payment, or inside the iOS app through the App Store, and applies to your whole account either way, including the web app. The entitlement check happens on Semora's server before your school is ever contacted, so a free account gets a clear upgrade screen rather than a connection that mysteriously fails halfway.
You still get full deadline and task tracking, grade tracking with weighted averages, same-day reminders, joining a classmate's Course Space (hosting your own is Pro), one AI action for the lifetime of the account, and unlimited classes synced free from Canvas, Blackboard or Moodle plus one course you add by hand within one semester, with one semester total on free. There is also a manual route: copy the text off a Canvas page or a syllabus PDF, paste it into Semora's scanner, and it pulls every deadline out of it in under a minute. That spends your one free AI action, so on free it is worth aiming at the course with the messiest schedule — typing deadlines in by hand stays unlimited and costs nothing at all, and Pro lifts the cap.
Canvas Sync is not for everyone. If your professor never posts assignments to Canvas and keeps everything in the syllabus, scanning the syllabus is the better path and it is free. If you want to submit work or message your instructor, Canvas stays where that happens — Semora is an organizing layer on top, deliberately read-only. And a few edges are worth knowing before you connect:
- Assignments with no due date in Canvas are skipped. Semora marks the connection “partial” and tells you exactly how many were skipped, so it is visible rather than silent.
- If you already created a course by scanning its syllabus, importing that same class from Canvas creates a second course. Semora does not merge the two — pick one route per class.
- Semora does not pull instructor names from the Canvas course list, so imported courses arrive with the instructor field blank. You can fill it in yourself.
- Semora reads at most 1,000 items from a Calendar Feed, so an unusually long history can arrive truncated; when a response looks incomplete Semora keeps what it already imported rather than deleting from it. A Moodle calendar export link is read the same way, with a 5,000-item ceiling of its own. Blackboard, which syncs course by course with a token, covers up to 50 courses at a time.
- There is no per-course on/off switch after import. To change which courses sync, disconnect and reconnect with a different selection.
- A Calendar Feed link does not expire. If you reset it in Canvas, the connection shows “credentials required” and offers a Reconnect action that takes the new link.
Frequently asked questions
Is Canvas import free?
No. Learning-platform import is free on every plan. The free plan still covers the same job from the syllabus side: one AI action for the lifetime of the account to spend on a scan, unlimited classes synced free from Canvas, Blackboard or Moodle plus one course you add by hand within one semester, unlimited deadlines and tasks you add yourself, grade tracking with weighted averages, and same-day reminders.
How does Semora connect to Canvas?
Connecting Canvas takes one step: copy the private Calendar Feed link Canvas already gives you and paste it in. There is no access token to generate and nothing for your school to approve.
What if I would rather not connect Canvas at all?
Scan the syllabus, or paste the Canvas assignment list straight into the scanner. Both routes run through the scanner, so on a free account either one spends your single lifetime AI action, and if your professor keeps everything in the syllabus rather than posting to Canvas, scanning is the better path anyway.
What actually gets imported?
Your active enrollments only, so dropped courses and finished semesters do not show up. For each assignment you get the title, the due date and time converted to your device's local clock from the absolute timestamp Canvas returns, the points, and a guessed type so your calendar is not one undifferentiated wall of “assignment” — a Canvas quiz becomes a quiz, and titles containing midterm, final, exam or test become exams.
Will a sync overwrite work I have already done?
No. A re-sync refreshes titles and dates but leaves your own state alone. The feed carries no submission time, so Semora leaves the completion time unknown rather than stamping the sync time, because using sync time could make on-time work look late.
Does it work with Blackboard and Moodle?
Yes, and both are free on every plan, exactly like Canvas. They differ in setup. Moodle connects the way Canvas does, with the personal calendar export link you copy from your own Moodle under Calendar, then Import or export calendars, then Export calendar — no token, and nothing for your school to approve, though you do have to step out to your browser once to fetch it. Blackboard uses a school-issued token, so its availability depends on your institution, and a sync covers up to 50 courses at a time with bounded pagination through each course's assignments.