Skip to content

TimeTrackr Integration

TimeTrackr is a desktop time-tracking application. When you start a timer on a project and stop it, the time entry has to land in Odoo as a timesheet. Two N8N webhooks bridge the gap: one provides the project and task list for the desktop client’s drop-down menus, the other receives time entries and turns them into Odoo analytic lines.

WorkflowNodesEndpointRole
TimeTrackr Projects5GET /webhook/timetrackr-projectsProject + task list for dropdown
TimeTrackr Entries12POST /webhook/timetrackr-entriesOdoo timesheet creation

TimeTrackr Entries · 12n

TimeTrackr Projects · 5n

select project

submit batch

TimeTrackr Desktop

GET /webhook/timetrackr-projects

Filter projects · x_github_sync_enabled

Group tasks by project

POST /webhook/timetrackr-entries

Loop entries · continueOnFail

Lookup timetrackr_user_mapping

Create account.analytic.line · Odoo


ProblemWithout integrationWith integration
Double entryTimer + manual entry inside OdooAutomatic
Out-of-sync projectsDifferent lists in each appDropdown fed by Odoo
Attribution errorsWrong project or wrong taskID-based mapping

Both endpoints rely on a token in the HTTP header:

HeaderUsage
X-TimeTrackr-TokenToken shared between the desktop client and N8N

The webhooks are exposed through Caddy (external access allowed, unlike the internal webhooks).

The workflow fetches Odoo projects where x_github_sync_enabled = true, then the active tasks (excluding Done/Cancelled) grouped per project. The reply is JSON ready for the client’s drop-downs.

The payload arrives as a batch:

{
"version": 1,
"entries": [
{
"project_id": 5,
"task_id": 42,
"description": "Fix login bug",
"duration": 1.5,
"date": "2026-03-28",
"username": "guillaume"
}
]
}

For every entry, the workflow:

  1. Looks up the employee ID in the timetrackr_user_mapping Data Table (guillaume → employee 1)
  2. Creates an account.analytic.line row in Odoo
  3. Keeps going even if one entry fails (continueOnFail)

LimitImpactMitigation
No reverse syncOdoo timesheets not visible in TimeTrackrTimeTrackr has its own view
Manual mappingAdd each user to the Data TableSingle user today

If multi-user:

  • Auto-discovery of Odoo employees
  • Mapping by email instead of username