Skip to main content

2-way-sync assignments/completion between Canvas LMS and Notion

Workflow preview

Workflow preview
100%
2-way-sync assignments/completion between Canvas LMS and Notion preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

Syncs assignments and completion states to and fro between Canvas LMS and a Notion database. Automatically triggers every 2 hours during the schoolday by default (meaning 7 times a day), but also s...

Best for

  • Personal Productivity automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.comparedatasets, n8n-nodes-base.httprequest, n8n-nodes-base.markdown, n8n-nodes-base.filter, n8n-nodes-base.if, n8n-nodes-base.notion, n8n-nodes-base.scheduletrigger, n8n-nodes-base.stickynote

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Sam Nesler.

Original n8n.io source

1.1 Workflow description

Title
2-way-sync assignments/completion between Canvas LMS and Notion
Workflow name
2-way-sync assignments/completion between Canvas LMS and Notion

Syncs assignments and completion states to and fro between Canvas LMS and a Notion database. Automatically triggers every 2 hours during the schoolday by default (meaning 7 times a day), but also supports manual refreshing via webhooks.

Setup

You'll need a few things to get started:

  1. A Canvas API key. You can generate one by going to your Canvas account settings and clicking on the "New Access Token" button. The URL looks like https://canvas.wisc.edu/profile/settings
  2. You'll also need to replace URLs in Canvas nodes with your institution's domain, unless you're a student at UW-Madison. Canvas nodes are all the HTTP Request nodes except the one labelled "OpenAI Categorization", which is an OpenAI node and will require a key in a later step.
  3. A Notion integration token. You can find this by going to your Notion integrations page and clicking "Create new integration". You can make it a "Internal Integration".
  4. A Notion database to sync to. I made a template for use with the workflow, but you can use any database that has the following fields:
    • Status (status): Status with at least the options "Not Started" and "Completed" - assignments start out "Not Started", and are marked "Completed" when they are submitted on Canvas.
    • Estimate (select): Select with at least the options "XS", "S", "M", "L", "XL" - this is where the estimated time to complete the assignment will be stored. Even if you don't use AI, they'll start out as "M"
    • Priority (select): Select with at least the options "Could Do", "Should Do", "Must Do" - assignments start out "Should Do"
    • ID (text): this is where the ID of the assignment will be stored. We use this to sync without having a database on the server
    • Due Date (date): this is where the due date of the assignment will be stored
    • Class (text): this is where the name of the class will be stored
    • Link (URL): this is where the link to the assignment will be stored
  5. The ID of the Notion database you want to sync to. You can find this by clicking "Share" in the top right of your database and copying the link. The ID is the part of the link that comes after https://www.notion.so/ and before ?v=. So for https://www.notion.so/tsuniiverse/1976e99d91128076b034e7379464560f?v=1976e99d911281e7bd4b000c2cbec692&pvs=4, the ID would be 1976e99d91128076b034e7379464560f.
  6. An OpenAI key for assignment length estimation or disable the node.

Manual Refreshing

Embed the production URL from the Webhook Trigger inside a "toggle list" or "toggle heading" inside Notion, then expand the heading to refresh, like so:

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Compare Datasets

Type / Role
n8n-nodes-base.compareDatasets - compareDatasets
Config choices
Version 2.3

Block 2 - Get Item Data

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.1

Block 3 - Markdown

Type / Role
n8n-nodes-base.markdown - markdown
Config choices
Version 1

Block 4 - Isn't locked

Type / Role
n8n-nodes-base.filter - filter
Config choices
Version 2

Block 5 - Is Canvas Complete?

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.1

Block 6 - Notion

Type / Role
n8n-nodes-base.notion - notion
Config choices
Version 2

Block 7 - Planner

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.1

Block 8 - Notion is complete

Type / Role
n8n-nodes-base.filter - filter
Config choices
Version 2

Block 9 - Schedule Trigger

Type / Role
n8n-nodes-base.scheduleTrigger - scheduleTrigger
Config choices
Version 1.1

Block 10 - Not an event

Type / Role
n8n-nodes-base.filter - filter
Config choices
Version 2.1

Block 11 - Update Override

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 12 - Override Exists

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.1

Block 13 - New Override

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 14 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 15 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 16 - Sticky Note2

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 17 - Merge Item Data

Type / Role
n8n-nodes-base.merge - merge
Config choices
Version 2.1

Block 18 - Merge OpenAI Ranking

Type / Role
n8n-nodes-base.merge - merge
Config choices
Version 2.1

Block 19 - Add to Notion

Type / Role
n8n-nodes-base.notion - notion
Config choices
Version 2

Block 20 - Mark Notion as complete

Type / Role
n8n-nodes-base.notion - notion
Config choices
Version 2.1

Block 21 - Notion isn't started

Type / Role
n8n-nodes-base.filter - filter
Config choices
Version 2

Block 22 - Update Due Date

Type / Role
n8n-nodes-base.notion - notion
Config choices
Version 2.1

Block 23 - OpenAI Categorization

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 24 - Webhook

Type / Role
n8n-nodes-base.webhook - webhook
Config choices
Version 1.1

Showing the first 24 of 26 workflow blocks. Download the JSON for the full node graph.

3. Summary Table

Workflow 2-way-sync assignments/completion between Canvas LMS and Notion
Complexity advanced
Nodes 26
Categories Personal Productivity
Author Sam Nesler
Published 14 Nov 2024

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/2544/2544.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does 2-way-sync assignments/completion between Canvas LMS and Notion do?

Syncs assignments and completion states to and fro between Canvas LMS and a Notion database. Automatically triggers every 2 hours during the schoolday by default (meaning 7 times a day), but also s...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Personal Productivity use case.