Flag at-risk students in Canvas before they fall behind
Every weekday at 7am, your active courses are checked for missing work, silent logins, and slipping grades, with a ranked list sent to your advising channel.
Every weekday at 7am, check my active Canvas courses and flag students who are slipping before it becomes a crisis. Use a cron trigger for this.
Start with Canvas List Courses to get my active courses. For each course, gather three signals: Get Course-Level Student Summaries for participation and page view counts, List Missing Submissions for past-due unsubmitted work, and Get Student-in-Course Assignment Analytics for recent grade trends on the students who look questionable from the first two signals.
Weigh those signals into a short risk tier per student: high, medium, or low. As a starting point, treat each of these as a risk signal: no login or participation in the last 7 days, two or more missing assignments, or a recent grade drop of more than 10 percent. A student hitting several signals should tier higher than one hitting a single signal. For every flagged student, write a one-line plain-English reason, for example "No login in 9 days and 3 assignments missing in BIO 210". Keep each reason specific enough that an advisor can act on it without opening Canvas.
Before posting anything, read the existing rows from the tracking tab with Google Sheets Get Values so you know what was flagged on previous runs. Only include a student in today's output if they are newly flagged or their reason has changed since the last time they appeared. If a student's reason is effectively the same as their most recent row, skip them, so the advising channel does not get the same names every morning.
For each student you are flagging today, append one row to the Google Sheets tracking tab with Append Values. Include the run date, course name, student name, risk tier, and the one-line reason, one row per flagged student, so advisors keep a running history across the term.
Then post a grouped digest to the advising channel with Slack Bot Send a Message. Group by risk tier with the most severe first, show the student name, course, and reason on each line, and cap the message at the top 15 students. If more than 15 qualify, note how many additional students were flagged and point to the tracking sheet. If nobody is new or changed since the previous run, post a short note saying there are no new or changed flags today rather than staying silent.
The audience is instructors, advisors, and student success staff, so write the digest in plain language and keep technical detail out of it.
Example output
Additional information
What does this prompt do?
- Checks each of your active courses every weekday morning and gathers participation, missing work, and recent grade movement for every student.
- Sorts students into risk tiers using thresholds you control, then writes a one-line plain-English reason for each student it flags.
- Appends one row per flagged student to a shared tracking sheet, so advisors keep a running history across the term.
- Posts a digest to your advising channel sorted by severity and capped at fifteen students, and only re-raises a student when their reason has changed.
What do I need to use this?
- A Canvas account at your institution covering the courses you want monitored. This is Instructure Canvas, the learning management system, not the Canva design tool.
- Instructor or advisor level visibility in Canvas, since student progress data is only available to staff who can already see those students' work.
- A Google account and a spreadsheet you want to use as the advisor tracking log.
- A Slack workspace and the channel where your advising team wants the morning digest.
How can I customize it?
- Change the timing. Seven in the morning on weekdays suits most advising teams, but you can move it later or run it only on Mondays and Thursdays.
- Tune the thresholds. The days without logging in, the number of missing assignments, and the size of the grade drop are all yours to set.
- Adjust the digest. Raise or lower the fifteen student cap, route different courses to different channels, or group by advisor instead of by severity.
FAQs
Is this Canvas the learning platform or Canva the design tool?
Will students know they have been flagged?
Why doesn't the same student appear every single day?
What if I teach or advise on more than one course?
Can I change what counts as at risk?
Related templates
Every weekday, find every unpaid JobNimbus invoice, email each customer one reminder that gets firmer as it ages, and post a receivables summary to Slack.
Every hour, find the tickets closest to breaching, leave a nudge on each one, and post a ranked at-risk list to your support channel.
Every weekday afternoon, each student who is behind gets a warm, personal message in their Canvas inbox listing exactly what they owe.
Every Monday at 8am, see exactly which assignments have work waiting, sorted worst first, posted to Slack and logged to a spreadsheet.
Every weekday morning we compare your password vault against your HR records and suspend access for anyone who has already left.
When someone asks a library or framework question in your help channel, they get a straight answer with working code and a source link, right in the thread.
Stop finding out at midterms.
Let a morning digest surface the students who need a check-in, before a quiet week turns into a failing grade.