> For the complete documentation index, see [llms.txt](https://docs.coupler.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.coupler.io/sources/category/time-tracking/clockodo.md).

# Clockodo

Pull time entries, projects, and customer data from Clockodo into Google Sheets or BigQuery via Coupler.io for billing and team performance reports.

Clockodo is a time tracking and workforce management platform that helps teams log working hours, manage absences, track overtime, and bill clients accurately. It's widely used by agencies, consultancies, and service businesses to stay on top of project time and employee schedules.

Connecting Clockodo to Coupler.io lets you pull your time tracking data into the tools you already use — so you can build reports, monitor team performance, and analyze billing data without manual exports.

**Why connect Clockodo to Coupler.io?**

* Automatically sync time entries, absences, and work times to Google Sheets, Excel, BigQuery, or Looker Studio
* Combine Clockodo data with other sources using Join or Append transformations — for example, join entries with customers to see revenue by client
* Send time tracking summaries to AI destinations like ChatGPT, Claude, or Gemini for instant analysis
* Keep your data fresh on a schedule without touching Clockodo manually

## Prerequisites

Before connecting, make sure you have:

* An active Clockodo account
* Your Clockodo **API credentials** — specifically your registered email address and an API key (generated in your Clockodo account settings under **My account > API**)
* Admin or sufficient permissions to access the data you want to export

## Quick start

{% hint style="success" %}
Start with the **Entries** entity — it's the core of Clockodo and contains all time logs linked to projects, services, and users. From there, add Customers or Projects as a second source and use a Join transformation to build a complete billing or utilization report.
{% endhint %}

## How to connect

{% stepper %}
{% step %}
**Create a new data flow in Coupler.io.** Log in to your Coupler.io account and click **Add data flow**. Search for Clockodo and select it as your source.
{% endstep %}

{% step %}
**Enter your Clockodo API credentials.** You'll need to provide your Clockodo account email and your API key. To find your API key, log in to Clockodo and go to **My account > API**. Copy the key and paste it into Coupler.io, along with your email address.
{% endstep %}

{% step %}
**Select the entity you want to import.** Choose from the available entities such as Entries, Projects, Users, Absences, and more. If you need data from multiple entities, you can add additional sources to the same data flow.
{% endstep %}

{% step %}
**Set a date range if needed.** For time-based entities like Entries and Work times, use the date picker or specify years to control how much historical data is pulled.
{% endstep %}

{% step %}
**Choose your destination.** Select where you want your Clockodo data to land — Google Sheets, Excel, BigQuery, Looker Studio, or an AI destination like ChatGPT or Claude.
{% endstep %}

{% step %}
**Run the data flow.** Click **Run** to execute a manual sync. Once it completes successfully, your data will appear in the destination you chose.
{% endstep %}
{% endstepper %}

## Clockodo data overview

Clockodo exposes a broad set of time tracking and workforce data through Coupler.io. You can pull everything from raw time entries and project structures to employee absence records and overtime balances.

## Available entities

| Entity             | What it contains                                                    |
| ------------------ | ------------------------------------------------------------------- |
| Entries            | Time logs with duration, user, project, service, and billing status |
| Projects           | Project name, number, status, and linked customer                   |
| Customers          | Customer name, contact details, and account status                  |
| Users              | User name, email, role, and team membership                         |
| Teams              | Team name and associated users                                      |
| Services           | Service name, type, and billing rate                                |
| Absences           | Absence type, date range, status, and employee                      |
| Work times         | Daily/weekly totals including regular hours, overtime, and breaks   |
| Target hours       | Contracted working hours per employee and period                    |
| Overtime carries   | Running overtime balance carried forward per employee               |
| Holidays quota     | Annual leave entitlement per employee and year                      |
| Holidays carries   | Unused leave days carried into the following year                   |
| Non business days  | Public holidays and non-working days by country/region              |
| Lumpsum services   | Fixed-fee billing items with amounts and descriptions               |
| Surcharges         | Surcharge rules applied to entries or services                      |
| User reports       | Aggregated summaries of time, absences, and overtime per user       |
| Customers projects | Customer-to-project mapping for relational joins                    |

## Metrics and dimensions

#### Time entries (Entries)

| Field         | Type     | Description                                  |
| ------------- | -------- | -------------------------------------------- |
| duration      | Number   | Total time logged for the entry (in seconds) |
| time\_since   | Datetime | Start time of the entry                      |
| time\_until   | Datetime | End time of the entry                        |
| revenue       | Number   | Calculated revenue for the entry             |
| is\_billable  | Boolean  | Whether the entry is billable                |
| is\_billed    | Boolean  | Whether the entry has been invoiced          |
| users\_id     | ID       | ID of the user who logged the time           |
| projects\_id  | ID       | ID of the associated project                 |
| services\_id  | ID       | ID of the associated service                 |
| customers\_id | ID       | ID of the associated customer                |
| note          | Text     | Free-text note attached to the entry         |

#### Work times

| Field              | Type   | Description                      |
| ------------------ | ------ | -------------------------------- |
| date               | Date   | The date of the work time record |
| duration           | Number | Total hours worked               |
| duration\_overtime | Number | Overtime hours logged            |
| duration\_break    | Number | Total break time                 |
| users\_id          | ID     | ID of the employee               |

#### Absences

| Field       | Type   | Description                               |
| ----------- | ------ | ----------------------------------------- |
| type        | Text   | Absence type (vacation, sick leave, etc.) |
| date\_since | Date   | Start date of the absence                 |
| date\_until | Date   | End date of the absence                   |
| status      | Text   | Approval status of the absence            |
| users\_id   | ID     | ID of the employee                        |
| count\_days | Number | Total number of absence days              |

#### Target hours & overtime

| Field              | Type   | Description                                   |
| ------------------ | ------ | --------------------------------------------- |
| users\_id          | ID     | ID of the employee                            |
| year               | Number | Year the record applies to                    |
| count\_hours       | Number | Target or carry hours for the period          |
| compensation\_date | Date   | Date overtime was compensated (if applicable) |

#### Customers & projects

| Field             | Type    | Description                            |
| ----------------- | ------- | -------------------------------------- |
| name              | Text    | Name of the customer or project        |
| number            | Text    | Internal reference number              |
| status            | Text    | Active or archived status              |
| customers\_id     | ID      | Parent customer for a project          |
| budget\_is\_hours | Boolean | Whether the budget is tracked in hours |
| budget            | Number  | Total budget allocated                 |

## Common metric combinations

* **Entries + Users**: See who logged how many hours and identify top contributors or capacity gaps
* **Entries + Customers**: Calculate total billable hours and revenue per client
* **Entries + Projects + Services**: Break down time by project phase or service type for billing accuracy
* **Work times + Target hours**: Compare actual hours worked against contracted hours per employee
* **Absences + Holidays quota**: Track leave usage against entitlement to spot employees nearing their limit

## Use cases by role

{% tabs %}
{% tab title="Finance & Billing" %}

* Pull Entries filtered by billable status and join with Customers to generate invoice-ready summaries in Google Sheets or Excel
* Use Lumpsum services alongside hourly entries to get a full picture of project revenue
* Aggregate monthly billable hours by customer and push to BigQuery for revenue trend analysis
  {% endtab %}

{% tab title="HR & People Ops" %}

* Monitor absence patterns by employee using the Absences entity — filter by type to separate sick leave from planned vacation
* Compare Holidays quota vs. Holidays carries to identify employees carrying over too much unused leave
* Track overtime balances with Overtime carries and set up alerts in Google Sheets when thresholds are exceeded
  {% endtab %}

{% tab title="Project Managers" %}

* Join Entries with Projects and Services to see time spent per project phase against budget
* Use User reports for a quick per-person summary of logged hours and send them to ChatGPT or Claude for narrative summaries
* Append data from multiple team members using the Append transformation to create a consolidated project timesheet
  {% endtab %}
  {% endtabs %}

## Platform-specific notes

* Duration fields in Entries and Work times are returned in **seconds** — divide by 3600 in your destination to convert to hours
* The **Entries** entity can return large volumes of data for long date ranges; use the Years or Start date parameters to limit the pull
* The **Customers projects** entity is primarily useful as a lookup table for joining project IDs back to customer names
* **User reports** are pre-aggregated by Clockodo — useful for quick summaries but less flexible than building your own aggregations from raw Entries
* Non business days are country/region-specific and should be joined with Work times data when calculating net working days

## Clockodo common issues

### Connection issues

<details>

<summary>Authentication fails when entering API credentials</summary>

Clockodo requires both your **account email address** and your **API key** — not just the key on its own. Double-check that you're entering the email associated with your Clockodo account, not a team member's email. To regenerate or find your API key, go to **My account > API** in Clockodo.

{% hint style="warning" %}
If your API key contains special characters, make sure it is copied in full without any trailing spaces.
{% endhint %}

</details>

<details>

<summary>Connection succeeds but no data appears</summary>

This usually means the date range parameters returned no matching records. If you've set a Start date or specified Years, check that there is actual data in Clockodo for that period. Try broadening the range or leaving the date parameters blank to test the connection with all available data.

</details>

### Missing data

<details>

<summary>Entries are missing for certain users or projects</summary>

The API key you use is tied to a specific Clockodo user account. If that account doesn't have visibility into certain users or projects (due to team restrictions or admin settings), those records won't appear in the export. Check the user's permissions in Clockodo under **Settings > Users**. An admin-level API key will return the most complete dataset.

</details>

<details>

<summary>Absences or overtime data is incomplete</summary>

Absences and overtime data in Clockodo may only be visible to admins or managers. If your API key belongs to a standard user, HR-related entities like Absences, Holidays quota, and Overtime carries may return partial or empty results.

</details>

<details>

<summary>Historical entries are cut off at a certain date</summary>

Coupler.io uses the **Start date** and **Years** parameters to scope the Entries pull. If you've set a Start date, only entries from that date forward will be included. Use the date picker to extend the range, or clear the parameter to pull all available history.

</details>

### Permission errors

<details>

<summary>403 or "Forbidden" error when accessing certain entities</summary>

Some Clockodo entities — particularly those related to HR (absences, holiday quotas, overtime) — require admin-level access. If you receive a 403 error, the account linked to your API key likely doesn't have the necessary permissions. Switch to an API key from an admin account or ask your Clockodo administrator to grant the required access level.

</details>

### Data discrepancies

<details>

<summary>Hours in Coupler.io don't match what I see in Clockodo reports</summary>

Clockodo returns duration values in **seconds**. If your destination (e.g., Google Sheets) is displaying raw values, divide the duration column by 3600 to convert to hours. Also verify that you're comparing the same date range — Clockodo's built-in reports may apply filters or rounding that differ from the raw API data.

</details>

<details>

<summary>Revenue figures look incorrect</summary>

The revenue field in Entries reflects Clockodo's calculated billing amount based on your configured rates. If rates have changed over time or entries are marked as non-billable, the totals may not match manual calculations. Cross-check against the billable and billed flags in the Entries entity to isolate discrepancies.

</details>

### Rate limits

<details>

<summary>Data flow fails with a rate limit or timeout error</summary>

Clockodo's API has request rate limits that can be hit when pulling large volumes of Entries data. Narrow the date range using the Start date or Years parameters to reduce the number of records per sync. If you need full historical data, consider splitting it across multiple data flows — one per year — and using the Append transformation to combine them.

</details>

## Clockodo FAQ

<details>

<summary>Where do I find my Clockodo API key?</summary>

Log in to your Clockodo account and navigate to **My account > API**. Your API key is displayed there. You'll also need your Clockodo account email address — both are required when connecting to Coupler.io.

</details>

<details>

<summary>Can I pull data from multiple Clockodo accounts into one destination?</summary>

Yes. Add each Clockodo account as a separate source in the same data flow using a different API key for each. Then use the **Append** transformation to combine the data into a single output. This is useful for agencies managing separate Clockodo workspaces per client.

</details>

<details>

<summary>Why are my time entry durations showing large numbers instead of hours?</summary>

Clockodo returns duration in **seconds**. Divide the value by 3600 in your destination to convert to hours. In Google Sheets, you can add a calculated column with a simple formula like `=A2/3600`.

</details>

<details>

<summary>Can I get a report that shows billable hours by customer?</summary>

Yes. Add **Entries** and **Customers** as two sources in the same data flow, then use the **Join** transformation on the `customers_id` field. Filter by `is_billable = true` to limit the output to billable time. Send the result to Google Sheets or Looker Studio to build a client-facing utilization report.

</details>

<details>

<summary>Why is absence or overtime data missing from my export?</summary>

Absences, Holidays quota, and Overtime carries are HR-sensitive entities that require admin-level access in Clockodo. If the API key you're using belongs to a standard user, these entities may return partial or no data. Switch to an admin account's API key to get full access.

</details>

<details>

<summary>How far back can I pull historical Entries data?</summary>

Coupler.io uses the **Start date** or **Years** parameters to control the date range. There's no hard limit on how far back you can go, but very large historical pulls can hit Clockodo's rate limits. For large datasets, use the Years parameter to pull one year at a time and combine them using Append.

</details>

<details>

<summary>Can I use Clockodo data with AI tools like ChatGPT or Claude?</summary>

Yes. Coupler.io supports AI destinations including ChatGPT, Claude, Gemini, Perplexity, Cursor, and OpenClaw. You can send a User reports or summarized Entries export directly to an AI destination to generate narrative summaries, spot anomalies, or answer questions about team performance.

</details>

<details>

<summary>What's the difference between User reports and Entries?</summary>

User reports are pre-aggregated summaries that Clockodo generates per user — they're quick to use but give you less control. Entries is the raw time log data, which lets you build custom aggregations, apply your own filters, and join with other entities. For most analytical use cases, Entries is the more flexible choice.

</details>

{% hint style="info" %}
For a full breakdown of available fields and entity structures, see the [Data Overview](#clockodo-data-overview) article. If you're running into authentication or missing data problems, check [Common Issues](#clockodo-common-issues).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.coupler.io/sources/category/time-tracking/clockodo.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
