A comprehensive Paid Time Off (PTO) management system that automates employee leave requests, manager approvals, balance tracking, and notifications using Airtable and Zapier.
This system streamlines the entire PTO workflow from request submission to balance updates, eliminating manual processes and ensuring accurate record-keeping. Employees can submit requests, managers receive automatic notifications for approval, and balances are updated automatically upon approval.
The system uses a 7-table Airtable database with separation of concerns design principles:
- Employees - Employee identity and organizational structure
- System Configurations - Business rules and settings
- PTO Balances - Current PTO balance state management
- PTO Requests - Request submission and lifecycle
- Approvals - Approval workflow and decisions
- Balance Transactions - Audit trail of all balance changes
- Notifications - Communication tracking
Employee submits PTO Request →
Approval record created →
Manager receives notification →
Manager makes decision →
Request status updated →
Balance deducted (if approved) →
Transaction recorded →
Employee notified
- Submit PTO requests with date ranges and notes
- Track request status in real-time
- View current PTO balance and usage history
- Receive automated notifications on request decisions
- Automatic notifications for pending approvals
- Review employee PTO history and current balance
- Add comments when approving/rejecting requests
- Dashboard view of team PTO schedules
- Complete audit trail of all PTO transactions
- Balance management and yearly resets
- Configurable business rules (annual PTO days, etc.)
- Comprehensive reporting and analytics
- Airtable account with the PTO Management base
- Zapier account (free or paid)
- Node.js (version 20 or higher)
- Zapier CLI installed globally
git clone https://github.com/onisj/PTO-Management
cd pto-management
npm installAccess the pre-configured base: PTO Management Base
Set up these automations in your Airtable base:
Automation 1: New Request → Create Approval
- Trigger: When record created in PTO Requests
- Action: Create record in Approvals table
- Purpose: Automatically creates approval workflow
Automation 2: Approval Decision → Update Request Status
- Trigger: When Approval Status updated (not "Pending")
- Action: Update corresponding PTO Request status
- Purpose: Keeps request status synchronized
# Test the integration
zapier test
# Register with Zapier
zapier register "PTO Management System"
# Deploy to Zapier
zapier pushYou'll need:
- Airtable API Token: Get from Airtable Account
- Base ID: Found in your Airtable base URL (
appfTb63V9hx3lZuN)
- New PTO Request: Fires when employee submits a request
- PTO Approval Decision Made: Fires when manager approves/rejects
- Create Approval Record: Links requests to approvers
- Update PTO Balance: Deducts approved days and creates audit trail
- Create Notification Record: Manages communication queue
Trigger: New PTO Request Actions:
- Send email to manager (Gmail/Outlook)
- Send Slack notification (optional)
Trigger: PTO Approval Decision Made Filter: Status = "Approved" Actions:
- Update PTO Balance (custom action)
- Send confirmation email to employee
- Add to Google Calendar (optional)
Trigger: PTO Approval Decision Made Filter: Status = "Rejected" Actions:
- Send rejection email to employee with manager comments
Create an Airtable form for employees to submit requests:
- Go to PTO Requests table
- Create form with fields:
- Employee (lookup)
- Start Date
- End Date
- Request Type
- Employee Notes
- Share form link with employees
Managers can:
- View pending approvals in Airtable
- Use filtered views to see only their team's requests
- Add comments and change approval status directly in Airtable
- Pending Requests: All requests awaiting approval
- Team Calendar: Visual timeline of approved time off
- Balance Summary: Current PTO balances by department
- Transaction History: Complete audit trail
- Average approval response time
- PTO usage rates by department
- Request approval/rejection rates
- Balance trends and forecasting
Update the System Configurations table to modify:
- Annual PTO days allocation
- Maximum single request duration
- Advance notice requirements
- Department-specific rules
- Update "Request Type" single-select options in PTO Requests table
- Modify notification templates in Zapier workflows
- Update any filtered views as needed
npm test
zapier test- Create test employee records
- Submit test PTO request
- Verify approval record creation
- Test manager approval process
- Confirm balance updates and notifications
Automation not triggering
- Check that trigger conditions are met exactly
- Verify field names match between tables
- Ensure linked records exist
Balance calculations incorrect
- Check for multiple current balance records per employee
- Verify transaction records are created properly
- Review formula fields for calculation errors
Notifications not sending
- Confirm Zapier workflows are active
- Check authentication credentials
- Verify email addresses in employee records
Enable detailed logging in Zapier by adding console.log statements to your integration code.
- Fork the repository
- Create a feature branch
- Test your changes thoroughly
- Submit a pull request with detailed description
This project is licensed under the MIT License - see the LICENSE file for details.
- Airtable Base: PTO Management System
- Employee Request Form: Submit PTO Request
- Manager Dashboard: Pending Approvals
- Balance Overview: Current Balances
Need Help? Check the troubleshooting section above or create an issue in this repository.