Automated Clockify to QuickBooks Time Activity Sync (Make.com)

Streamline job costing and payroll by syncing verified Clockify time logs to QuickBooks Online using Make.com logic.

Tools: ClockifyQuickBooks

Platform: Make.com

Short Answer

A fully automated workflow that triggers upon time entry completion or approval in Clockify, converts duration into QuickBooks-friendly decimal formats, matches clients/employees via email or ID, and handles errors gracefully without duplicating records.

The Problem

Manual entry of time logs from Clockify into QuickBooks leads to billing discrepancies, delayed payroll, and significant administrative overhead. This problem is compounded when complex project structures don't map perfectly between the two systems.

The Outcome

A fully automated workflow that triggers upon time entry completion or approval in Clockify, converts duration into QuickBooks-friendly decimal formats, matches clients/employees via email or ID, and handles errors gracefully without duplicating records.

Step-by-Step Guide

1. **Create Scenario**: In your Make.com dashboard, click 'Create a new scenario'. 2. **Clockify Trigger**: Add the 'Clockify > Watch New Time Entries' module. Obtain your API Key from Clockify Profile Settings and select your Workspace. 3. **Data Transformation (Duration)**: Clockify returns time in seconds. Add a 'Set Variable' module to convert seconds to hours using the formula: `{{1.timeInterval.duration / 3600}}`. Use the `formatNumber` function to round to 2 decimal places. 4. **QuickBooks Connection**: Add the 'QuickBooks Online > Search Customers' module. Use OAuth2 to authorize Make.com. Map the Clockify 'Client Name' to the 'Display Name' filter in QuickBooks. 5. **Conditional Logic (Router)**: Add a 'Router' module. If the Search module returns a 'Bundle' (Customer exists), proceed. If not, add a 'QuickBooks > Create a Customer' module to sync the client record first. 6. **Employee Matching**: Add a 'QuickBooks Online > Search Employees' module. Filter by the Clockify user's email to ensure the activity is tagged to the correct payroll entity. 7. **Create Time Activity**: Add the 'QuickBooks Online > Create a Time Activity' module. Map the following: - `Name Type`: Employee - `Entity Reference`: ID from the Search Employees module - `Customer Reference`: ID from the Search Customers module - `Hours`: The converted decimal variable from Step 3 - `Description`: Clockify 'Description' + 'Project Name'. 8. **Error Handling**: Right-click the QuickBooks module and select 'Add error handler'. Choose the 'Rollback' or 'Break' directive to ensure partial data isn't processed if the QuickBooks API is down. 9. **Scheduling**: Set the Scenario schedule to 'Immediately' (using Webhooks) or 'Regular intervals' (e.g., every 15 minutes) depending on your Clockify plan.

Data Mapping

| Clockify Field | QuickBooks Field | Make.com Transformation/Function | | :--- | :--- | :--- | | `timeInterval.duration` | `Hours` | `formatNumber(duration / 3600; 2)` | | `user.email` | `Employee Reference` | Use 'Search Employees' module result ID | | `client.name` | `Customer Reference` | Use 'Search Customers' module result ID | | `description` | `Description` | `ifempty(description; "No description provided")` | | `project.name` | `Class/Service Ref` | Manual mapping via Router or Switch module | | `timeInterval.start` | `TxnDate` | `formatDate(start; "YYYY-MM-DD")` |

Gotchas & Failure Modes

* **Decimal Accuracy**: QuickBooks rejects time entries with more than 2 decimal places. Always wrap your math in `formatNumber(val; 2)`. * **Object ID Mismatches**: Don't map the Name string directly to ID fields; QuickBooks requires the internal ID (numerical). Always use a 'Search' module first. * **Rate Limits**: QuickBooks Online has strict API limits (500 requests per minute). If syncing bulk historical data, use a 'Sleep' module or set the scenario to process 10 bundles per execution. * **User Permissions**: Ensure the Clockify API Key owner has 'Admin' or 'Manager' access, otherwise, certain project/client names might return as null.

Verification Checklist

- [ ] Run 'Once' and manually trigger a time entry in Clockify. - [ ] Check the 'History' tab in Make.com to verify the duration math: (e.g., 3600s = 1.00h). - [ ] Confirm in QuickBooks Online that the 'Time Activity' appears under the correct Employee and Customer. - [ ] Test a 'New Client' scenario to ensure the Router correctly creates a customer before the time activity. - [ ] Verify that Clockify entries without descriptions don't cause the scenario to fail (use `ifempty` function).

Ready to Automate?

Build this automation with Make.com in minutes.