Importing time entries from a CSV file

Last updated July 22, 2026

You can bulk-import time entries into a project instead of adding them one at a time. This is useful for backfilling timesheets, migrating data from another tool, or logging a batch of entries collected offline (e.g. from a spreadsheet or paper timesheet).

Where to find it

  1. Open a project and go to its Time entries tab.
  2. Click the Add time entry dropdown (top right of the panel).
  3. Choose Import from CSV.

The same dropdown also has Add time entry (single entry) and Download timesheet CSV (export what's already logged).

Step 1: Download the template

In the import window, click Download template. This gives you a .csv file with the correct column headers and a few example rows, ready to edit in Excel, Google Sheets, or Numbers.

Don't rename or reorder the columns — the importer matches them by column position.

Step 2: Fill in your rows

Column Required Format Notes
User Email Only if you can log time for others Email address Leave blank to import the row under your own name. If you don't have permission to log time for teammates, this column is ignored and every row is attributed to you.
Date Yes YYYY/MM/DD or DD/MM/YYYY
Start Time Yes HH:MM or HH:MM:SS (24-hour)
End Time No HH:MM or HH:MM:SS (24-hour) Leave blank for an entry with no end time. If set, it must be later than Start Time.
Title Yes Free text Shown as the entry's title/description.
Subtask No Exact subtask name Matched by name against the subtasks that already exist in this project. Leave blank to log time against the project only.
Billable Time No Number (hours, e.g. 2.5) If left blank, the full duration between Start and End Time is used.
Add To Timesheet No Yes or No Defaults to Yes if left blank.
Tags No Comma-separated tag names, e.g. Design, Review Matched by name against your team's existing time entry tags.

Step 3: Upload and preview

  1. Drag your completed CSV onto the upload area (or click Choose file).
  2. Click Parse CSV.

You'll see a preview table of every row that will be imported, plus a list of notes/warnings — for example:

  • A team member's email couldn't be matched (their rows will import under your name instead).
  • A subtask name couldn't be found in this project (those rows will import without a subtask).
  • A tag name couldn't be found (that tag will just be skipped for that row).

If a row has a genuine error — a missing title, an invalid date, an end time before the start time — the whole file is rejected with a message telling you which row and what's wrong, so you can fix it and re-upload. Nothing is imported until you confirm.

Step 4: Confirm the import

Click Import X rows. The system will:

  • Create a new time entry for each valid row.
  • Automatically skip exact duplicates — a row is treated as a duplicate (and skipped, not imported again) if an entry already exists for the same person, same subtask, and the same start/end time.
  • Show a summary of how many entries were created and how many duplicates were skipped.

The time entries list refreshes automatically once the import finishes.

Permissions

  • Anyone who can track time on a project can import their own entries.
  • Only users with permission to log time on behalf of others can use the User Email column to attribute rows to teammates. Everyone else's imports are always attributed to themselves, regardless of what the CSV contains.

Troubleshooting

Problem Likely cause
"Invalid date format" error Use YYYY/MM/DD or DD/MM/YYYY only.
"Invalid start/end time format" error Use 24-hour HH:MM or HH:MM:SS (e.g. 13:30, not 1:30 PM).
"End time must be after start time" Check for entries that cross midnight — split these into two rows.
A row's subtask doesn't link up The Subtask column must match an existing subtask's name exactly (case doesn't matter, but spelling does). Rows with no match still import, just without a subtask attached.
A teammate's rows imported under my name You don't have permission to log time for others, or their email in the CSV didn't match a team member's exact email address.

Other articles in Projects