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.
The short answer
| If you… | Try |
|---|---|
| are on a paid Toggl plan and need the data once a month | Export CSV from the Detailed report. Free, and nobody else touches your data. |
| are on Toggl Free and only need totals now and then | Read 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 code | Your own Apps Script. Free, and fully under your control. |
| pull data from many tools, not just Toggl | A general connector: API Connector, Coupler.io or Kondado |
| want a row added for each new entry, or to trigger other actions | Zapier or Make |
| want Toggl billing reports (billable totals, an invoice tab) set up for you | Hourly Sheets, once it is released |
Comparison at a glance
| Option | Cost to start | Refreshes by itself? | Watch out for |
|---|---|---|---|
| 1. Export & import | Included with Toggl. CSV/Excel export needs a paid Toggl plan. | No | Manual every time. Toggl Free exports reports as PDF only. |
| 2. Your own Apps Script | Free | Yes, with a time-driven trigger | You write and maintain it |
| 3. API Connector / Coupler.io / Kondado | Free tiers (API Connector, Coupler.io) or a 14-day trial (Kondado) | On paid plans | Small free tiers. General-purpose, so you build the billing reports. |
| 4. Zapier / Make | Free tiers | Yes (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 daily | Not 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:
- Open Reports → Detailed and pick the date range and any client/project filters.
- Export → CSV. Check the duration format on your Toggl Profile page first, since it controls how durations look in the export.
- In Google Sheets: File → Import → Upload and pick the file.
- 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;
}
- Paste it into the Apps Script editor and save.
- Project Settings → Script properties: add
TOGGL_TOKENwith your token from Toggl's Profile settings. - Select
importTogglEntriesand click Run. Google asks you to authorize the script the first time. - To refresh it automatically, open Triggers (the clock icon), add a time-driven trigger for
importTogglEntriesand set it to run daily.
Honest limits:
- It only gets your entries. For a team, use the Reports API detailed report, which returns 50 entries per page and tells you where the next page starts (Toggl Reports API). The rate-limits guide has a paged example.
- The docs we read don't say how far back
/me/time_entriesgoes or whether it caps the number of results. For long histories, use the Reports API. - You get raw entries only: no rates, no summary, no invoice. You build those with pivot tables and formulas.
- Limits:
/merequests count toward Toggl's 30-per-hour user limit (Toggl). On a consumer Google account, Apps Script allows 6 minutes per run, 20,000 URL fetches a day, and 90 minutes of trigger runtime a day (Google). - We tested this script against a simulated Toggl API, not a live Toggl account. Treat it as a starting point and check the first result against Toggl.
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):
- Free: 100 requests/month, 3 saved requests, 1,000 rows, no scheduling.
- $15/month ($12/month billed annually): 2,500 requests/month, unlimited rows, daily scheduling.
- $29/month ($23/month billed annually): 60,000 requests/month, hourly scheduling.
- A 30-day money-back guarantee on payments.
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):
- Free: 1 account, 1 destination, manual refresh, 100 rows per run.
- Starter: $32/month ($24/month billed annually), daily refresh, 5,000 rows per run.
- Hourly refresh starts on Pro at $259/month ($199/month billed annually).
- New accounts get 7 days with full access before choosing a plan.
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):
- Free: 100 tasks/month, two-step Zaps (one trigger, one action), checks for new data every 15 minutes.
- Professional starts at $19.99/month billed annually, or $29.99 month to month, for 750 tasks.
- A task is a successful action step. Triggers don't count. So "new entry → new row" uses one task per entry.
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)
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.
- Free: last 30 days, manual sync.
- Pro: US$6/month. Full history, hourly or daily auto-refresh, per-person summary.
- Team: US$15/month for up to 5 people.
- These are launch prices and may change. Existing subscribers will be told in advance.
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.
- Toggl: Detailed report (export formats) · Exporting data · Moving data between workspaces · Pivot-table guide (community) · Integrations directory · Pricing · Introducing Toggl 2.0
- Toggl API: API & webhook limits · Time entries (v9) · Reports API overview
- Google: Apps Script quotas
- Mixed Analytics: Toggl guide · API Connector pricing
- Coupler.io: Toggl to Google Sheets · Pricing
- Kondado: Toggl to Google Sheets · Pricing
- Zapier: Toggl Track + Google Sheets · Pricing
- Make: Toggl app · Pricing · IFTTT: Toggl Track + Google Sheets
Found something wrong or out of date? Tell us via Support and we'll fix it and note the change here.