Templates
17.4.2026
Miikka Kataja
How to manage HR in Google Sheets: free templates for employee data, time off, and onboarding
A practical guide to setting up HR in Google Sheets for teams under 50. Three free templates: employee database, leave tracker, and onboarding checklist.

Managing HR in Google Sheets is how most small companies get started. And for good reason. When your team is under 30 people, a well-built spreadsheet covers the basics: who works here, who is off when, and what needs to happen when someone joins. You don't need a dedicated HRIS to do this well.
This guide walks through how to set up a working HR system in Google Sheets, with three free templates you can copy and start using today: an employee database, a leave tracker, and an onboarding checklist.
TL;DR
- Google Sheets works well for HR in teams under 30–40 people, if you set it up deliberately
- Three templates cover the core: employee records, leave tracking, and onboarding
- The biggest risks are access control (wrong people seeing sensitive data), leave calculation errors, and data scattered across multiple sheets
- Most teams find the spreadsheet approach starts to creak somewhere between 30 and 50 employees
- When it does, a dedicated HRIS adds access controls, automated calculations, and a single source of truth
What should a basic HR setup in Google Sheets include?
A minimal HR setup for a 10–40 person company needs to cover three areas:
- Employee records: who works here, in what role, under what contract, and how to reach them in an emergency
- Leave and time off: who is off when, how much leave each person has taken, and what they have remaining
- Onboarding: the sequence of tasks that need to happen before and after someone joins
Everything else (performance reviews, salary history, 1:1 notes) can live elsewhere at this stage. A focused setup that people actually use is better than a comprehensive one nobody trusts.
A few things to decide before you build:
- Who has access to what? Employee records contain sensitive personal data (emergency contacts, personal IDs, sometimes bank details). Not everyone who needs the onboarding checklist should be able to see salary data. Consider separate sheets with separate sharing settings from day one.
- Where does the master copy live? Google Drive shared folders work, but make sure someone owns access management. People leave, and "shared with everyone" settings drift.
- How will you keep it current? A spreadsheet is only useful if it's updated. Decide who updates it and when (e.g., HR updates the employee database within the first week of any hire, leave, or departure).
Template 1: Employee database
Copy the employee database template →
The employee database is the foundation of your HR setup. It's the single source of truth for who works at your company, and it's what every other sheet should reference.
What to include
| Column | Why it matters |
|---|---|
| Employee ID | Stable reference that doesn't change when someone changes their name or role |
| Full name + work email | Basic contact |
| Job title + department | Role clarity, also used for org chart and reporting |
| Manager | Reporting line — used in performance reviews and onboarding |
| Start date | Required for leave entitlement calculations, probation tracking |
| Employment type | Full-time / part-time / contractor — affects leave entitlement and payroll |
| Status | Active / on leave / terminated — lets you keep records without deleting them |
| Country + city | Required if you have employees in multiple countries with different entitlements |
| Personal email | For offboarding — work email access gets removed |
| Emergency contact | Name and phone — frequently overlooked until it's urgently needed |
What to leave out
Don't store salary data, bank account numbers, or personal ID numbers (passport, national ID, tax ID) in the same sheet as general employee records. These need stricter access controls: a separate sheet shared only with the People Lead and Finance, or not in Google Sheets at all.
Access control note
Anyone with edit access to a Google Sheet can see all of it. If your Head of Engineering has Google Drive super-admin rights for technical reasons, they can technically access your employee database. Consider who you share the link with, and review access quarterly.
Template 2: Leave and time off tracker
Copy the leave tracker template →
The leave tracker has two parts:
Sheet 1: Leave requests. One row per request. Columns: employee name, leave type (annual / sick / parental / unpaid), start date, end date, working days, approval status, approved by, date requested, notes.
Sheet 2: Annual leave balances. One row per employee. Columns: entitlement (days), days taken year-to-date, days remaining, days carried over from the previous year, leave year start date.
How to calculate working days
Use =NETWORKDAYS(start_date, end_date) in Google Sheets to count working days between two dates, excluding weekends. If you have public holidays, create a separate range with holiday dates and add it as a third argument: =NETWORKDAYS(start_date, end_date, holidays_range).
Update the balance sheet manually each time a request is approved. Or set up a SUMIF formula that totals approved days per employee from the requests sheet automatically.
Leave entitlements vary by country
If your team spans multiple countries, leave entitlements differ significantly:
- Finland: 2.5 days per month worked (30 days/year for a full year). Annual leave accrues based on months worked in the previous holiday credit year (April–March). Employees working less than 35 hours/week accrue at a different rate.
- Sweden: 25 days statutory minimum. Vacation pay (semesterlön) is calculated as a percentage of salary. This needs to flow into payroll, which is where spreadsheets start to struggle.
- Germany: 20 days statutory minimum (based on 5-day week). Many companies offer 25–30. Unused leave can be carried over until 31 March of the following year.
- Netherlands: Minimum 20 days (4x weekly working days). Expires 6 months after the end of the year in which it was accrued, which creates an active management task.
- UK: 28 days including bank holidays (for full-time employees).
Tracking these correctly in a spreadsheet is manageable for a single-country team. For multi-country teams, the combinations of entitlement rules, accrual methods, carryover limits, and expiry dates become error-prone quickly.
Template 3: Onboarding checklist
Copy the onboarding checklist template →
The onboarding checklist covers everything that needs to happen in the four weeks around a new hire's start date. It's structured by category (IT setup, HR setup, manager prep, first week) and by timing (Day -10 through Month 3).
How to use it
Make a copy of the template for each new hire and fill in their name, start date, manager, and department at the top. Use the "Status" column (Not started / In progress / Done) to track progress.
Assign owners clearly: IT, HR, the hiring manager, and the new employee themselves all have tasks in this checklist. If nobody owns a task, it gets missed.
Notion works well for this too
If your team uses Notion, the onboarding checklist maps directly to a Notion database: each task becomes a row, with properties for category, owner, timing, and status. You can filter by owner to give each person their own view, and link each checklist to the employee's Notion profile page.
The Google Sheets version is simpler to share and easier to print. The Notion version is better if you want to assign tasks and track completion across multiple people in a single workspace.
What are the limits of managing HR in Google Sheets?
The templates above will take a 10–30 person team a long way. But there are five places where the spreadsheet approach creates real risk.
1. Access control is all-or-nothing
Google Sheets sharing works at the sheet level, not the row or column level. If someone can see the leave tracker, they can see everyone's leave. If they can edit the employee database, they can edit any field. As your team grows and HR data becomes more sensitive, this becomes a genuine data governance problem.
2. Leave calculations accumulate errors
Manually updating leave balances when each request is approved works when you have 15 people. At 35+ people, with a mix of contract types and multiple countries, a single missed update or formula error cascades. Most HR teams discover the error during a dispute. That's the worst possible time.
3. No audit trail
Google Sheets has version history, but it doesn't log who changed what field or when. If an employee questions their leave balance or a contract term, you can't easily show what the record said at a specific point in time. This matters for employment disputes.
4. Data lives in too many places
Employee records in Sheet 1. Leave in Sheet 2. Onboarding in Sheet 3. Performance notes in a separate folder. Salary data somewhere else entirely. Nobody has the full picture, and nothing stays in sync automatically.
5. Performance data has no home
The spreadsheet setup described here deliberately excludes performance management, not because it doesn't matter but because it genuinely doesn't belong in a spreadsheet. Goals, 1:1 notes, review cycles, and feedback need a dedicated system. For most small companies, this is where the gap shows up first.
When should a small company move to a dedicated HR tool?
The honest answer: somewhere between 30 and 50 employees, depending on how complex your setup is.
Specific signals that it's time:
- You have employees in more than one country with different leave rules
- Someone other than the HR Lead needs to see employee data, but not all of it
- You've had a leave balance dispute or a payroll error traced back to a spreadsheet mistake
- You're spending more than a few hours per month on spreadsheet maintenance rather than people work
- You're approaching a compliance threshold (GDPR data handling, working time recording requirements, pay transparency)
A dedicated HRIS handles access controls automatically, calculates leave correctly across contract types and countries, maintains an audit trail, and integrates with Slack so employees can check their own balance or submit a request without involving HR for every transaction.
The spreadsheet gets you started. The question is when the admin cost of maintaining it exceeds the cost of moving to something purpose-built.
If your team is on Slack and you're finding the spreadsheet setup is starting to creak, we can show you what it looks like to have all of this in one place.
What to read next
- Best HRIS for startups in 2026: top 5 tools for 10–75 person teams
- Should you build or buy HR tools for your startup?
- How to run a lightweight performance review for a startup (+ free template)
FAQ
Can I manage HR entirely in Google Sheets for a company of 20–30 people?
Yes, for the basics. Employee records, leave tracking, and onboarding checklists all work well in Google Sheets at this size. The main things to watch are access control (who can see sensitive fields) and leave calculation accuracy. The templates in this guide are designed specifically for this stage.
What's the difference between managing HR in Google Sheets vs. Notion?
Google Sheets is better for data that involves calculations (leave balances, accruals, headcount tracking). Notion is better for process-oriented records like onboarding checklists, where you want to assign tasks, link to documents, and track status across multiple people. Many small teams use both: Sheets for the numbers, Notion for the processes.
How do I calculate annual leave in Google Sheets?
Use =NETWORKDAYS(start_date, end_date) to count working days, excluding weekends. Add a named range of public holiday dates as a third argument to exclude those too. Track entitlement and taken days in a separate balances sheet, and use SUMIF to total approved requests per employee automatically.
At what company size should I replace Google Sheets with an HRIS?
Most teams find the switch makes sense at 30–50 employees. The trigger is usually one of: employees in multiple countries with different leave rules, a compliance requirement (GDPR, working time recording), or the HR lead spending too much time managing spreadsheets rather than doing people work.
What should I not store in Google Sheets for HR?
Avoid storing salary data, bank account numbers, national ID numbers (passport, tax ID, social security), and medical information in general-access spreadsheets. These require stricter access controls than Google Sheets can easily provide. Consider a separate restricted sheet or a dedicated HR system for these fields.
Does this setup work for contractors and part-time employees?
Yes, with some adjustments. Add an "employment type" column (full-time / part-time / contractor) to the employee database. Leave entitlement for part-time employees is usually pro-rated. Adjust the entitlement field in the balances sheet accordingly. Contractors typically don't accrue annual leave, so exclude them from leave balance tracking or mark entitlement as 0.