Weekly headcount and attrition brief from SuccessFactors

Every Monday at 8am, get a written read on who joined, who left, and which open roles are going stale, posted to Slack and logged to a spreadsheet.

Agentic Task
SAP SuccessFactorsGoogle SheetsSlackHR & PeopleOperationsAI ReportsDaily Digests
PromptCreate

Every Monday at 8am, build a headcount and attrition brief for our people team from SAP SuccessFactors, append a snapshot to a Google Sheets tracking spreadsheet, and post the written brief to Slack.

Start by pulling the current picture out of SuccessFactors. Use List Job Information (EmpJob) for current org and headcount data so every active employee is mapped to a department, manager and location. Use List Employment Records (EmpEmployment) to identify the people who joined, List Employment Terminations (EmpEmploymentTermination) for the people who left in the last seven days including the termination reason, and List Job Requisitions (JobRequisition) for the roles that are still unfilled along with the date each one was opened.

Keep the queries bounded. SuccessFactors uses server-side snapshot pagination where the default and maximum page size is 1000 records, so a full-population EmpJob query will page: follow the __next skiptoken until the result set is complete. Narrow every call with $select, $filter and effective-date ranges instead of taking full extracts, and prefer delta queries such as $filter=lastModifiedDateTime gt datetime'...' where the entity supports it. Datetime values come back as /Date(epochMillis)/ and have to be converted into readable dates before they reach the spreadsheet or the Slack message. Picklist-driven fields such as termination reason resolve to labels through List Picklist Options (PicklistOption), so never show a raw picklist code to a human reader.

Before writing anything, read the existing rows of the tracking spreadsheet with Get Values, so the week over week change is computed against last week's recorded snapshot rather than recalculated from history on every run. Then append one row per department using Append Values, carrying the run date, department, active headcount, joiners this week, leavers this week, open requisitions and the rolling attrition rate. Appending rather than overwriting is what lets the trend accumulate week after week. Calculate the rolling attrition rate over a trailing twelve week window, using leavers against average active headcount, so a single week of departures does not swing the number.

Then write a short narrative brief and post it to Slack with Send a Message. Cover headcount by department, the week over week change, who joined and who left, the rolling attrition rate, and which open requisitions are ageing past 60 days.

The value here is the written interpretation rather than the raw table, so do not list every department. Call out the two or three movements that actually matter this week and say why they matter: a department where attrition is accelerating, a team that has lost more people than it has hired several weeks running, or a requisition that has been open long enough to suggest the role will not be filled as currently scoped. Name people on the joiners and leavers lines, keep the message short enough to read in the channel without expanding it, and when nothing meaningful moved, say so plainly instead of padding the brief.

What does this prompt do?

  • Every Monday morning, pulls your current headcount, last week's joiners and leavers, and your still open roles from SAP SuccessFactors.
  • Adds one row per department to a tracking spreadsheet each week, so you build a real trend history instead of a one off snapshot.
  • Posts a short written brief to Slack covering headcount by department, what changed since last week, who joined, who left, and your rolling attrition rate.
  • Calls out the two or three movements that actually matter and flags open roles that have been sitting unfilled for more than 60 days.

What do I need to use this?

  • An SAP SuccessFactors account with permission to read employee, job and recruiting data
  • A Google account and a spreadsheet you want to use as the weekly headcount tracker
  • A Slack workspace and the channel where the brief should land

How can I customize it?

  • Change the timing. Monday at 8am is just a default, so any day and hour works.
  • Send it somewhere else, whether that is a different Slack channel or a direct message to your People lead.
  • Adjust what counts as an ageing role. Sixty days is the default before an unfilled role gets flagged.

FAQs

How is this different from a headcount dashboard?
A dashboard waits for someone to log in and look at it. This arrives in Slack already read and interpreted, so your managers see what changed without opening anything. The spreadsheet still gives you the underlying numbers if you want to dig in.
Will it overwrite my spreadsheet every week?
No. Each run adds new rows underneath the existing ones, one per department, so your history builds up week after week. Nothing already in the sheet gets replaced.
What happens in a quiet week when nobody joined or left?
It says so plainly rather than padding the brief. The point is to surface real movement, so a quiet week should read as a quiet week.
Do we need to use SuccessFactors for recruiting as well?
Only for the open roles section. Headcount, joiners and leavers come from your employee records. If you do not track requisitions in SuccessFactors, that part of the brief can simply be left out.
Can it cover just one department or region?
Yes. You can narrow it to specific departments, business units or locations, which is common when each leader wants a brief covering only their own org.

Related templates

Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
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
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
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
Turn each week's football fixtures into a venue staffing plan

Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.

API-Sports
Google Calendar
Slack
Agentic Task

Stop rebuilding the headcount report every Monday.

Let this brief pull the numbers out of SuccessFactors, keep the trend history for you, and tell your team what actually changed.