Browse the docs

Agent setup guide

Absence Follow-Up

Every school day: a kind check-in to the guardian for each unexplained absence, sent after office approval, plus a Slack list of 3+ days in a row.

Available About 25 min to set up

What it does

Every school day: a kind check-in to the guardian for each unexplained absence, sent after office approval, plus a Slack list of 3+ days in a row.

  • Every school day, reads today's absences from your Google Sheet (up to 50 per run), leaves out rows dated another day (checked in code, in your time zone) and looks up each student's register row.
  • AI skips explained absences, counts absences in a row from the register (showing how it counted), and drafts a short, neutral check-in asking the guardian how to report the reason.
  • Today's batch waits in Reviews; office staff edit any message or hold any student, then approve.
  • Each approved message is checked in code (still marked to send, guardian email present, no placeholders) and by an AI wording check that only stops fines or legal threats, safeguarding language, attendance figures, other students and accusations — then emailed with replies to your attendance office.
  • Posts the students absent 3+ days in a row and the day's check-in counts to your staff channel in Slack.
  • The summary is counted in code from what each step really did (sent, held, skipped, failed), so it never reports a held message as sent.

What it needs

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Google Sheets and Slack, connected in Settings → Integrations.
  • A “Today's absences” tab refreshed before each run and a register tab, both with an ID column and guardian emails.

What it doesn't do

  • It drafts and organises for a person to approve; it makes no attendance or disciplinary decision.
  • It isn't a safeguarding system: urgent concerns stay with staff and your safeguarding lead.
  • The “in a row” count uses only the history in your register sheet.
  • Nothing is emailed before the office approves the batch; it never mentions fines or legal action.

Availability and plans

Available

Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.

Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.

Before you start

  • A paid plan: agents run live, and the Free plan only runs Dry Runs.
  • An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
  • These apps, connected in Settings → Integrations: Google Sheets and Slack.
  • Nothing to send: the agent runs on a schedule.
  • About 25 minutes.

Set it up step by step

Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.

1. Connect your AI provider

The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.

2. Connect Google Sheets

Connect the Google account that can open your attendance spreadsheet (Settings → Integrations → Google Sheets).

3. Connect Slack

Connect your Slack workspace (Settings → Integrations → Slack) and invite the app to your attendance channel.

4. Describe your attendance rules

Open “Draft the check-in (or skip)” and replace the placeholder with your codes, reporting route and sign-off.

SettingWhat to enterIn step
Your attendance rulesReplace the placeholder with your school name, attendance codes (which mean unexplained), how parents report an absence, the office contact and the sign-off. It starts as “[DESCRIBE YOUR SCHOOL: NAME, ATTENDANCE CODES AND WHICH MEAN UNEXPLAINED, HOW PARENTS REPORT AN ABSENCE (PHONE / LINK), THE OFFICE CONTACT AND SIGN-OFF HERE]” until you replace it.“Draft the check-in (or skip)”

5. Pick your absences and register tabs

Open “Read today's absences” and “Look up the student's register row” and pick the account, spreadsheet and tab for each. Both tabs need an ID column.

SettingWhat to enterIn step
Google account (absences)The Google account that can open your attendance spreadsheet. Pick your connected Google Sheets account.“Read today's absences”
Attendance spreadsheetPaste the link of the spreadsheet with today's absences. Keep its sharing restricted to staff.“Read today's absences”
Today's absences tabOne row per student absent today: ID, Student, Class, Guardian name, Guardian email, Code, Reason.“Read today's absences”
Google account (register)The same Google account. Pick your connected Google Sheets account.“Look up the student's register row”
Register spreadsheetUsually the same spreadsheet.“Look up the student's register row”
Register tabOne row per student with the same ID column and one column per school day (P, A, L…).“Look up the student's register row”

6. Add your attendance office inbox

Open “Email the guardian” and enter the Reply-to address.

SettingWhat to enterIn step
Attendance office inbox (Reply-to)Guardians' replies come back to this address.“Email the guardian”

7. Pick the staff channel

Open “Post the list to Slack” and pick your account and channel.

SettingWhat to enterIn step
Slack accountThe Slack workspace your staff use. Pick your connected Slack account.“Post the list to Slack”
Attendance or pastoral channelA private staff channel for the daily list, e.g. #attendance. Invite the app first.“Post the list to Slack”

8. Test it with Dry Run

Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.

9. Switch the trigger on

Open the trigger, set your time zone and switch the schedule on (weekdays at 10:00). Refresh today's absences tab before it runs.

How it works

The agent is a normal workflow with 17 steps (3 AI steps, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.

  • Weekdays at 10:00 — Runs on a schedule (cron 0 10 * * 1-5, UTC — change it in the trigger's settings). Runs every school day mid-morning, after registration. Set your time zone on the trigger.
  • Read today's absences — Google Sheets: Read rows. Reads your “Today's absences” tab: one row per student absent today (from your register export or a FILTER of your register), with ID, student, class, guardian, guardian email, code or reason.
  • Keep today's absences — Step. In code, not AI: works out today's date in your time zone and leaves out rows dated another day (an export that wasn't refreshed). Rows without a date are kept.
  • Each absent student — Repeats the steps below for each item (up to 50 per run). Repeats the history lookup and draft for every absence today (up to 50 per run).
  • [For each item — “Each absent student”] Look up the student's register row — Google Sheets: Find a row. Finds the student's row in your register tab (by ID), with their recent attendance marks, to count absences in a row.
  • [For each item — “Each absent student”] Draft the check-in (or skip) — AI step (runs on your AI provider key). AI decides whether the absence is unexplained, counts the absences in a row from the register, and drafts a short, kind check-in to the guardian.
  • Office approves today's check-ins — A person approves or rejects it in Reviews (the run waits). Today's drafts wait in Reviews together. Office staff edit any message, set send to false on any that shouldn't go out (a reason just came in), and approve; nothing is sent before that.
  • Each approved check-in — Repeats the steps below for each item (up to 50 per run). Branch: Approved. Repeats the checks and send for every message in the approved batch.
  • [For each item — “Each approved check-in”] Final check on the wording — AI step (runs on your AI provider key). AI reads each approved message only for fines or legal threats, safeguarding language, attendance figures, other students, accusations and AI mentions — saying the student wasn't marked present and asking how to report the reason is fine. It must quote the exact sentence it objects to.
  • [For each item — “Each approved check-in”] Check before sending — Step. In code: drafted to send, still marked to send after review, guardian email present, and a subject and body with no placeholders left — plus the wording check's verdict. Anything that fails is held, with the reason.
  • [For each item — “Each approved check-in”] Send it? — Decision: picks the branch to follow. Messages that pass every check are emailed; skipped and held ones are counted in the Slack summary.
  • [For each item — “Each approved check-in”] Email the guardian — Sends an email from your workspace's sender. Branch: Passes. Sends the approved check-in from your workspace's sender, with replies going to your attendance office.
  • [For each item — “Each approved check-in”] Held — Kept in the run history. Branch: Held. Skipped, set to not send or stopped by a check; the reason is in the run history.
  • Count the check-ins — Step. Branch: Rejected. In code, not AI: counts the check-ins sent, skipped (explained absences), held (with the reason) and failed, from what each step really did. When the batch was rejected, every count is 0.
  • List repeated absences — AI step (runs on your AI provider key). AI lists the students absent several days in a row (from the register counts) for your attendance or pastoral staff. The check-in counts are added in code.
  • Post the list to Slack — Slack: Post a message. Posts the students absent 3+ days in a row and the day's check-in counts (counted in code) to your attendance or pastoral channel.
  • Done for today — Kept in the run history. The run history keeps the drafts, what was sent and the list posted.

Test it with Dry Run

Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live.

  • Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
  • Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.
  • For-each loops repeat only the first 3 items.

Go live

  • Open the trigger, set your time zone and switch the schedule on (weekdays at 10:00). Refresh today's absences tab before it runs.
  • Scheduled runs start only once the schedule is activated, and can't repeat faster than your plan's minimum interval.
  • The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
  • When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.

Questions

What should the sheets look like?

A “Today's absences” tab (export from your register or MIS, or a FILTER of your register) with ID, Student, Class, Guardian name, Guardian email, Code and Reason; and a register tab with one row per student (same ID column) and one column per school day with the mark (P, A, L…).

How does it count days in a row?

From the student's register row: the absent marks in a row ending today. It's only as accurate as the register in the sheet.

Is it a safeguarding tool?

No. It drafts routine check-ins and lists repeated absences. Any concern about a child stays with your staff and safeguarding lead.

Troubleshooting

  • “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
  • A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
  • An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
  • Slack says the app isn't in the channel: in Slack, type /invite @Fluxo Flow in that channel (always needed for private channels).
  • It didn't run at the expected time: the schedule must be activated, and its time is in the trigger's timezone.
  • A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
  • A step failed: open the run in History and check that step in the Trace tab for the error and what it received.

Generated from the agent's own workflow, so it always matches what the agent does. Last updated .