Quick overview
This workflow collects PTO requests through an n8n form, validates them against a Google Sheets tracker, and routes approvals to managers in Slack. Approved requests update balances in Google Sheets, create all-day events in Google Calendar, and notify employees and the team via Gmail and Slack.
How it works
- Receives a PTO request from an n8n form submission or runs every weekday at 2 PM to process upcoming reminders.
- Loads PTO settings and reads the Employees and Requests tabs from Google Sheets to find the employee, manager, and existing requests.
- For new requests, calculates business days (excluding weekends and configured company holidays), checks the appropriate PTO/sick balance, and logs the request to the Requests sheet.
- Sends the manager a Slack message with Approve/Decline buttons and waits up to the configured number of days for a response, alerting HR in Slack if the request cannot be routed or if the manager does not respond.
- Records the manager’s decision back to Google Sheets and, when approved, updates the employee’s PTO/sick balance, creates an all-day “Out of office” event in a Google Calendar, emails the employee a confirmation checklist via Gmail, and posts an availability message to the team Slack channel.
- When declined, emails the employee via Gmail without changing balances, and when time off starts on the next workday, emails a day-before reminder with auto-reply text and posts the handoff notes to the team Slack channel, then marks the reminder as sent in Google Sheets.
Setup
- Create or copy a Google Sheets PTO tracker with Employees and Requests tabs, then set the correct spreadsheet in every Google Sheets node.
- Add Slack, Google Sheets, Google Calendar, and Gmail credentials in n8n.
- Populate the Employees sheet with each employee’s work email and their manager’s Slack member ID (plus balance columns like ptoBalanceDays and sickBalanceDays).
- Update the settings values (HR email/name, Slack channel names, PTO Google Calendar ID, company holidays, and approval wait days) in the workflow’s settings step.
- Activate the workflow and share the form’s production URL with employees so they can submit time-off requests.