> 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/best-practices.md).

# Best Practices

## Recommended setup

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Use an admin API key</strong></td><td>Standard user keys often miss HR-sensitive data like absences, holiday quotas, and overtime. Using an admin-level key ensures you get a complete dataset across all entities.</td></tr><tr><td><strong>Start with Entries + one lookup entity</strong></td><td>Entries is the most data-rich entity but needs context. Join it with Customers or Projects in the same data flow to make the output immediately useful without extra post-processing.</td></tr><tr><td><strong>Use Customers projects as a bridge table</strong></td><td>When building reports that span customers, projects, and entries, pull Customers projects as a separate source and use it as a relational lookup to avoid duplicating customer data across rows.</td></tr></tbody></table>

## Data refresh and scheduling

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Scope Entries by year, not open-ended</strong></td><td>Entries can accumulate into very large datasets over time. Use the Years parameter to pull only the current or relevant year, then append prior years as separate sources if you need historical comparisons.</td></tr><tr><td><strong>Schedule HR entities less frequently</strong></td><td>Entities like Holidays quota, Target hours, and Teams change rarely. A weekly or monthly refresh is sufficient — daily syncs add API load without meaningful data updates.</td></tr></tbody></table>

## Performance optimization

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Aggregate in Coupler.io before sending to your destination</strong></td><td>Use Coupler.io's Aggregate transformation to sum hours or count entries by user or project before writing to Google Sheets. This keeps your destination lean and avoids row limits on large Entries exports.</td></tr><tr><td><strong>Split multi-year history into separate sources</strong></td><td>If you need several years of Entries data, add each year as a separate source in the same data flow and use Append to combine them. This prevents single large requests from hitting rate limits or timing out.</td></tr></tbody></table>

## Common pitfalls

{% hint style="danger" %}
Duration fields in Entries and Work times are in **seconds**, not hours. Forgetting to convert (divide by 3600) is the most common source of incorrect reports — always add a calculated column in your destination.
{% endhint %}

{% columns %}
{% column %}
**Do**

* Use an admin API key for complete data access
* Convert duration fields from seconds to hours in your destination
* Join Entries with Customers or Projects for meaningful reports
* Use the Years or Start date parameter to limit Entries data volume
  {% endcolumn %}

{% column %}
**Don't**

* Pull all Entries without a date range on large accounts
* Rely on User reports as your only source — they're pre-aggregated and less flexible
* Ignore the is\_billable flag when calculating client-facing revenue totals
* Schedule daily refreshes for entities that change infrequently (quotas, teams, targets)
  {% endcolumn %}
  {% endcolumns %}


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
