Canvas assignments in Todoist, without an API token
If you search for "Canvas to Todoist", much of what comes up is a script. You generate a Canvas API token, generate a Todoist token, and run the thing somewhere that stays on. Margin does the same job another way. It is a Chrome extension that reads Canvas through the session your browser is already signed in to, and writes your assignments into your own Todoist. There is no Canvas token to create and no Todoist token to paste. The next week syncs free; the whole term is the Margin Pass.
What a script asks of you
A do-it-yourself sync is a good small project, and plenty of students run one happily. It asks for three things.
- A Canvas API token. You make it in your Canvas settings. Some schools turn token creation off, and then the script is finished before it starts.
- A Todoist token. You copy it out of Todoist's settings and keep it in a config file or an environment variable.
- A place to run. The script has to run on a schedule, on a machine that is awake, or a small server you pay for and maintain. When it stops, the list stops updating, and unless you built an alert, nothing tells you.
What Margin does instead
Margin reads Canvas in your browser. Canvas already trusts the tab you are signed in on, so Margin asks it the way the tab would: no token, and your Canvas password never reaches us. It then writes each assignment to your own Todoist as a task: the title, the course, the due date. By default the tasks land in one project called Margin, with a section for each course. A hidden ID on each task keeps a re-sync from adding it twice.
Todoist connects in one click. You sign in to Margin with Google, press connect, and approve it on Todoist's own screen. There is nothing to copy.
Free, and the Pass
Free. Install the extension and the next week of Canvas work, plus any calendar feeds you add, syncs into Todoist and onto the Margin dashboard. No card. The one-click Todoist connection needs a free Margin sign-in.
Margin Pass. The whole term, not just the next week. $9.99 once, for the semester. It does not renew. You buy it inside the extension, in Settings › Margin Pass, after a Google sign-in. There is no checkout link on the web.
What our server holds
Margin is not serverless, and the privacy page says what is there. We hold your email, the Google account you sign in with, your plan, your devices and the settings you give them, and your Todoist token, which we keep encrypted. If you buy a Pass, we also hold the record of that purchase. We do not hold your assignments. They go from Canvas, through your browser, into your Todoist. The full list is on the privacy page.
If a script already works
If a script you run yourself already works, keep it. It is yours, it costs nothing, and you know exactly what it does. Margin is for the person whose school has turned tokens off, or who would rather not run something that has to stay running.
If you are weighing other kinds of tool too, how Canvas due-date tools differ compares them by kind.
Add Margin from the Chrome Web Store
Evidence
Margin extension, Canvas read path (extension/sync-canvas.js): requests to the Canvas API use credentials: 'include', the browser's signed-in session, with no API key.
Margin extension, Todoist write path (extension/todoist-write.js): each task carries the course name and a Margin ID in its description, and by default is placed in a project named Margin with one section per course.
Margin extension, free window (extension/constants.js): FREE_CAPTURE_HORIZON_DAYS = 7; whole-semester capture is the paid line (extension/capabilities.js).
Margin privacy policy, the privacy page: the list of what Margin holds, and the statement that no assignment titles or due dates are on Margin infrastructure.