Canvas LMS Personalized Pending Assignment Reminders - n8n Workflow

Use this powerful n8n workflow to automatically retrieve unsubmitted Canvas assignments and send personalized reminder messages to students using the n8n node structure and custom Python scripting.

Workflow Preview

Ready to automate?

Download this n8n workflow template and start using it instantly.

Who is this best for?

Markdown-formatted:
Educators and Instructors: Who manage large courses on Canvas and need to automate personalized student outreach.
EdTech Administrators: Seeking robust, scalable automation solutions using n8n templates.


  • n8n Developers: Looking for complex examples combining HTTP requests, custom pagination handling, and data enrichment using the n8n node ecosystem.

Overview

Managing student engagement and preventing forgotten assignments is critical. This automation solves the tedious manual task of checking submissions and drafting individual reminder messages. This n8n workflow acts as a powerful assistant, seamlessly connecting to the Canvas API to identify missing work for a designated course. It uses advanced pagination handling and custom scripting within an n8n node to correctly group assignments by student, format due dates (converting UTC to local time, e.g., GMT-3), and generate a consolidated summary. Finally, it uses the Canvas Conversations API to send a direct, personalized message to each student, ensuring they receive a clear alert about their unsubmitted items. This is a highly efficient and reliable way to deploy complex educational automation using n8n.

How it Works

This powerful n8n workflow executes its logic in several distinct phases, starting with an explicit n8n trigger:


  1. Initialization: The process begins with the When clicking ‘Execute workflow’ manual n8n trigger. The Initial parameters n8n node sets the Canvas base URL and the target course name.

  2. Course Identification: The workflow queries all teacher courses using the Canvas API (Get all teacher courses). The results are aggregated and flattened using a Python Code n8n node (Agregate courses pagination) to handle API pagination. A Filter n8n node (Get course by name) locates the specific course ID.

  3. Student Retrieval: The course ID is used by the Get course students n8n node to fetch all enrolled students. Another Python Code n8n node (Agregate students pagination) handles the potential pagination of the student list.

  4. Submission Retrieval: The workflow iterates through the list of students. For each student, the Get course submissions n8n node queries all submissions marked as unsubmitted for that specific student, including the assignment details. The results are again aggregated by the Agregate submits pagination n8n node.

  5. Data Structuring: The Enrich Submissions with Student Data Python n8n node is pivotal. It merges the student profile data with the unsubmitted assignment data and applies a custom date conversion function to translate the assignment's UTC due date into a local timezone (GMT-3).

  6. Summary Generation: The Group Pending Assignments per Student Python n8n node processes all pending assignment records. It groups them by student ID and generates a comprehensive, human-readable text block (pendingsummary) listing all required actions and due dates for that individual.

  7. Final Delivery: The final Send message in Canvas n8n node utilizes the Canvas Conversations API to send the personalized pendingsummary directly to the student's inbox within Canvas, completing this automated n8n workflow.

Installation Guide

To deploy this useful n8n workflow, follow these steps:


  1. Import: Copy the provided JSON code and import it into your n8n instance via the 'Workflows' section.

  2. Credentials: This n8n workflow requires Canvas API credentials. You must set up an HTTP Bearer Authentication credential. The credential must contain your Canvas API Token. This credential is used by all HTTP Request n8n node elements.

  3. Initial Setup: Navigate to the Initial parameters n8n node and configure the following parameters:

canvasLink: Your institution's Canvas base URL (e.g., https://example.instructure.com).
courseName: The exact name of the course you wish to automate reminders for (must match the name in Canvas).

  1. Execution: The workflow uses a manual n8n trigger. Run the workflow once to test the connection and ensure messages are being generated correctly before scheduling it for regular execution.

Node Details

This intricate n8n template relies on several key n8n node types for data retrieval and manipulation:

Manual Trigger: When clicking ‘Execute workflow’
Function: Starts the execution of the n8n workflow on demand.
Key Configuration: Standard manual n8n trigger used for testing and manual initiation.
Set Node: Initial parameters
Function: Defines global configuration variables like the Canvas base URL and the target course name, making the n8n workflow easily configurable.
Key Configuration: Defines canvasLink and courseName string assignments.
HTTP Request Node: Get all teacher courses, Get course students, Get course submissions, Send message in Canvas
Function: Interacts directly with the Canvas REST API. It handles data retrieval (GET) for courses, students, and submissions, and message sending (POST) for conversations.
Key Configuration: Utilizes 'predefinedCredentialType' (Bearer Token) and incorporates complex pagination logic using response headers (link) within the node parameters for seamless multi-page data fetching. This allows the n8n node to pull extensive datasets.
Code Node (Python): Agregate courses pagination, Agregate students pagination, Agregate submits pagination
Function: Essential custom code n8n node used to normalize data by iterating through all paginated results received from the HTTP Request n8n node and flattening them into a single list of output items.
Code Node (Python): Enrich Submissions with Student Data
Function: Merges student metadata (name, email) with the submission item data and contains a custom Python function to convert assignment dueat (UTC) to a specific local timezone (GMT-3), crucial for accurate reminders.
Code Node (Python): Group Pending Assignments per Student
Function: Groups the enriched submission data by student and dynamically generates a personalized, formatted text summary (pendingsummary) listing all unsubmitted tasks.
Filter Node: Get course by name
* Function: Locates the specific course item from the list of all courses by matching the course name set in the initial parameters, demonstrating efficient data processing within the n8n workflow.

Related n8n Workflows

Free

Nodes: 6 Nodes
Updated: December 26 2025
View all
Created by
Alysson Neves
Alysson Neves

Featured*