Monthly CharlieHR headcount snapshot in Google Sheets
On the first of every month, log every active employee's team, location, start date, and remaining holiday allowance to a Google Sheets tab.
On the 1st of every month at 6:00am, take a snapshot of our current team from CharlieHR and append it to a Google Sheets tab so finance, ops, and leadership have a clean monthly history to chart from. This should be a code workflow with discrete deterministic nodes, no agent reasoning in the pipeline.
Trigger: cron, 1st of every month at 6:00am.
Steps:
1. Walk every team member in CharlieHR using List Team Members, paginating through all pages until exhausted.
2. Use List Teams once up front to build a lookup from team id to team name.
3. For each active team member, call Get Team Member Leave Allowance to pull the current remaining holiday allowance and the days used so far. Skip members who are not active so the snapshot reflects the current roster.
4. Build one row per active member with these columns, in this order: snapshot_date, team_member_id, full_name, team, working_location, start_date, employment_status, remaining_holiday_days, used_holiday_days. snapshot_date is the date the workflow runs, formatted YYYY-MM-DD. Resolve team by joining the member's team id against the lookup from step 2.
5. Append every row in a single batch call to Google Sheets using Append Values, targeting a tab called "headcount_snapshots" in a spreadsheet I will configure. Do not clear the sheet, do not write a header (assume it already exists), just append underneath the last row so history accumulates.
Same shape every month, same columns, same fields. Keep the implementation simple and deterministic.
What does this prompt do?
- On the first of every month, pull the current roster from CharlieHR with team, working location, start date, and employment status.
- Append one row per active employee, including remaining holiday days and days used so far this year.
- Build a clean historical record that finance, ops, and leadership can chart and pivot from.
- Runs hands-off in the background, so nobody on the people team has to remember to export anything.
What do I need to use this?
- A CharlieHR account with Super Admin access (needed to generate the API credentials).
- A Google account that can edit the destination spreadsheet.
- A spreadsheet with a tab called headcount_snapshots ready to receive new rows.
How can I customize it?
- Change the day or time, or run it weekly instead of monthly.
- Add or remove columns such as department, manager, or salary band.
- Filter to a specific team, office, or employment status before appending.
FAQs
Do I need to clear the sheet every month?
What happens to people who leave the company?
Can I point this at a different spreadsheet or tab?
Do I need to be a CharlieHR admin?
Can finance just chart straight from the sheet?
Related templates
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
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.
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.
Keep a spreadsheet of your most important senders, and every email from one gets labeled, posted to your team channel, and logged automatically.
The moment an order is fulfilled, we register it with Yotpo so the review request is timed off real delivery, and we log every sync so failures never go unnoticed.
Every night at 11pm we compare the day's Shopify orders with your Zoho Books invoices and payments, and flag only what does not match.
Stop manually exporting CharlieHR every month.
Connect CharlieHR and Google Sheets once, and your headcount and leave history keeps building itself on the first of every month.