Hourly Sheets setup guide
From install to your first invoice-ready sheet in about five minutes.
1. Install
- Open the Hourly Sheets listing on the Google Workspace Marketplace and click Install (link coming at launch).
- Review the permissions. You will see: view and manage spreadsheets that this application has been installed in, display and run third-party web content in prompts and sidebars, connect to an external service and allow this application to run when you are not present (used only for auto-refresh).
- Open any Google Sheet and go to Extensions → Hourly Sheets → Open Hourly Sheets.
Want to look before connecting Toggl? Click Try with sample data in the sidebar. It writes made-up time entries for last month (fictional clients and projects) into three tabs of their own: Sample – Toggl Entries, Sample – Billable Summary and Sample – Invoice. Each is marked as sample data in its first row. It makes no Toggl requests and doesn't change your settings or your other tabs. Clicking it again replaces the sample tabs, and Remove sample tabs deletes them. The sample summary also previews the Pro per-person section.
2. Connect Toggl Track
- In Toggl Track, open Profile settings and scroll to API Token. Copy it.
- Paste it into the sidebar and click Connect. The add-on makes one request to Toggl to check it.
Your token is kept in your Google account's private storage for this add-on (Apps Script user properties). Other editors of the
spreadsheet can't see it, and it is only ever sent to api.track.toggl.com. Treat it like a password. You can reset it in Toggl at any time.
3. Choose workspace & date range
- Click Load to list your Toggl workspaces and pick one.
- Pick a date range: This month, Last month, Last 7 days, Last 30 days, This year (Pro) or Custom.
- Click Sync now.
On the Free plan, dates older than 30 days are trimmed and the sidebar tells you when that happens. Dates follow the spreadsheet's time zone (File → Settings). Toggl decides which day an entry belongs to using each person's Toggl profile time zone.
4. Billing settings & rates
| Setting | What it does |
|---|---|
| Count as billable | Entries marked billable in Toggl (Toggl's billable flag is a paid Toggl feature), Entries with tag, or All entries.
On Toggl Free, use Entries with tag and type the tag you put on billable work, such as billable. The match is the exact tag name, ignoring letter case and spaces;
separate several tags with commas and an entry with any of them counts. Toggl's own flag is ignored in this mode. More in billable hours on Toggl Free. |
| Round each entry up to | Rounds every entry up to the chosen increment before calculating amounts. "6 minutes" gives tenth-of-an-hour billing. |
| Default hourly rate & currency | Used when there is no rate in the Rates tab or in Toggl. |
| Tax label & % | For the invoice tab, e.g. "GST" and 5. |
Rates tab. Click Create Rates tab to get a list of every client and project in your entries. Fill in hourly rates (leave Project blank to set one rate for all of a client's projects), then click Apply rates & rebuild. Rebuilding makes no Toggl API requests.
Which rate is used, in order: the Rates tab for that client and project, then the Rates tab for that client, then Toggl's rate, then your default rate. The Rate source column shows which one applied.
5. What gets written
- Toggl Entries: one row per time entry. Replaced on every full sync, so don't type into it. Keep your own notes in other tabs.
- Billable Summary: totals by client and project, plus per person on Pro and Team.
- Invoice: see below.
- Rates: yours to edit. The add-on only creates it when you ask.
Running timers are skipped until they're stopped. Text that starts with =, +, - or @
is stored as plain text so it can never run as a formula.
6. Invoice tab
Pick the client in the sidebar (default: the client with the largest billable amount). The tab lists one line per project and rate, with subtotal, tax and total as live formulas. Fill in your business details in the "From" block once. They're kept between refreshes. The invoice number is a suggestion you can change. Always review an invoice before sending it.
7. Auto-refresh (Pro)
Choose About every hour or Daily (~6 AM). Google lets add-ons run a background refresh at most once an hour, with one schedule per person per spreadsheet. The refresh uses your token and the saved date-range preset, so "This month" keeps rolling forward.
8. Toggl API limits
Toggl limits API use per user, per organization, per hour: 30 requests/hour on Free, 240 on Starter and 600 on Premium. Account-level requests (like listing workspaces) have a separate limit of 30/hour. Hourly Sheets reads Toggl's quota headers, spaces requests about a second apart, and stops before the limit runs out.
| Action | Approx. requests |
|---|---|
| Connect token | 1 (account) |
| Load workspaces | 1 (account) |
| Sync | 1 per 50 entries, plus 3 for project, client and tag names (more with over 200 projects). Sync now always fetches fresh names; Resume and auto-refresh reuse names cached for up to 6 hours. |
| Extra in Entries with tag mode | 0 usually. At most 1 per sync, only when an entry has a tag newer than the cached names. |
| Apply rates & rebuild | 0 |
If a sync hits the limit it shows "Paused" and the time you can resume. Your progress is kept. For the full picture (402 vs 429, quota headers, what each plan allows), see Toggl Track API rate limits explained.
9. Plans & license keys
After buying Pro or Team you'll get a license key from our payment provider, Polar. Paste it under Plan & license and click Activate. The add-on checks the key with Polar about once a day. If Polar can't be reached, paid features keep working for up to 7 days.
10. Disconnect & remove data
- Disconnect in the sidebar deletes your stored Toggl token and turns off auto-refresh.
- Remove under Plan & license deletes the stored license key.
- Delete the tabs the add-on created if you no longer want the data. It lives only in your spreadsheet. Remove sample tabs deletes the “Sample – …” tabs.
- Uninstall from Extensions → Add-ons → Manage add-ons, and revoke access at myaccount.google.com/permissions.
11. Troubleshooting
"Toggl rejected the request (HTTP 403)"
The token is wrong or was reset, or you can't access that workspace. Copy a fresh token from Toggl and connect again.
"Paused … Toggl's hourly API limit was reached"
Wait until the time shown, then click Resume. With auto-refresh on, it resumes by itself.
"Feature not available on the workspace's plan (HTTP 402)"
Toggl restricts some report features by plan. Tell us which workspace plan you're on (no token needed) and we'll look into it.
Amounts are all zero
Either nothing counts as billable (on Toggl Free nothing is marked billable in Toggl, so switch Count as billable to Entries with tag or All entries; in tag mode, check the tag's spelling) or no rate is set (add a default rate or use the Rates tab).
The Tags column shows a number instead of a name
The tag is newer than the names the add-on had, and Toggl's hourly limit didn't leave room to look it up. The sync message says so. Click Sync now later to fetch fresh names.
Something else
Email smallrows@gmail.com with what you clicked and the message you saw. Please never send your API token.