[Launched] Time Tracking Entries


tl;dr:

  • launched!
  • endpoints for Time Tracking Entries:
    • getting all time tracking entries
    • getting all time tracking entries for a given task
    • creating new time tracking entries on tasks
    • updating existing time tracking entries
  • webhooks are emitted for the following events:
    • change.field = actual_time_minutes: changed
    • actual_time_minutes: story added (ex: Carolyn added 45m to actual time)
    • time_tracking_entry: added / changed / deleted

Hey folks,

Asana has launched Time Tracking Entries in the API! Here are the available endpoints:

And here is the Time Tracking Entry resource:

{
  "gid": "1234",
  "resource_type": "time_tracking_entry",
  "duration_minutes": "1", // long
  "entered_on": "YYYY-MM-DD",
  "task": {}, // Task, https://developers.asana.com/reference/tasks#taskcompact
  "created_by": {}, // User, https://developers.asana.com/reference/users#usercompact
  "created_at": "2023-03-15T16:26:00Z" //ISO 8601
}

Additionally, the following webhooks are emitted for Time Tracking Entries:

  • when a time tracking entry is added, changed, or deleted the following things happen:
    • a webhook for the Task is emitted, where field: 'actual_time_minutes'
    • a webhook for the Time Tracking Entry is emitted
    • after a short time to allow for undo, a story is emitted (ex: Carolyn added 45m to actual time)

Timeline

Date Event
2023-03-16 Announcement
2023-04-07 Generally Available
2023-04-14 Addition of webhooks

Yours in Developer Relations,
Sasha, on behalf of the Asana API Team

6 Likes

Thanks. Does « generally available » suggests that it would be partially available before for example through enable headers?

1 Like

Great question. For Time Tracking Entries, it will become available to everyone at once. There is no opt-in period nor are there headers that can be used for pre-release access.

The rule of thumb is if there is no timeline entry for opt-in, then there will be no opt-in or pre-release availability. I’ll make sure to call that out more clearly in the future!

3 Likes

@sasha_f may I check if this is on-track for release in 2 days time?

In addition, may I check if the Time tracking entry will be able to show ongoing time records? or only completed time records?

Hey folks, this is now launched!

5 Likes

Hey folks, just a quick update that I modified the original announcement to include webhooks too!

2 Likes

Is there any plan for a list endpoint for time_tracking_entries?

I’m trying to view how much time my team has logged this week, to see where they’ve forgotten to log. I can then go remind them to enter time.

Looks like I can only get list of time entries by going through each task id individually? i.e. GET /tasks/:gid/time_tracking_entries

1 Like

Hoping to get an answer about this soon!

Good question, @Gavin_Hodge.

@sasha_f what do you think? The original post says:

  • getting all time tracking entries

but I don’t currently see an endpoint to do that?

3 Likes

A post was split to a new topic: Ability to use the Actual Time field in a rule trigger

Hello,

It’s a great feature. Yet, I search a way to edit the created_by. As manager, I have to fix my team member team time tracking without using their account. Especially when they forget to track it.

By the way, does it plan to add assignee resource like project and task?

BR,
Kévin TEMIN

I would like to stress the importance of this feature being added too, @sasha_f - it makes basic company-wide analysis really tricky when we can only get time tracking data out via an API and task-by-task.

Either a CSV export function for individual time tracking records or an API endpoint for listing time tracking records without specifying a specific task would be a huge help.

I was previously using Harvest to track time on tasks and then an automation in Make that would trigger off a time entry being added to populate fields on the task so having a built in timer to replace a whole separate subscription is really helpful. I’m fortunate that I didn’t rely on the reporting and granularity Harvest provided.

Once thing I am going to miss in the menu bar app for Harvest. I see that Asana’s menu bar item can now be turned off and that it has a built in pomodoro timer, if I can throw in my 2c I’d love for there to be a marriage between the pomodoro timer and the new time tracking feature. Please bring time tracking abilities [Stop, Restart, Edit, Delete] to the menu bar!

I was just about to start working on an app to replace this functionality but as time entries are only created after the timer stops it isn’t possible with the current implementation.

3 Likes

+1 to this combination. The pomodoro feature feels misleading when it isn’t combined with the time tracking. Moreover, not having the visual indication of the timer being active outside of Asana is a big challenge for those of us with limited short term memory :slight_smile:

1 Like

Are there any plans to be able to customize the created_by user? This feature would be tons of help.

Thanks,

Caleb

Hello! As a someone who needs to see what tasks they have billed against in a single day, the request of being able to parse through time tracking entries without knowing a task would be instrumental in helping.

Please update if there are plans to add this!

1 Like

Any update on being able to access time entries by date/range

1 Like

Any update on a list endpoint for time_tracking_entries? It has been a year since this was launched and it seems like a simple and common request.

@Jeff_Schneider @John_Baldo What webhook(s) would one set up to get notified whenever new time tracking entries are added? What would the resource and filtering need to be set to?

I appreciate any feedback from @Jeff_Schneider and @John_Baldo to be able to establish a webhook for time_tracking_entries on new created tasks.

Because of no feedback until now we had in the meantime the idea to “simply” load all time tracking entries from the previous month at the beginning of a new month, however the Asana API does not help that much by going this direction, because it needs at least the following API calls to load all time tracking entries:

  1. load all projects (all means really all because even archived projects might contain unsynchronized time tracking entries from the previous month)
  2. load all tasks for each project
  3. load all time tracking entries for each task

This ends up in huge payloads for the API and isn’t really useful at all.

So, we need to be able to set-up a webhook for tasks that will be triggered by adding/deleting/updating a time_tracking_entry.