Aller au contenu

TimeTrackr Integration

TimeTrackr est une application desktop de suivi de temps. Quand vous demarrez un timer sur un projet et l’arretez, l’entree de temps doit atterrir dans Odoo comme timesheet. Deux webhooks N8N font le pont : l’un fournit la liste des projets et taches pour les menus deroulants du client, l’autre recoit les entrees de temps et les convertit en lignes analytiques Odoo.

WorkflowNodesEndpointRole
TimeTrackr Projects5GET /webhook/timetrackr-projectsListe projets + taches pour dropdown
TimeTrackr Entries12POST /webhook/timetrackr-entriesCreation timesheets Odoo

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


ProblemeSans integrationAvec integration
Double saisieTimer + saisie manuelle OdooAutomatique
Projets desynchronisesListes differentes dans chaque appDropdown alimente par Odoo
Erreurs d’attributionMauvais projet ou mauvaise tacheMapping par ID

Les deux endpoints utilisent un token dans le header HTTP :

HeaderUsage
X-TimeTrackr-TokenToken partage entre le client desktop et N8N

Les webhooks sont exposes via Caddy (acces externe autorise, contrairement aux webhooks internes).

Le workflow recupere les projets Odoo ou x_github_sync_enabled = true, puis les taches actives (hors Done/Cancelled) groupees par projet. La reponse est un JSON exploitable directement par les menus deroulants du client.

Le payload arrive sous forme de batch :

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

Pour chaque entree, le workflow :

  1. Cherche l’employee ID dans la Data Table timetrackr_user_mapping (guillaume → employee 1)
  2. Cree une ligne account.analytic.line dans Odoo
  3. Continue meme en cas d’erreur sur une entree (continueOnFail)

LimiteImpactMitigation
Pas de sync inverseTimesheets Odoo pas visibles dans TimeTrackrTimeTrackr a sa propre vue
Mapping manuelAjouter chaque utilisateur a la Data TableUn seul utilisateur actuellement

Si multi-utilisateurs :

  • Auto-decouverte des employes Odoo
  • Mapping par email plutot que par username