How to do it
- Export your calendar: Google Calendar settings, Import & export; Outlook's File, Save Calendar; or File, Export in Calendar on a Mac.
- Drop the file below and pick the dates. Enter your own email address so meetings you declined are left out.
- Check the client table until "(no client)" holds only events you do not want in Toggl.
- Open "Settings for the Toggl Track, Harvest and Clockify import files" and enter the email of the Toggl workspace member.
- Click "Toggl Track import (CSV)".
- In Toggl Track, as a workspace admin, open the Import page, click "Select CSV file to upload", choose the file, then click "Import now".
What it does
- Columns: Email, Client, Project, Description, Start date, Start time, Duration. All are names from Toggl's list of allowed headers.
- Start date is YYYY-MM-DD and Start time is HH:MM:SS (24-hour), in the time zone you pick. Duration is HH:MM:SS, after rounding.
- Client is the client from your table. Project repeats the client, because Toggl needs a project for a client and a calendar has no projects.
- Description is the event title. Repeating meetings give one row per meeting inside your dates.
- There is no end time column. Toggl ignores end dates and end times on import and works them out from the start and the duration.
- Comma separated, UTF-8, as Toggl asks. The other downloads are unchanged.
Sources
- Toggl: Toggl Track CSV Import Guide
- Toggl: Editing and uploading a CSV file
- Toggl: Moving data between workspaces
Export from Google Calendar
- Open Google Calendar on a computer (the phone app cannot export).
- For every calendar at once: click the gear icon, then Settings, then Import & export, then Export. A .zip downloads. Drop the .zip here as it is.
- For one calendar: under My calendars, point at the calendar, click the three dots, then Settings and sharing, then Export calendar. An .ics file downloads.
Work and school accounts can have export turned off by the admin. You need the "Make changes and manage sharing" permission on a calendar to export it.
Export steps for the other apps
Export from Outlook (.ics)
- In classic Outlook for Windows, open the calendar, then File, then Save Calendar.
- Click More Options. Set Date Range to the period you bill for, and Detail to Full details. "Availability only" leaves out the titles, so no client can be matched.
- Save. Drop the .ics file here.
The new Outlook and Outlook on the web do not always offer this. If yours does not, use the CSV export from classic Outlook, or publish the calendar and download its .ics link.
Export from Outlook (CSV)
- In classic Outlook for Windows: File, Open & Export, Import/Export.
- Choose Export to a file, then Comma Separated Values, then your Calendar folder.
- Outlook asks for a date range. Pick the period you bill for. Save, then drop the .csv here.
The CSV has no time zone, no declined status and no repeat rules. Each row is one meeting as it sat in your calendar. If repeating meetings look missing, export as .ics instead.
Export from Apple Calendar
- Open Calendar on your Mac. If the calendar list is hidden, choose View, then Show Calendar List.
- Click the calendar name in the list.
- Choose File, then Export, then Export. Save the .ics file and drop it here.
Apple exports one calendar at a time. The "Calendar Archive" (.icbu) option is a backup format this tool does not read. Drop several .ics files at once if your work sits in more than one calendar.
What the Toggl import needs that a calendar does not have
- An Email on every row. A calendar does not say which Toggl user the time belongs to, so you type it (empty: your own address above is used). Toggl adds an email that is not in the workspace as a new active user, which can raise a paid plan's bill. Time for inactive users cannot be imported.
- A project. Project is filled with the client name. Edit the column first if your Toggl projects have other names.
- A start time for all-day events. If you count all-day events, their rows start at 00:00:00.
- Billable, Task and Tags are left out. A calendar has no such values, and Toggl offers Billable and Task on paid plans only.
- Rows with no client have an empty Client and Project.
- Toggl takes at most 1 MB per file. The page warns when the file is bigger; import a shorter date range at a time.
- Toggl treats names as case sensitive: "Acme" and "acme" become two clients. Rows that are identical, start included, are merged into one entry; the page warns with the number of such rows. An email that is not one plain address (name@example.com) is warned too.
- Toggl's guide writes "Start date" and "Start time" in its text and "Start Date" and "Start Time" in its table. The file uses the text spelling. Not verified against a real import.
- Toggl's guide does not say which time zone the start times are read in, and does not name the menu path to the Import page. Pick the time zone your Toggl profile uses.
- A title that starts with =, +, - or @ gets a leading apostrophe, as in the other downloads, so a spreadsheet does not run it as a formula.
- Not tested by importing into a real Toggl Track workspace. The columns and formats come from Toggl's help pages listed under Sources.
Limits
- An event counts on the day it starts, in the time zone you pick. An event that runs past midnight is not split across two days.
- All-day events are left out unless you set hours per all-day event. Then an event over several days gives one row per day, for the days inside your date range.
- Declined meetings are left out only when you enter your own email address, and only for .ics files. The Outlook CSV has no declined, tentative or free status, so those tick boxes do nothing for it.
- Client keywords match whole words, so "art" does not match "Party". A keyword with @ or a dot, like @acme.com, matches inside email addresses.
- The "events shown as free" box leaves out events marked TRANSP:TRANSPARENT in the file. That this is what Google writes for events set to Free is not confirmed against a real Google export.
- Repeat rules by the hour or minute, by week number, or by hour of the day are not expanded. Those series are listed as not counted. Calendar apps rarely write them.
- A repeat that lands on a time skipped by a clock change (for example 2:30 on the night clocks go forward) is skipped, as the iCalendar standard says. Some calendar apps show it an hour later instead. The page names those dates.
- "This and all later" changes written as RANGE=THISANDFUTURE are applied to the one meeting only, with a warning.
- The Outlook CSV must have English column names. A CSV from a German, French or other localized Outlook is refused.
- The Outlook CSV has no time zone. Its times are read as the wall-clock times of the computer that exported them.
- Not tested against real exports of timed, repeating and declined events from Google, Apple or Outlook. The test files are built from the iCalendar standard and the vendors' help pages. Check the first timesheet against your calendar.
- The Toggl Track, Harvest and Clockify import files follow those vendors' help pages and were not tested by importing into a real account.
Questions
- Does Toggl Track import time entries from a CSV?
- Yes. Toggl's CSV import guide lists Email, Start date, Start time and Duration as required, and Client, Project, Description, Task and Tags as optional. Billable is a flag on each entry, and Toggl offers it and Task on paid plans only. Only workspace admins can import, and a file can be at most 1 MB.
- Why is there no end time in the file?
- Toggl's guide says the end date and end time are ignored on import and are calculated from the start time and the duration. So the file carries Duration instead.
- Does the email have to belong to a Toggl user?
- Use the email of an existing workspace member. Toggl adds any email in the file that is not in the workspace as an active user, which may change the bill on paid plans. Time for a member who was made inactive cannot be imported.
- Is my calendar uploaded anywhere?
- No. The file is read by this page inside your browser. Nothing from it is sent to a server. You can disconnect from the internet after the page loads and it still works.
- How is the client picked for each event?
- From a keyword table you can edit. The first row whose keyword appears as a whole word in the event title, categories, location, or a guest's name sets the client; a keyword with @ or a dot, like @acme.com, matches inside email addresses. Suggestions come from guest email domains, categories and titles like "Acme: review". Your own domain is never suggested, and the table is filled in only once your email address is known. It is saved in your browser.
- How are hours rounded?
- Per event and always up: exact, to 6 minutes (0.1 hour), to 15 minutes, or to 30 minutes. With exact rounding each event counts in whole minutes and is shown as hours:minutes (0:20), and totals add the minutes before giving decimal hours, so three 20-minute calls are 1:00 = 1.00 hours. With 6, 15 or 30 minutes every row is already a whole number of hundredths, so the decimals add up.
Related
- Google Calendar to timesheet by client
- Outlook calendar to timesheet
- Outlook calendar CSV to timesheet
- Outlook calendar to Excel hours
- Apple Calendar hours report
- Billable hours from your calendar
- Calendar to invoice summary
- ICS to CSV with hours per event
- Hours per client report
- Calendar to billable hours in tenths of an hour
- Round meeting time to 15 minutes
- Recurring meetings in a calendar export
- Time zone and daylight saving in calendar hours
- Leave declined, tentative and all-day events out
- Calendar hours by category or attendee domain
- See total hours in Google Calendar
- Export Google Calendar to Excel
- Outlook calendar total hours per week
- ICS to Excel
- Calendar time tracking report
- Session hours per client for therapists, tutors and coaches
- Meeting hours per week report
- Calendar to Harvest CSV time import
- Calendar to Clockify CSV import