Guide · Toggl Track → Google Sheets

5 ways to get Toggl Track data into Google Sheets

From free and manual to fully automatic. An honest comparison, including the options that cost nothing.

Disclosure: we make one of these options (Hourly Sheets, option 5). Not released yet. It is built and being tested, and still has to pass Google's review before anyone can install it. We've tried to be fair and we say where something else fits better. We have no affiliate links or deals with any company mentioned here. Small Rows is not affiliated with Toggl.

The short answer

If you…Try
are on a paid Toggl plan and need the data once a monthExport CSV from the Detailed report. Free, and nobody else touches your data.
are on Toggl Free and only need totals now and thenRead the totals off Toggl's Summary report (see billable hours on Toggl Free), or use a connector's free tier
are comfortable with a little codeYour own Apps Script. Free, and fully under your control.
pull data from many tools, not just TogglA general connector: API Connector, Coupler.io or Kondado
want a row added for each new entry, or to trigger other actionsZapier or Make
want Toggl billing reports (billable totals, an invoice tab) set up for youHourly Sheets, once it is released

Comparison at a glance

OptionCost to startRefreshes by itself?Watch out for
1. Export & importIncluded with Toggl. CSV/Excel export needs a paid Toggl plan.NoManual every time. Toggl Free exports reports as PDF only.
2. Your own Apps ScriptFreeYes, with a time-driven triggerYou write and maintain it
3. API Connector / Coupler.io / KondadoFree tiers (API Connector, Coupler.io) or a 14-day trial (Kondado)On paid plansSmall free tiers. General-purpose, so you build the billing reports.
4. Zapier / MakeFree tiersYes (free tiers check every 15 min at most)Built around new entries. History and later edits take extra work.
5. Hourly Sheets (ours)Free: last 30 days, manual sync. Pro US$6/month.Pro: hourly or dailyNot released yet. Toggl only.

Options 2 to 5 all use Toggl's API, so they share the same limits. On Toggl's Free plan that's 30 requests per hour, per user, per organization (Toggl). Details in Toggl Track API rate limits explained.

1. Export from Toggl, import into Sheets

Toggl Track's Detailed report lists every time entry, and the Summary report shows totals. The Export button (top right) downloads a PDF, CSV or Excel file. Toggl's help page has the catch: "CSV and Excel exports are a paid plan feature" (Toggl: Detailed report). On Toggl Track Free, reports export as PDF only (Toggl: Exporting data).

On a paid Toggl plan:

  1. Open Reports → Detailed and pick the date range and any client/project filters.
  2. Export → CSV. Check the duration format on your Toggl Profile page first, since it controls how durations look in the export.
  3. In Google Sheets: File → Import → Upload and pick the file.
  4. Optional: Insert → Pivot table (older guides say Data → Pivot table) for totals by client, project or person. Toggl has a step-by-step community post on building pivot-table reports in Sheets or Excel (Toggl Community).

On Toggl Free: for a few numbers, read the totals off the Summary report. Workspace admins can also request a full data export under Settings → Data Export. Time entries come as JSON rather than CSV, through an emailed link that stays valid for 72 hours. Toggl suggests exporting one year at a time (Exporting data, Moving data between workspaces). You'd then have to turn the JSON into a table yourself, which is fiddly.

Best for: monthly invoicing on a paid Toggl plan. It's free and no third party ever sees your data. Not great for: anything you want kept up to date.

What about Toggl's own integrations? We found no native Google Sheets integration in Toggl's integrations directory (Toggl integrations, checked 2026-10-05). Toggl's Google Docs integration is a timer button from the browser extension, not a data export. Toggl has had a directory page for API Connector (option 3), describing it as a community-built integration that Toggl doesn't endorse or test. That page now redirects to the main integrations page.

This guide is about Toggl Track. Toggl's newer product, Toggl 2.0 (formerly Toggl Focus), has its own exports and its own API. According to Toggl, CSV export is on Toggl 2.0's Free plan, and Toggl 2.0 API tokens won't work with the Track API (Exporting data, Introducing Toggl 2.0).

2. Write your own Apps Script (free)

Every Google Sheet comes with Apps Script (Extensions → Apps Script), and Apps Script can call Toggl's API with your personal API token. For one person's own entries, a single request to GET /api/v9/me/time_entries with start_date and end_date does the job (Toggl API: time entries). The script below copies the last 30 days into a tab called "Toggl".

/**
 * Toggl Track -> Google Sheets: your own time entries for the last 30 days.
 * Free, no add-on. Paste into Extensions > Apps Script in your spreadsheet.
 *
 * Setup: Project Settings (gear icon) > Script properties > add
 *   TOGGL_TOKEN = your Toggl API token (Toggl: Profile settings > API Token)
 * Keeping the token in a script property, not in the code, means it isn't
 * visible to people you share the code with. Anyone who can edit the script
 * project can still read it, so keep that list short.
 */
function importTogglEntries() {
  var token = PropertiesService.getScriptProperties().getProperty('TOGGL_TOKEN');
  if (!token) throw new Error('Add a TOGGL_TOKEN script property first.');

  var tz = Session.getScriptTimeZone();
  var day = 24 * 60 * 60 * 1000;
  var from = Utilities.formatDate(new Date(Date.now() - 30 * day), tz, 'yyyy-MM-dd');
  var to = Utilities.formatDate(new Date(Date.now() + day), tz, 'yyyy-MM-dd'); // tomorrow, so today is included

  // One request. It counts toward Toggl's user-level limit (30 requests/hour).
  var res = UrlFetchApp.fetch(
    'https://api.track.toggl.com/api/v9/me/time_entries?meta=true' +
      '&start_date=' + from + '&end_date=' + to,
    {
      headers: { Authorization: 'Basic ' + Utilities.base64Encode(token + ':api_token') },
      muteHttpExceptions: true
    }
  );
  var code = res.getResponseCode();
  if (code !== 200) {
    throw new Error('Toggl returned HTTP ' + code + ': ' + res.getContentText().slice(0, 200));
  }

  var data = JSON.parse(res.getContentText());
  var entries = Array.isArray(data) ? data : (data.items || []);
  var rows = entries
    .filter(function (e) { return e.duration >= 0; }) // skip a timer that's still running
    .map(function (e) {
      return [
        new Date(e.start),
        e.stop ? new Date(e.stop) : '',
        Math.round(e.duration / 36) / 100, // seconds -> hours, 2 decimals
        asText(e.description),
        asText(e.project_name),
        asText(e.client_name),
        asText((e.tags || []).join(', ')),
        e.billable ? 'yes' : 'no',
        e.id
      ];
    });

  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Toggl') || ss.insertSheet('Toggl');
  sheet.clearContents();
  sheet.getRange(1, 1, 1, 9).setValues([[
    'Start', 'Stop', 'Hours', 'Description', 'Project', 'Client', 'Tags', 'Billable', 'Entry ID'
  ]]);
  if (rows.length) sheet.getRange(2, 1, rows.length, 9).setValues(rows);
}

/** Text from Toggl that starts with = + - @ is stored as plain text, never run as a formula. */
function asText(s) {
  s = s == null ? '' : String(s);
  return /^[=+\-@]/.test(s) ? "'" + s : s;
}
  1. Paste it into the Apps Script editor and save.
  2. Project Settings → Script properties: add TOGGL_TOKEN with your token from Toggl's Profile settings.
  3. Select importTogglEntries and click Run. Google asks you to authorize the script the first time.
  4. To refresh it automatically, open Triggers (the clock icon), add a time-driven trigger for importTogglEntries and set it to run daily.

Honest limits:

On Toggl Free there's no billable flag, so Billable will say "no" for everything. Our guide to billable hours on Toggl Free has a second free script that totals billable hours and amounts by a billable tag instead.

Best for: people who are fine with a little code and want something free that they fully control.

3. A connector add-on or data pipeline

These are general-purpose tools that support Toggl as one source among many. They all ask for your Toggl API token, so treat it like a password.

API Connector (Mixed Analytics)

A Google Sheets add-on that can call almost any API. It has a Toggl preset and a step-by-step Toggl guide (Mixed Analytics). Pricing is in USD (API Connector pricing):

Each page of a paginated request counts as one request (their FAQ), and a page of Toggl's detailed report holds 50 entries by default (Toggl). Better fit than ours if you already use it for other APIs, or you want raw API access through a no-code screen. Watch out for: you set up the endpoint, the authentication and the paging yourself, and the output is raw.

Coupler.io

A data-pipeline service with a ready-made Toggl → Google Sheets integration covering time entries, projects, clients, tasks, workspaces and users (Coupler.io). Pricing as listed on 2026-10-05 (Coupler.io pricing):

Better fit if you combine Toggl with lots of other sources (it lists 400+) or send data to BI tools and warehouses. Watch out for: 100 rows per run on Free may not hold a month of entries, and Starter refreshes daily.

Kondado

Managed pipelines into Google Sheets: 10 Toggl pipelines, such as Time Entries, Projects and Clients (Kondado). Prices "start from $19 USD/month", with a 14-day free trial and no credit card required. Pricing depends on how many records you move each month, and the available schedule (every 5 minutes up to weekly) depends on the plan (Kondado pricing). Better fit if you also load data into BigQuery, PostgreSQL or another warehouse.

4. Zapier or Make

Automation tools react to events, for example "a new time entry was added", and run an action such as "add a row".

Zapier

Zapier's Toggl Track integration has triggers like New Time Entry and New Activity (Any Type), which covers created, updated and deleted items. It also has a Find Time Entries (Detailed Reports) action, and on the Google Sheets side there's Create Spreadsheet Row (Zapier). Pricing in USD (Zapier pricing):

Make

Make's Toggl app has modules for time entries, reports, projects, clients, tags and more (Make). The Free plan includes 1,000 credits/month, up to 2 active scenarios, a 15-minute minimum interval between runs and a 5-minute maximum run time. Most module actions use one credit (Make pricing).

IFTTT also has ready-made Toggl Track → Google Sheets applets (IFTTT).

Better fit if you also want something else to happen when you log time (a Slack message, a CRM update), or you just want a running log. Watch out for: a "new entry" automation adds rows as entries appear. It doesn't import your existing history, and if you edit an entry later the row won't change unless you build that logic too.

5. Hourly Sheets (ours)

This is our product, so weigh what we say about it accordingly. Not released yet. It is built and being tested, and still has to pass Google's review before anyone can install it.

A Google Sheets add-on that does one thing: Toggl Track → Sheets for billing. It writes a raw entries tab, a billable summary by client and project, and an invoice tab with live formulas. A Rates tab lets you set your own hourly rates. That helps on Toggl Free, because Toggl's pricing page lists billable rates from the Starter plan up (Toggl pricing). Toggl's billable flag is paid too, so on Free it can count entries with a tag you choose (such as billable) as billable instead. You can also round each entry to a billing increment.

Better fit than the others if you track time in Toggl, invoice from Google Sheets, and want the billing tabs built for you. Not a fit if you need sources other than Toggl, want a BI or warehouse destination, want a tool with a long track record and reviews, or export once a month on a paid Toggl plan anyway (option 1 is free).

It uses Toggl's API under the same limits as everyone else. It spaces out requests and pauses and resumes a large sync instead of failing. Product page & pricing · Setup guide

Just need a place to put the hours? Our free invoice template works with any of these options.

Sources

All read on 2026-10-05. Prices are in US dollars as shown on each page, before any tax. Providers change plans often, so check the live page before you buy.

Found something wrong or out of date? Tell us via Support and we'll fix it and note the change here.