Everhour Time-Off Synchronization to Google Calendar - n8n Workflow

Automate Everhour time-off scheduling directly into Google Calendar all-day events. This robust synchronization n8n workflow ensures accurate creation, updating, and deletion of PTO entries using external keys for reliable idempotency.

Workflow Preview

Ready to automate?

Download this n8n workflow template and start using it instantly.

Who is this best for?

Human Resources (HR) teams seeking to automate time-off visibility.
Operations specialists needing reliable cross-platform scheduling.
Developers looking for advanced examples of idempotent API synchronization using an n8n node.
Organizations utilizing n8n to integrate project management and time tracking systems.

Overview

Manually syncing time-off requests from a time tracking system like Everhour into a shared calendar can be time-consuming and error-prone, especially when requests are modified or canceled. This comprehensive n8n workflow solves this by providing a scheduled, idempotent synchronization mechanism.

This specialized n8n templates solution fetches all approved Everhour time-off data and performs an intelligent 'upsert' (update or insert) operation on Google Calendar. Crucially, it assigns a unique external key to every day of time off, allowing the n8n logic to handle changes and cancellations accurately. By utilizing several powerful n8n nodes, this ensures that your Google Calendar always reflects the current, approved status of employee time off, minimizing scheduling conflicts and administrative overhead.

How it Works

This powerful n8n workflow is initiated by a scheduled n8n trigger and executes a complex sync, update, and cleanup routine:


  1. Scheduled Execution: The Schedule Trigger n8n trigger node starts the process, typically running every hour to ensure timely synchronization.

  2. Configuration: The workflow first retrieves the target calendarId set within the Config n8n node.

  3. Data Retrieval: The Everhour - Fetch Time Off HTTP Request n8n node fetches current assignments from the Everhour API using Header Authentication.

  4. Filtering and Preparation: The results are filtered by the Filter Approved Time-Off n8n node to only include approved statuses. The Prepare Time-Off Items Code n8n node then transforms multi-day requests into individual, per-day items, assigning a unique externalKey (e.g., everhour::) to each calendar day. This key is central to the entire n8n workflow's reliability.

  5. Upsert Logic (Create/Update):

The flow searches Google Calendar using the externalKey via the Find Existing Event by External Key HTTP Request n8n node.
The Check if Event Exists If n8n node routes the flow. If an event ID is found, the workflow uses the Update All-Day Event Google Calendar n8n node. If not found, it uses the Create All-Day Event Google Calendar n8n node.

  1. Cleanup Logic (Deletion): To handle canceled or modified requests, the n8n workflow executes parallel cleanup paths.

It lists existing events tied to Everhour.
Specialized Code n8n nodes (Find Obsolete Events) compare the keys currently on the calendar against the newly approved keys from Everhour.
* Any calendar events whose corresponding externalKey is no longer present in the Everhour data are sent to the Delete Calendar Event Google Calendar n8n node for removal. This ensures accuracy and makes this an effective n8n templates implementation.

Installation Guide

To deploy this synchronization n8n workflow, follow these setup steps:


  1. Import the n8n workflow: Copy the provided JSON data and paste it into your n8n instance via the 'New' menu > 'Import from JSON'.

  2. Everhour Credentials: Create a new HTTP Header Auth credential in n8n. The header key must be X-Api-Key, and the value should be your personal Everhour API key. This credential must be linked to the Everhour - Fetch Time Off HTTP Request n8n node.

  3. Google Calendar Credentials: Configure an OAuth2 or API Key credential for Google Calendar and apply it to all Google Calendar n8n node instances (Update All-Day Event, Create All-Day Event, Delete Calendar Event, and the associated HTTP Request nodes).

  4. Configure Calendar ID: Open the Config n8n node and replace REPLACEWITHYOURCALENDAR[email protected] with the actual ID of the Google Calendar where you want the time-off events to appear.

  5. Activation: Ensure the n8n workflow is active and run a manual test execution to verify credentials and data flow.

Node Details

This n8n workflow leverages several specialized n8n node types for complex data handling and integration:

Schedule Trigger (n8n trigger):
Function: Initiates the n8n workflow automatically at defined intervals.
Key Configuration: Set to run every hour (interval: hours).
Everhour - Fetch Time Off (HTTP Request n8n node):
Function: Retrieves raw assignment data from the Everhour API.
Key Configuration: Uses a Generic HTTP Header Auth credential (X-Api-Key) for authentication.
Prepare Time-Off Items (Code n8n node):
Function: Expands multi-day Everhour requests into separate items for each date and generates the unique externalKey necessary for the idempotent logic of the entire n8n workflow.
Find Existing Event by External Key (HTTP Request n8n node):
Function: Searches the target Google Calendar for an event whose description or title contains the unique externalKey.
Key Configuration: Uses the q query parameter set to {{ $json.externalKey }}.
Check if Event Exists (If n8n node):
Function: Determines the correct action (Update or Create) based on the search results from the previous Google Calendar n8n node.
Update All-Day Event / Create All-Day Event (Google Calendar n8n node):
Function: Performs the final synchronization action. Both nodes configure the event as an all-day event, populating the summary with the employee name and type, and embedding the externalKey into the description for future cleanup operations.
Find Obsolete Events (Code n8n node):
* Function: Executes the crucial cleanup logic. This n8n node compares the set of approved keys from Everhour against the keys found on the calendar, identifying events that need deletion.

Related n8n Workflows

Free

Nodes: 7 Nodes
Updated: December 26 2025
View all
Created by

Senior Web Developer & AI Enthusiast

Featured*