Flow metrics – work in progress, throughput, arrivals and lead time – are usually asked for as one overview, while Jira spreads them over the Control Chart, the Cumulative Flow Diagram and a handful of saved filters. A Confluence page can put them side by side, live from Jira: CelesteCS Math for Confluence counts issues with JQL, and CelesteCS Reporting for Confluence lists the resolved issues with their lead time and the average in the footer.

Works on Confluence Cloud and Data Center. On Cloud insert the Cloud variants of the macros.

Confluence page with work in progress, throughput this week and last week, arrivals this week counted from Jira, and a table of resolved stories with created date, resolved date, lead time in days and the average lead time

1. WIP, throughput and arrivals with Math

Create a small table and put a Numerical Expression macro into each value cell. Every formula is one JQL count:

MetricFormula
Work in progressJIRAISSUECOUNT("project = ABC AND statusCategory = 'In Progress'")
Throughput, this weekJIRAISSUECOUNT("project = ABC AND resolved >= startOfWeek()")
Throughput, last weekJIRAISSUECOUNT("project = ABC AND resolved >= startOfWeek(-1) AND resolved < startOfWeek()")
Arrivals, this weekJIRAISSUECOUNT("project = ABC AND created >= startOfWeek()")

Use single quotes inside the JQL, as in 'In Progress', so they do not clash with the double quotes of the formula. One row per week with startOfWeek(-1), startOfWeek(-2) and so on, plus a CelesteCS Chart macro with Chart type: Line, turns throughput into a trend; A weekly trend chart of Jira issue counts shows that step by step.

2. Lead time per issue with Reporting

Insert a Reporting Table View with a Reporting Jira Data Provider inside:

  • Query: project = ABC AND issuetype = Story AND resolved >= -30d ORDER BY resolved DESC
  • Fields: summary,created,resolutiondate

Then add one Reporting Table Item per column:

ColumnBody (Single expression)Footer
Issue[CurrentItem.key] [CurrentItem.fields.summary] (Text and expressions in square braces)Text: Average
CreatedTEXT(DATEVALUE(CurrentItem.fields.created); "YYYY-MM-DD")
ResolvedTEXT(DATEVALUE(CurrentItem.fields.resolutiondate); "YYYY-MM-DD")
Lead time (days)DAYS(DATEVALUE(CurrentItem.fields.resolutiondate); DATEVALUE(CurrentItem.fields.created)), Format: Number, 1 decimalAggregate: Average

Reporting separates function arguments with a semicolon. The footer average is the mean lead time of the period; change -30d in the query to look at a sprint, a quarter or a release instead.

3. What this does not cover

Lead time here runs from creation to resolution. Cycle time – from the first move to In Progress until Done – and time in each status need the issue history, which JQL fields do not carry; for those, the Control Chart or a time-in-status app is the right tool. WIP, throughput, arrivals and lead time, however, stay on one page that updates on every view.

Try it in your own Confluence: CelesteCS Reporting for Confluence on the Atlassian Marketplace – free trial for Cloud and Data Center. This example also uses CelesteCS Math for Confluence.

Reporting saves you time? A review on the Marketplace helps other teams find it.