Tracking the time spent on tickets in different statuses is crucial for optimizing workflows and identifying bottlenecks in Jira projects. Many teams struggle with this seemingly simple task, as they are not able to track time in Jira is not readily available. In this short guide, we show different methods for tracking the time spent in a status. These include built-in functions, third-party solutions and custom implementations.
Solutions: How to track time spent in status in Jira
While Jira is powerful for issue tracking and project management, it doesn't provide an easy way to measure the following:
- How long each ticket has spent in each individual status
- How often a ticket was in a certain status
Teams often need this data to understand how long tickets linger in phases such as "pull request" or how often tickets are reopened.
Integrated Jira functions
Control chart For Kanban boards can provide some insights:
- Go to "Reports" > "Control chart"
- Select the status you want to analyze
- Identify the specific ticket number (issue number)
This method shows the time spent in each status per story, but has limitations for comprehensive reporting.
You can use JQL (Jira Query Language) for rudimentary time tracking:
statusCategoryChangedDate <= -3d AND status = "open"
statusCategoryChangedDate <= -5d AND status = "in progress"
Note: With this method, your workflow must switch between status categories (e.g. "To do" and "In progress").
Solutions from third-party providers
Several apps from the Atlassian Marketplace offer more robust time tracking features for tracking time in status:
- Time in Status from OBSS
- Generates reports on the time spent in each status, for each assignee or user group
- Enables user-defined business calendars
- Supports cloud, server and data center versions
- Time in Status Reports from RVS
- Status time recording reports
- Group statuses to define the lead/throughput time
- Recognize process bottlenecks and take action
- Status Time Reports from Bloompeak
- Creates status time reports based on work calendars
- Create reports based on time in status or time in charge, group statuses to get different cycle time and lead time reports
- Jira Workflow Toolboxfrom Decadis AG
- Provides powerful math and date/time expression capabilities to automate workflow transitions
- Offers integrated functions such as timeInStatus() for Data Center
- Allows you to define custom business calendars in Jira for more accurate time tracking
Customized solutions
Customized solutions can be developed for teams with specific requirements or budget constraints:
Automation for Jira:

Uses Jira's built-in automation to create a "Days in Status" field:
- Step one: Create custom field.
- Create a custom field: Go to Jira settings > Issues > Custom fields.
- Click on Create custom field and select the type Numeric or Date difference (depending on your Jira version).
- Give the field the name "Days in status". Assign this user-defined field to the required projects and screen masks.
- Step 2: Create automation rule:
- Navigate to the automation rules: Go to Project settings > Automation > Create rule.
- Select a trigger: Trigger: Field changed > Status (This trigger activates the rule as soon as the status of the problem changes).
- Step 3: Configure rule - calculate time difference:
- Add action - collect issue data: Add an action to save the current date: Action: "Edit Issue".
- Select your custom field "Days in status".
- Calculate the difference: You can use a Jira Smart Value like {{now.diff(issue.statuscategorychangedate).days}} to calculate the number of days that have passed since the last status change. This will return the time difference in days, which you can save in the custom field.
- Step 4: Test and activate the rule:
- Save and test: Perform some tests to ensure that the field is updated correctly when the status of an issue changes.
- Activate: Activate the rule and monitor its function.
Script-based solutions:
Develop scripts with Jira's API to retrieve and calculate time in status data:
import com.atlassian.jira.component.ComponentAccessor import java.sql.Timestamp import java.time.DayOfWeek import java.text.SimpleDateFormat
def myIssue = issue.getKey() Issue issue = ComponentAccessor.getIssueManager().getIssueObject("$myIssue")
// ... (additional code to calculate working days between statuses)
External data analysis:
Exports Jira data to external tools for analysis:
- Uses the BigQuery Connector for Jira to transfer data to Google BigQuery
- Creates customized reports with tools like Grafana
Use the Jira Workflow Toolbox (JWT) to calculate the time in status (only for Data Center)
- Fills a user-defined field with the current timestamp for transitions.
- Example: If you switch to "In progress", set "InProgressDateTime".
- Use formulas such as "OpenDuration = InProgressDateTime - Issue Created" to display the time in the status using functions such as "timeDifference()" to pursue
- Use "Jira Workflow Toolbox (JWT) Calculated Number Fields" (only for Data Center)
Considerations when implementing time recording
- Performance impact: Custom fields and JQL functions for time tracking status can put a strain on your Jira instance. Consider the impact on performance, especially with large data sets.
- Accuracy vs. simplicity: Simple solutions may not take into account working hours, holidays or complex workflow transitions. Determine the level of accuracy your team needs.
- Reporting requirements: Think about how you will use the time-in-state data. Do you need to make it visible in issues, in JQL queries or in external reports?
- Cost vs. functionality: Weigh up the cost of third-party apps against the development time for custom solutions and the respective functionality.
Best practices for tracking time spent in status
- Define clear goals: Understand why you're tracking time in status. Is it to identify bottlenecks, measure SLAs or improve estimates?
- Start simple: Start with built-in functions or simple custom fields before investing in complex solutions.
- Train your team: Make sure your team understands the importance of accurate status updates for meaningful time tracking.
- Regular review: Regularly review your time-in-status data to identify trends and opportunities for improvement in your workflow.
- Combine them with other key figures: Use time-in-state data together with other metrics such as cycle time and lead time to get a comprehensive overview of the efficiency of your processes.
Conclusion
While Jira does not provide a comprehensive analysis of "time spent in status", there are several solutions to close this gap. From using built-in features to implementing third-party apps or custom scripts, you can find a method that fits your team's needs and budget.
Remember that the goal of tracking "time spent in status in Jira" is to improve your processes and add value more efficiently. Choose a solution that delivers actionable insights without overloading your team or your Jira instance.
As you implement status tracking, you should continuously evaluate the impact on your workflow and adjust your approach as needed. With the right tools and processes in place, you'll gain valuable insights to optimize your Jira projects and increase your team's productivity.