Actuals (timesheets)
Overview
In a budget-constrained environment, timesheets are a critical measurement of how much time has been spent. Knowing this means that Runn can forecast when a project will be completed, how much it is going to cost to deliver it and what the total bill will be.
Runn calculates forecasts using two key ingredients:
Scheduled Work: the hours that have been assigned to people in Runn.
Actual Work: the actual hours that people have recorded in their timesheet.
Runn can still forecast without Actual Work, we do this by assuming that all the Scheduled Work was done exactly as planned. However, the forecast will be far more accurate when Actual Work hours are available.
Options for recording actual work hours in Runn
There are 4 options for recording your Actual Work hours in Runn:
- You can enter them directly into Runn using our built-in timesheet tools.
- You can import them into Runn using our CSV importer.
- You can use one of our pre-built integrations (Clockify and Harvest).
- You can use Runn’s API to automate the syncing of data from your existing time tracking tool.
Use Runn's API to enter actuals
Guide
- Use the following guide alongside the API reference for Actuals
Below we discuss how to use Runn's API to enter actuals. The key benefits of this approach are:
- No change management. If your team is already using a timesheeting tool, having to move everyone over to a new tool could be painful. By syncing data using our API, your team can keep using the tools they are used to.
- Streamlined operations. Timesheeting tools often manage a similar set of data to Runn: such as people, projects, clients, hours worked, etc. Integrating your tools with Runn keeps that data connected and in sync.
- Easier migrations. Even if you plan to fully migrate to Runn’s timesheeting solution in the future, by keeping the two tools in sync, you can take your time running both in tandem till you are ready to decommission the old one.
POST /actuals/
Creates an 'actual' which is the total time spent on a project for a given date. This is always matched as project/person/role.
- the /actuals/ endpoint will overwrite any existing actual for the same projectId, personId & roleId
- The /actuals/ endpoint will auto fill 0 hours work for dates between two submitted actuals. For example, if you submit an actual for Monday and Friday. We will automatically insert 0 hours for Tuesday, Wednesday & Thursday. This can be overwritten at any time
- The /actuals/ endpoint will auto fill 0 hours work for any days where assignments exists before the first submitted actual. For example, if someone had an assignment for Monday to Friday, and the first submitted actual was on Wednesday. We will automatically fill Monday and Tuesday with 0 hours. This can be overwritten at any time.
- Please ensure there is a delay between each entry for the same person/project/role/date. Either wait for the response or add 100ms delay. You may receive a Too many requests error otherwise.
Tips
If you have started adding actuals half-way through a project, and do not plan to fill in the history: Use the UI to create the first actual for each person/project/role. In that case we will not auto fill before this entry.
If there is not actual for a certain date, Runn will use the assigned hours in place of the actual. This is why we auto fill 0 for you when using the API. So that you do not need to add 0 for days that someone was not working.
POST /actuals/bulk/
Create or update up to 100 'actuals' in a single API call.
- Use this endpoint if you are syncing a batch of data rather than an API call for each actual.
- If there is a validation error with any entry in your API request none of the actuals will be entered.
POST /actuals/timeentry
Creates a time_entry that is added to an actual. This allow you to submit multiple entries for a single date/project/person/role and they will be added together in a single actual.
- Please ensure there is a delay between each entry for the same person/project/role/date. Either wait for the response, or add 100ms delay.
- We do not store these submissions, we simply add the time to the existing actual (or create a new actual where none exists)
- You cannot remove time through this endpoint. Instead you must update the existing actual with either the new total time, or with 0 and then re-submit the time entries.
- Too many requests error occurs when you send multiple requests for the same person/project/role/date before we have finished writing the initial data to the database.
Updated 3 months ago