Toggl Track

What Shuttio reads from Toggl Track, where it lands in Odoo, which permissions it needs and why, and what does not move.

Last updated: 28 October 2026

The API token from the bottom of your Toggl profile page. Shuttio reads every workspace that user belongs to, with the token's own rights; everyone's time is visible to a workspace admin only.

Object by object: What objects are supported for Toggl Track migrations.

What Shuttio reads and moves

The list below describes the move into Odoo. Where Clarify or Odoo differ, the destination's own article says so.

  • Clients: As Odoo companies. A company already in Odoo is matched by name (case ignored) and linked instead of duplicated. An archived client says so in the internal note.
  • Projects: As Odoo projects with the client as customer, the name and the start and end dates. The workspace becomes a tag. A project archived in Toggl is archived in Odoo. Whether it is billable, its rate, fixed fee and estimated hours are one line at the end of the description; nothing is invoiced.
  • Tasks: Toggl tasks (a paid-plan feature) become tasks of their project. A task that is no longer active lands in the Done stage. A workspace on a plan without tasks brings none, and the run says so.
  • Time entries: As timesheet lines with the date, the hours, the project, the task and the description. Whether the entry is billable and its tags are written in brackets after the description, because an Odoo timesheet line has no tags.
  • People: Each entry goes to the Odoo employee with the same email as its Toggl user (the employee's work email, or the email of the Odoo user the employee is linked to). Entries of a person with no such employee are skipped and counted with the reason; add the employee and retry, or choose one employee for them on the field review.
  • The sample: A sample takes whole projects, not a random pick from each object: up to 50 projects (those with time entries first), each with all its tasks and every time entry, and the clients they name. Time entries stop at 500; a project that would pass that is left out, never cut in half, and the first project is always whole. A full run moves everything from Toggl Track.

Where each thing lands

Toggl Track objectIn Odoo
ClientsPartners (companies)
ProjectsProjects (Odoo Project app)
Project tasksProject tasks (Odoo Project app)
Time entriesNot written

Notes, tasks, meetings, calls, files, owners and lists depend on the destination. This is the row for Toggl Track, generated from the same tables the runner uses:

Into Odoo

FromObjectsNotesTasksMeetingsCallsEmailsFilesOwnersLists
Toggl TrackClients, Projects, Project tasks, Time entriesNoNoNoNoNoNoNoNo

Each destination's own article says how its data is written: Odoo.

Permissions and why

WhatWhy Shuttio needs it
An API tokenCopy it from the bottom of your profile page in Toggl Track. Shuttio checks it against Toggl before it saves anything and reads only what that user may see; it never writes to Toggl.

Use the token of a workspace admin: Toggl shows everyone's time to an admin only, and a workspace where the token is not an admin is skipped and named. Toggl allows about one request a second per token, so a large workspace takes a while, and the run pauses when Toggl asks it to slow down or reports that the free plan's quota is used, until you resume it. The token is stored encrypted and deleted 14 days after the migration finishes. You can reset it at any time in your Toggl profile.

Known limits

  • Invoices and expenses: They have no place in Odoo's Project and Timesheets apps.
  • Running timers: A timer that is still running has no final hours. Stop it in Toggl and run the object again; the run says how many were left.
  • Entries with no project: An Odoo timesheet line needs a project. They are counted and named in the run.
  • Other people's time without an admin token: Toggl shows everyone's time to a workspace admin only. A workspace the token is not an admin of is skipped and named.
  • Users as Odoo users or employees: Each Odoo user is a paid seat and an employee is a decision for you; none is created. Entries are matched to employees that exist.
  • Billing and invoicing: Timesheet lines are written without a sales order line, so Odoo invoices nothing. Billable and rates are text.
  • Odoo without the Timesheets app: Projects and tasks still move; the time entries are skipped with a sentence. Install Timesheets in Odoo and run that object again.
  • The Odoo app and the import package: Time entries move with an Odoo API key only.
  • Rate limits: Toggl allows about one request a second per token. Shuttio spaces its requests a little over a second apart, so a large workspace takes a while, and it pauses the run if Toggl refuses more; Resume carries on.
  • Emails: Shuttio reads no emails from Toggl Track.

Not answered here? Email help@shuttio.com.