Summary
Clockify time can be transferred to iPaaS.com as Timesheet records (Add or Update) through webhooks, a scheduled poll or Manual Sync, using the Add/Update Clockify Timesheet TO iPaaS.com mapping collection. Each transfer also writes the timesheet's entries through its child collection, Add/Update Clockify Timesheet Entry TO iPaaS.com. The subscription's Timesheet Mode setting decides what one timesheet is:
Time entries (the default, on every Clockify plan): each completed Clockify time entry becomes one timesheet with one entry.
Approved weeks (Clockify plans with timesheet approval): each approved Clockify week becomes one timesheet with all the week's entries, and a withdrawn approval of a week already sent updates the same timesheet.
Each timesheet is linked to the iPaaS.com employee of the Clockify member whose time it is; a member who is not linked yet is sent to iPaaS.com first.
ID Format
Manual Sync ID Format
Enter the 24-character Clockify id of the record the current Timesheet Mode uses:
Time entries mode: the Clockify time entry id (example: 6aeca2c50afeb40f8398adb9).
Approved weeks mode: the id of the week's Clockify approval request (example: 6aeca37c9e3fb42e84c7a145).
The id must belong to the current mode. An id of the other mode is not found, and nothing is sent.
External ID Format
Timesheet: iPaaS.com saves the same Clockify id (the time entry id, or the approval request id) on a dedicated external-ID record for the timesheet. That link is the match for later transfers, so an edited or restored entry, or a withdrawn approval, updates the same timesheet instead of adding another one.
Timesheet Entry: each entry is linked by the timesheet's Clockify id and the time entry id, joined by a vertical bar: {timesheet id}|{time entry id}. In Time entries mode both parts are the same time entry id (example: 6aeca2c50afeb40f8398adb9|6aeca2c50afeb40f8398adb9). In Approved weeks mode the first part is the approval request id (example: 6aeca37c9e3fb42e84c7a145|{time entry id}).
Deleted Record Support
Delete is not supported. A time entry deleted in Clockify is not sent to iPaaS.com, and its timesheet stays as it was last sent; a deleted entry that is triggered sends nothing, and no error is added to the Error Logs. The default templates include no delete mappings. If you need only confirmed time in iPaaS.com, use Approved weeks mode, which adds approved weeks only.
Mapping Collection Status
Status: Enabled (both collections). The default filter sends every timesheet.
Trigger Events: the Clockify webhook scopes of the chosen Timesheet Mode, enabled in the subscription's Inbound Data Flows section, and the timesheet/poll scope run by a scheduled poll event for the scope. No automatic transfers occur until a scope is enabled or the poll event is scheduled. Manual Sync is always available.
Timesheet Mode | Scope | What it sends |
Time entries | NEW_TIME_ENTRY | A time entry added in Clockify. |
Time entries | TIMER_STOPPED | A time entry whose timer has just stopped. |
Time entries | TIME_ENTRY_UPDATED | An edited time entry; the same timesheet is updated. |
Time entries | TIME_ENTRY_RESTORED | A deleted time entry restored in Clockify. |
Approved weeks | APPROVAL_REQUEST_STATUS_UPDATED | A week approved in Clockify, or a withdrawn approval of a week already sent. |
Either | timesheet/poll | Time entries mode: each member's completed entries that started within Timesheet Poll Days. Approved weeks mode: the weeks approved within Timesheet Poll Days (approved weeks only). |
When you enable a webhook scope, the integration creates the matching webhook in Clockify for you. A webhook scope of the other mode is refused with CLKF-BIZL-1007. Whether a timesheet is added or updated depends on whether it is already linked, not on which scope sent it. The Timesheet Entry child has no scope of its own: entries always travel with their timesheet.
Duplicate or Conflicting Mappings
This mapping transfers time from Clockify to iPaaS.com. No collection sends timesheets FROM iPaaS.com to Clockify: Clockify time is not created or changed from iPaaS.com.
One Timesheet Mode per workspace
Two subscriptions on the same Clockify workspace with different Timesheet Mode values send the same hours twice. Changing the mode on a subscription that already sent timesheets has the same effect: timesheets of the old mode stay as they are, and the same hours arrive again as new timesheets in the new mode, because the two modes link timesheets to different Clockify ids. Choose the mode before the first transfer.
Changing Timesheet Mode
DESTRUCTIVE SETTING: Do not change Timesheet Mode on a subscription that has already sent timesheets. The earlier timesheets stay, and the same hours are sent again in the new form, so a receiving payroll or billing system can count them twice. Choose the mode before the first timesheet sync. If you are unsure, consult your MiSP (Managed Integration Service Provider) or implementation partner before proceeding: the recovery cost if the change is wrong is significantly higher than the consultation cost.
If you must change it: turn off the webhook scopes of the old mode, change Timesheet Mode, wait about a minute, then turn on the scopes of the new mode. After turning a scope off, check the webhook list in Clockify's workspace settings and delete any webhook the integration left. A mode change can take up to about a minute to apply. A webhook or poll that arrives in that time can still be read in the old mode; the record is then not transferred and no error is added to the Error Logs. After the minute has passed, resync anything sent in that window with Manual Sync.
Collision Handling
Collision handling is not used by these collections. Timesheets and entries are matched only by their external-ID links.
Unmapped field overwrite
Every standard Timesheet and Timesheet Entry field is mapped from Clockify, so an update replaces those fields with Clockify's current values. No standard field is left unmapped. If another system writes to these timesheets in iPaaS.com, treat Clockify as the source of truth for them.
Supported Child Collections
Parent Collection: Add/Update Clockify Timesheet TO iPaaS.com
Child Collection: Add/Update Clockify Timesheet Entry TO iPaaS.com: the timesheet's time entries, one in Time entries mode and every entry of the week in Approved weeks mode. It is a child of the Timesheet collection and runs only as part of its transfer; entries are never sent on their own.
System Caveats
Clockify Caveats
Approved weeks needs timesheet approval in Clockify: timesheet approval is part of the Clockify Standard plan and higher (Clockify pricing, read 2026-11-04). At the time this documentation was written, on a plan without approval subscribers see CLKF-AUTZ-1001 - The Clockify user who owns the API key isn't allowed to {action}. Use the API key of a workspace owner or admin. The action names the approval read (for example reading the week's approval request, or listing approved Clockify timesheets). The cause is the plan, not the API key: changing the key does not help. Use Time entries mode, or move the workspace to a plan with timesheet approval.
Billable data needs a plan with billable time: billable status and billable hours need Clockify Basic or higher (Clockify pricing, read 2026-11-04). On a plan without it, validate what Clockify Billable and Clockify Billable Hours hold in a staging environment before relying on them in production.
Running timers wait: a time entry without an end is not sent; it is sent when the timer stops (the TIMER_STOPPED scope or the next poll).
Rejected and unapproved weeks: the integration does not send a rejected week or a week that was submitted but never approved. A withdrawn or pending week is sent only when its timesheet is already in iPaaS.com, so unapproved time is never added. A rejected week logs no error, and a withdrawn approval updates the timesheet already sent, and its entries, to WITHDRAWN_APPROVAL.
The poll reads a window: in Time entries mode the poll reads entries by their start date, within Timesheet Poll Days (1 to 366, default 7); an edit to an older entry arrives only by webhook or Manual Sync. In Approved weeks mode the poll sends approved weeks only, within that window; a withdrawn approval arrives only by webhook or Manual Sync, whatever its age.
Rate limits: Clockify allows 30 requests per hour on the Free plan, 20 per second on the Basic, Standard and Pro plans, and 50 per second on Enterprise (Clockify API documentation, read 2026-11-06). When the limit is reached, the transfer stops with CLKF-EXTN-1002. The code and iPaaS.com's message that the transfer will be retried later appear in the transfer's activity log; no error is added to the Error Logs. While the limit lasts, iPaaS.com also holds this subscription's other transfers in the same direction. If the record hasn't arrived an hour or so after the limit frees up, resend it with Manual Sync. In Time entries mode, a poll that reaches the limit keeps its place and continues from there at the next run.
Webhook limits: Clockify allows 3 webhooks per workspace on the Free plan; 10 per user (the owner of the API key) and 100 per workspace on the Basic, Standard and Pro plans; and 100 per user and 300 per workspace on Enterprise (Clockify API documentation, read 2026-11-04). A scope that would pass the limit is refused with CLKF-EXTN-1009; use timesheet/poll instead.
Local work date: an entry's Date is the day the person worked in a local time zone: the time zone Clockify records for the entry; in Approved weeks mode, when the entry has none, the time zone of the person whose week it is; and when neither is available, the UTC day of the entry's start. An evening entry west of UTC therefore keeps its local day. All start and end times are in UTC. Subscribers whose people work far from UTC should validate the dates of a few late-evening entries in a staging environment before relying on them in production.
iPaaS.com Caveats
A timesheet needs its employee: the EmployeeId mapping finds the iPaaS.com employee linked to the Clockify member. Keep Add/Update Clockify Employee TO iPaaS.com enabled, with a filter that includes everyone whose time you send.
Custom fields: the default mappings write six iPaaS.com custom fields: Clockify Approval State and Clockify Billable Hours on the timesheet, and Clockify Project, Clockify Client, Clockify Task and Clockify Billable on each entry. If a custom field doesn't exist in your iPaaS.com company, create it with exactly this name before the first transfer; the Clockify Installation Instructions list them.
Setup Requirements
The integration-wide setup (API Key, Workspace Id, subscription settings, webhooks and poll events) is in the Clockify Installation Instructions and Clockify Connections and Settings articles. Before turning on the triggers for timesheets, you or your MiSP should:
Choose Timesheet Mode (Time entries or Approved weeks) and Timesheet Poll Days in the subscription settings.
Make sure the six custom fields above exist in your iPaaS.com company, creating any that don't.
Make sure Add/Update Clockify Employee TO iPaaS.com is enabled and its filter includes everyone whose time you send.
Enable the webhook scopes of your mode that your Clockify plan's webhook limit allows, and schedule a poll event for timesheet/poll if you rely on polling.
Integration Flow
Trigger. A webhook scope of the chosen mode, the scheduled timesheet/poll, or Manual Sync names a Clockify time entry id (Time entries mode) or approval request id (Approved weeks mode).
Read the time from Clockify.
Time entries: the integration reads the time entry with its project, client and task. A deleted entry, an id of the other mode, or a running timer sends nothing.
Approved weeks: the integration looks for the approval request among the workspace's most recently updated approved, withdrawn and pending requests, and reads the week with its entries. An approved week that passes the collection's filter is sent; a withdrawn or pending week only when its timesheet is already in iPaaS.com. A week that cannot be found, such as a rejected week, is not sent, and no error is added to the Error Logs.
Filter. The Timesheet collection's filter decides whether the timesheet is sent. A timesheet the filter leaves out, or any timesheet while the Timesheet collection is off, is skipped with its entries, sends no member, and logs no error.
Employee first. If the Clockify member is not linked to an iPaaS.com employee yet, the integration sends the member first through Add/Update Clockify Employee TO iPaaS.com, which links the member to an existing employee with the same email or adds a new one. A member who is already linked is not sent again. If this fails, the timesheet stops with CLKF-EXTN-1006.
Map the timesheet. Each mapping in the parent collection fills one timesheet field; EmployeeId finds the linked employee.
Map the entries. Each time entry is mapped through the Add/Update Clockify Timesheet Entry TO iPaaS.com child collection and linked as {timesheet id}|{time entry id}.
Write to iPaaS.com. The timesheet is added when it is not linked yet, or updated when it is, together with its entries.
Mappings
Add/Update Clockify Timesheet TO iPaaS.com
iPaaS.com data type: Timesheet
Mapping Filter
// Every Clockify timesheet is sent: one time entry, or one approved week, as the Timesheet Mode setting says.
// To leave time out, return false for it, for example: return !UserName.StartsWith("Test");
return true;Filter Description: The filter returns true for every timesheet, so all Clockify time of the chosen Timesheet Mode is sent. Its comment shows how to leave time out by returning false for it; the example leaves out the time of people whose Clockify name starts with Test. The person's name and user id are filled in both modes. The entry's details (description, project, client, task, entry type, billable flag) are filled only in Time entries mode, and the approval state only in Approved weeks mode, so a filter that tests a field the current mode leaves empty must allow for an empty value; otherwise the filter fails for that timesheet. A timesheet the filter leaves out is skipped together with its entries, sends no member, and logs no error.
Description: Transfers Clockify time to iPaaS.com timesheets: one time entry, or one approved week with its entries, as the Timesheet Mode setting says.
Field Mapping Table
Mapping Type | Source Field (Clockify) | Destination Field (iPaaS.com) | Description |
Field | ApprovalState | Clockify Approval State (custom field) | Recommended in Approved weeks mode. The week's approval state: APPROVED, WITHDRAWN_APPROVAL after a withdrawal, or PENDING when a week already sent is pending again. Always empty in Time entries mode. |
Field | BillableHours | Clockify Billable Hours (custom field) | Optional. The billable part of the hours, as a decimal. In Time entries mode, the entry's hours when it is billable, otherwise 0; in Approved weeks mode, the billable time Clockify reports for the week, or the sum of its billable entries. Needs Clockify Basic or higher. |
Dynamic Formula |
| EmployeeId | Required. The iPaaS.com employee linked to the Clockify member whose time this is. Stops with CLKF-NFND-1003 when the member has no linked employee. Keep the word await in the formula. |
Field | End | EndDateTime | Recommended. When the time ends (UTC): the entry's end, or the end of the approved week as Clockify reports it. |
Field | Notes | Notes | Optional. The entry's description in Time entries mode. In Approved weeks mode, the approval and who made it, for example "APPROVED by Jane Smith: Week checked"; the note part is left out when the approver wrote none. |
Field | Start | StartDateTime | Recommended. When the time starts (UTC): the entry's start, or the start of the approved week as Clockify reports it. |
Field | TotalHours | TotalHours | Recommended. Total hours as a decimal (1.5 = 1 hour 30 minutes): the entry's duration, or the tracked time Clockify reports for the week (the sum of its entries when Clockify reports none). |
The ClockifyEmployeeId function is described in the Clockify Mapping Functions article. It returns the iPaaS.com employee id linked to the Clockify user id it is given.
Add/Update Clockify Timesheet Entry TO iPaaS.com (Child)
iPaaS.com data type: Timesheet Entry
Description: Writes each Clockify time entry of a transferred timesheet as an iPaaS.com Timesheet Entry, as a child of the Timesheet collection. This collection has no mapping filter; to leave time out, use the parent collection's filter.
Field Mapping Table
Mapping Type | Source Field (Clockify) | Destination Field (iPaaS.com) | Description |
Field | Billable | Clockify Billable (custom field) | Recommended. True when the entry is billable in Clockify, false when it is not, empty when Clockify gives no value. Needs Clockify Basic or higher. |
Field | ClientName | Clockify Client (custom field) | Recommended. The client of the entry's project (the company the time is for). Empty when there is no project or client. |
Field | ProjectName | Clockify Project (custom field) | Recommended. The Clockify project the time was tracked on, for job costing. Empty when the entry has no project. |
Field | TaskName | Clockify Task (custom field) | Optional. The task within the project, when the entry has one. |
Field | Date | Date | Recommended. The day the person worked, in a local time zone (see Local work date above). |
Field | EndTime | EndTime | Recommended. When the entry ends (UTC). |
Field | EntryType | EntryType | Required. The integration sends Clockify's entry type (REGULAR, BREAK, HOLIDAY or TIME_OFF), and REGULAR when Clockify gives no type. iPaaS.com requires an entry type on every entry. |
Field | Description | Notes | Optional. The entry's description as the person typed it in Clockify. |
Field | StartTime | StartTime | Recommended. When the entry starts (UTC). |
Field | Status | Status | Recommended. COMPLETED in Time entries mode. In Approved weeks mode, the week's approval state, the same on every entry of the week: APPROVED, WITHDRAWN_APPROVAL or PENDING. |
Error Handling
Errors from these mapping collections appear in iPaaS.com Dashboard / Integration Monitoring / Error Logs, except CLKF-EXTN-1002, which appears in the transfer's activity log. A deleted time entry, or a week the integration cannot find, sends nothing and adds no error. The errors these collections can show most often:
CLKF-NFND-1003 - Clockify user {user id} isn't linked to an iPaaS.com employee, so the timesheet has no employee: the Employee TO iPaaS.com mapping collection is off, its filter leaves this member out, or the employee was deleted in iPaaS.com. Fix that, send the member, then retry the timesheet. Turn on the Employee TO iPaaS.com collection, widen its filter or restore the employee, send the member, then retry the timesheet from the error list. When the Clockify record names no user at all, the same code reads The Clockify timesheet names no user, so it has no employee. Check the time entry or approval in Clockify, then retry the timesheet.
CLKF-EXTN-1006 - Couldn't send Clockify employee {user id} to iPaaS.com first: {reason} Check that the Employee TO iPaaS.com collection is on and its filter includes this member, then retry the timesheet. The member could not be sent first; fix the reason given in the Employee TO iPaaS.com collection, then retry the timesheet.
CLKF-BIZL-1007 - The {scope} trigger doesn't apply in Timesheet Mode "{mode}". Use {scopes} instead, or change Timesheet Mode. A webhook scope of the other mode was turned on. Turn on the scopes that match the Timesheet Mode setting.
CLKF-AUTZ-1001 - The Clockify user who owns the API key isn't allowed to {action}. Use the API key of a workspace owner or admin. At the time this documentation was written, this is what subscribers see in Approved weeks mode on a Clockify plan without timesheet approval; there the plan is the cause (see Clockify Caveats). Otherwise, use the API key of a workspace owner or admin.
CLKF-EXTN-1002 - Clockify's request limit was reached while trying to {action}; iPaaS.com retries automatically. The code and iPaaS.com's message that the transfer will be retried later appear in the transfer's activity log; no error is added to the Error Logs. While the limit lasts, iPaaS.com also holds this subscription's other transfers in the same direction. If the record hasn't arrived an hour or so after the limit frees up, resend it with Manual Sync. Frequent occurrences on the Free plan mean too much polling for 30 requests per hour.
CLKF-EXTN-1009 - Clockify refused the {scope} webhook: Clockify's webhook limit is reached (3 per workspace on the free plan; 10 per user, the owner of the API key, on paid plans). Turn off another Clockify webhook scope, or use this data type's poll scope instead. Turn off a webhook scope you need less, or schedule timesheet/poll. The plan limits are listed under Clockify Caveats.
For every code with its cause and fix, see the Clockify Error Messages article.
Testing & Validation
Test Scenarios
Time entries mode. Track a completed time entry in Clockify for a member who is already linked. Verify one timesheet for that member's employee with start, end, total hours and notes, and one entry with the work date, type, start, end, status COMPLETED and description.
Track an entry for a member who is not linked yet. Verify the employee is added (or linked by email) first, then the timesheet.
Edit the entry's times or description in Clockify. Verify the same timesheet and entry are updated, with still one entry.
Track a billable entry on a project with a client and a task. Verify Clockify Project, Clockify Client, Clockify Task and Clockify Billable on the entry, and Clockify Billable Hours on the timesheet.
Track a late-evening entry for a person in a time zone west of UTC. Verify the entry's Date is the person's day, not the next UTC day.
Approved weeks mode. On a test subscription that has not sent timesheets yet, set Timesheet Mode to Approved weeks and wait about a minute, then submit and approve a week in Clockify. Verify one timesheet for the week with every entry, entry status APPROVED, notes starting "APPROVED by" and Clockify Approval State APPROVED.
Withdraw that approval. Verify the same timesheet and its entries show WITHDRAWN_APPROVAL.
Reject a submitted week. Verify no timesheet is added for it.
Manually sync a timesheet with the id of the current mode (a time entry id, or an approval request id) and verify it transfers with its entries.
Turn off the Employee TO iPaaS.com collection (or filter a member out) and send that member's time. Verify the timesheet stops with CLKF-NFND-1003 or CLKF-EXTN-1006.
Validation Checklist
Timesheet Mode is the one you want, chosen before the first transfer, and only that mode's webhook scopes are on.
In Approved weeks mode, the Clockify workspace is on a plan with timesheet approval; for billable data, on Basic or higher.
The six timesheet and entry custom fields exist in your iPaaS.com company.
Add/Update Clockify Employee TO iPaaS.com is enabled and its filter includes everyone whose time you send.
A poll event for timesheet/poll is scheduled if you rely on polling.
Additional Notes
Operational Notes
First load: there is no separate initialization; the first timesheet poll goes back Timesheet Poll Days, up to 366 days.
Payroll and job costing: Approved weeks mode adds only approved time and shows withdrawn approvals, which suits payroll; Time entries mode sends every completed entry as it is tracked, which suits job costing.
Further Clockify fields you can map
You can add mappings from more Clockify fields to Timesheet or Timesheet Entry custom fields that exist in your iPaaS.com company:
Clockify field | On | What it holds |
Source | Timesheet | TIME_ENTRY or APPROVAL_REQUEST: which Clockify record the timesheet is. |
UserName | Timesheet | The person's name in Clockify. |
Description, Billable, EntryType, ProjectId, ProjectName, ClientId, ClientName, TaskId, TaskName, Tags, HourlyRateAmount, CostRateAmount, Currency | Timesheet | The entry's details, in Time entries mode only. |
IsLocked | Timesheet | True when Clockify has locked the time (approved, or past the lock date). |
ApprovalRequestId | Timesheet | The approval request the time belongs to: the week's approval request in Approved weeks mode, and in Time entries mode the entry's, when it is part of one. |
ApprovalNote, ApprovalUpdatedBy | Timesheet | The approver's note, and who approved or withdrew the week and when (Approved weeks mode). |
TimeEntryId, Hours | Timesheet Entry | The Clockify time entry id, and the entry's duration in decimal hours. |
ProjectId, ClientId, TaskId, Tags | Timesheet Entry | The Clockify project, client and task ids, and the entry's tags (comma-separated). ClientId matches the external id of an iPaaS.com company when that client was sent through the Customer Company TO iPaaS.com collection. |
HourlyRateAmount, CostRateAmount | Timesheet Entry | The billable and cost rates applied, in cents. Use the CentsToAmount mapping function to convert them (2500 gives 25). |
Billable rates need Clockify Basic or higher, and cost rates and multiple currencies Clockify Pro or higher (Clockify pricing, read 2026-11-04). On other plans, validate what these fields hold in a staging environment before relying on them in production.
Related Documents
Related Mapping Documentation
External References
Clockify plans and pricing (timesheet approval Standard and higher, billable time Basic and higher, cost rates and multiple currencies Pro and higher)
Clockify API documentation (rate limiting, and webhooks per workspace and per user)
All external references were read in November 2026.
