Weekday early alert digest for at-risk students in Slack

Every weekday morning your advising team gets a ranked list of students slipping behind in each course, plus a tracking log that shows whether outreach worked.

Agentic Task
BlackboardSlack BotGoogle SheetsOperationsDaily DigestsNotifications & Alerts
PromptCreate

Every weekday at 7am, scan Blackboard for students who are falling behind and post an early alert digest to our advising team in Slack. Build this on a cron trigger. Blackboard does not send outgoing webhooks for gradebook activity, so the workflow does all of its own reading on each run.

Start with Blackboard Get Courses to list the courses, and use Get Terms to resolve each course's term and its start and end dates. Only evaluate courses whose term is currently running. Skip any course whose term has not started yet, and skip courses whose term has already ended. Note that the courses collection lives on the v3 API path while gradebook columns and attempts are on v2, so use the exact version segment each operation requires.

For each course in scope, call Get Course Memberships to resolve the enrolled students and the course instructor. Keep the instructor's name so I can include it in the alert, and only evaluate members whose course role is student.

For each course, call Get Grade Columns to list the gradebook columns. For each column, use Get Column Grades to read every student's score and Get Column Attempts to see which students have no submitted attempt. Treat an assignment as missing when the student has no submitted attempt and the due date has already passed. Work out each student's running score as the percentage they currently hold across graded work, and ignore columns that are not graded work.

All of these Blackboard list endpoints page with offset and limit and return a paging.nextPage link. Follow nextPage until it is absent so I see every student, not just the first page. Blackboard allows roughly 10,000 requests per day across the whole institution, so trim responses with the fields parameter where you can and keep the scan limited to courses in the current term.

Flag a student when their current score falls below a configurable threshold, defaulting to 70 percent, or when they have two or more missing assignments. Rank the flagged students by severity, weighing how far below the threshold the score sits, how many assignments are missing, and how far into the term the course is. A student sitting 20 points below the line in week 10 is more urgent than one sitting 2 points below in week 2, and the ranking should reflect that.

Before alerting, read the existing tracking log in Google Sheets with Get Values and check whether each student has already been flagged for the same course within the last seven days. If they have, stay quiet unless their situation has gotten worse, meaning their score has dropped further or they have picked up another missing assignment since that last flag. This is what keeps advisors from seeing the same names every morning and tuning the digest out.

Post one Slack message per course into our advising channel so each message is a self contained brief an advisor can act on. Name the student, the course and its instructor, the student's current score, and exactly which assignments are missing rather than just a count. List students in severity order, and add a short line of written context for each one explaining why they are on the list. Use Slack formatting, which means single asterisks for bold. If no student in a course is flagged, do not post a message for that course at all.

Append one row per flagged student to our Google Sheets tracking log with Append Values, including the date of the run, the student's name, the course, the instructor, the current score, the number of missing assignments, the names of the missing assignments, and the reason they were flagged. One row per student per run, so we can look back week over week and see whether an intervention actually moved the score.

Make the score threshold, the missing assignment count, the seven day quiet period, the advising channel, and the tracking spreadsheet easy to change in one place at the top of the workflow. Ask me which Slack channel the advising team uses and which spreadsheet to log to when the workflow is set up.

Example output

*Early alert: BIO 210 Cell Biology* (Dr. Amara Osei) *1. Marcus Bell, 52%* / 3 missing Missing: Lab Report 2, Problem Set 4, Midterm Reflection Down 11 points since last week. *2. Priya Raman, 64%* / 2 missing Missing: Problem Set 4, Lab Report 2 *3. Devon Clarke, 68%* / 1 missing Missing: Problem Set 4 Just below the 70 percent line, first flag this term.

What does this prompt do?

  • Checks every course running this term each weekday morning and works out where each student actually stands.
  • Flags students whose score has fallen below your threshold or who have piled up missing work, ranked so the most urgent names come first.
  • Posts one message per course into your advising channel naming the student, their current score, and exactly which assignments they have not handed in.
  • Logs every flagged student to a spreadsheet with the date, so you can see week over week whether your outreach actually worked.

What do I need to use this?

  • A Blackboard Learn account with permission to view courses, enrollments, and the gradebook
  • A Slack workspace and the channel your advising team works in
  • A Google account and a spreadsheet to use as the tracking log

How can I customize it?

  • Change the score threshold (70 percent by default) or the number of missing assignments that trips an alert
  • Move the run time, or switch from every weekday to a single weekly check on Monday mornings
  • Adjust the seven day quiet period that stops the same student being reported every morning

FAQs

Which students actually get flagged?
A student is flagged when their current score in a course falls below your threshold, which defaults to 70 percent, or when they have two or more assignments with nothing submitted. Both numbers are yours to change.
Will advisors see the same student every single morning?
No. Once a student has been flagged for a course they are held back for seven days, so the digest stays readable. The exception is when things get worse: if their score drops further or they pick up another missing assignment, they resurface right away.
What happens with courses that have not started yet?
They are skipped. The workflow checks each course's term dates first and only looks at courses whose term is actually running, so you do not get alerts about empty gradebooks in the week before classes begin.
Do students get notified that they have been flagged?
No. This one is entirely internal and only posts to your advising channel and your tracking spreadsheet. Nothing is sent to students or instructors.
Why one Slack message per course instead of a single long digest?
So each message is a self contained brief an advisor can act on, reply to, or forward to the right person. It also keeps threads tidy when advisors follow up on a specific course.

Related templates

Build a credential rotation checklist when someone leaves

When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.

1Password
Rippling
Slack Bot
+1
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Draft polite follow-ups for emails that never got a reply

Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.

Aurinko
Google Sheets
Slack Bot
Agentic Task

Catch struggling students in week 3, not week 12.

Set this up once and your advising team starts every weekday with a ranked list of exactly who needs a call and why.