Overview
The Clockify integration provides ready-made functions you can call when building mappings. They handle conversions between Clockify's data and iPaaS.com's, such as splitting a member's single name field, building a client's address text, converting Clockify's amounts in cents, and finding the iPaaS.com employee for a Clockify member, so you don't write that logic yourself. The default mapping collections already use the ones they need.
Where you can use these functions
These functions are available anywhere you write a formula for the Clockify integration:
Dynamic Formula mappings: where a destination field's value is produced by a formula rather than mapped directly from a source field.
Mapping collection filters: where a formula decides whether a record should be processed.
Error filters: a mapping collection's error filter, which sits alongside its collection filter. When the error filter's formula resolves to true, the transfer raises an error that is held in the Error Logs for review and is not retried automatically.
Translation collections: where a translation entry uses a formula as its source value.
How to use them
Call a function by name and pass the values it needs in parentheses, for example:
FirstName(Name).Each function's signature shows its name, the parameters it accepts (with their types), and the type of value it returns. Use it as the reference for exactly how to call the function.
Function names and formula syntax are case-sensitive, so type each name exactly as shown. Whether the values a function matches are treated as case-sensitive varies by function, and is called out in the relevant parameter's description.
Some of these functions are asynchronous (their signature returns a
Task) and must be called withawait; the rest are synchronous and are called directly. Each function's How to call it example shows the correct form.Each function runs at sync time, against the data in your connected Clockify workspace and your iPaaS.com subscription.
The functions are grouped below by the area of the integration they support.
Clients and Companies
FormatAddress
What it does: Builds the single block of address text Clockify keeps on a client from the separate fields of an iPaaS.com company's billing address: the parts that aren't blank, one per line, with the city, region and postal code on one line.
Signature: string FormatAddress(string address1, string address2, string city, string region, string postalCode, string country)
How to call it: FormatAddress(address1, address2, city, region, postalCode, country)
Parameter | Type | Required | Default | Description |
address1 |
| Yes | N/A | The first street line of the iPaaS.com company's billing address. |
address2 |
| Yes | N/A | The second street line of the iPaaS.com company's billing address; pass an empty value when there is none. |
city |
| Yes | N/A | The city of the iPaaS.com company's billing address. |
region |
| Yes | N/A | The state, province or region of the iPaaS.com company's billing address. |
postalCode |
| Yes | N/A | The postal or ZIP code of the iPaaS.com company's billing address. |
country |
| Yes | N/A | The country of the iPaaS.com company's billing address. |
Returns: string. The Clockify client address text, or null when every part is blank.
Example: FormatAddress("1 Test Way", "", "Springfield", "IL", "62701", "USA") returns three lines: "1 Test Way", "Springfield, IL 62701" and "USA".
When to use it: In a Dynamic Formula on the Address field of the Customer Company FROM iPaaS.com collection, passing the parts of the company's billing address. The default collection does not map Address, so the Clockify client keeps its own address until you add this mapping.
Members and Employees
FirstName
What it does: Returns the first name from a Clockify member's single name field: everything before the last space. A one-word name is returned whole.
Signature: string FirstName(string fullName)
How to call it: FirstName(Name)
Parameter | Type | Required | Default | Description |
fullName |
| Yes | N/A | The Clockify member's name, usually the Name field. |
Returns: string. The first name for the iPaaS.com employee, or null when the name is blank.
Example: "Mary Ann Smith" returns "Mary Ann"; "Lara" returns "Lara".
When to use it: For the employee's first name in the Employee TO iPaaS.com collection. The default collection uses it, and keeps an employee's existing first name when it is already set.
LastName
What it does: Returns the last name from a Clockify member's single name field: the last word.
Signature: string LastName(string fullName)
How to call it: LastName(Name)
Parameter | Type | Required | Default | Description |
fullName |
| Yes | N/A | The Clockify member's name, usually the Name field. |
Returns: string. The last name for the iPaaS.com employee, or null when the name has one word.
Example: "Mary Ann Smith" returns "Smith"; "Lara" returns null.
When to use it: For the employee's last name in the Employee TO iPaaS.com collection. The default collection uses it, and keeps an employee's existing last name when it is already set.
CentsToAmount
What it does: Converts an amount Clockify stores in cents, such as a member's hourly or cost rate, to the amount, rounded to two decimals at most.
Signature: decimal? CentsToAmount(object cents)
How to call it: CentsToAmount(HourlyRateAmount)
Parameter | Type | Required | Default | Description |
cents |
| Yes | N/A | A Clockify amount in cents, such as the member's HourlyRateAmount or CostRateAmount. |
Returns: decimal?. The amount, or null when the value is blank or isn't a number.
Example: 2500 returns 25; 1999 returns 19.99. A text custom field shows 25, not 25.00.
When to use it: To bring a member's billable or cost rate into an Employee custom field in the Employee TO iPaaS.com collection. Billable rates need the Clockify Basic plan or higher, and cost rates the Pro plan or higher (Clockify pricing, read 2026-11-04).
Timesheets
ClockifyEmployeeId
What it does: Returns the id of the iPaaS.com employee linked to a Clockify member. When a timesheet's member hasn't reached iPaaS.com yet, the integration sends the member as an employee before the timesheet, so the employee normally exists.
Signature: Task<long?> ClockifyEmployeeId(string clockifyUserId)
How to call it: await ClockifyEmployeeId(UserId)
Parameter | Type | Required | Default | Description |
clockifyUserId |
| Yes | N/A | The Clockify user id, the timesheet's UserId field. |
Returns: long?. The iPaaS.com employee id linked to the Clockify member.
Example: For a member who has reached iPaaS.com, await ClockifyEmployeeId(UserId) returns that member's iPaaS.com employee id.
When to use it: For the timesheet's employee in the Timesheet TO iPaaS.com collection; the default collection uses it. When the timesheet names no user, or the member isn't linked to an employee (the Employee TO iPaaS.com collection is off, its filter leaves the member out, or the employee was deleted in iPaaS.com), the transfer stops with CLKF-NFND-1003. Fix the cause, send the member, then retry the timesheet.
