Brasscog

TreeTotals for Jira

Rolls up story points and time across your issue hierarchy — epic → story → subtask — and writes the totals into fields you can actually use: in JQL, on boards, in filters and in Jira automation rules.

Jira Standard cannot sum values across a hierarchy at all. Premium shows the numbers but only as a display. TreeTotals puts them in a field, which is the part that makes them useful.

What you get

The app adds two read-only custom fields to your issues:

Field Contains
Rollup: Story Points sum of story points from this issue and everything below it
Rollup: Time Spent (h) sum of logged time from this issue and everything below it

Both are ordinary Jira fields. You can search them with JQL, put them on a board card, add them to a filter, or trigger an automation rule on them.

Issues with no children get their own value, not a blank — so a filter like "Rollup: Story Points" > 8 returns every matching issue, not just parents.

Setting it up

  1. Install TreeTotals from the Atlassian Marketplace.
  2. Open any issue. The TreeTotals panel appears in the right-hand column and shows the breakdown for that issue and its children.
  3. Add the rollup fields to a board card layout, a filter or a dashboard the same way you would add any other field.

Those two fields need no setup at all. The app finds your story point field automatically, including instances that have more than one. If you want to roll up something else, the next section shows how.

Rolling up your own fields

Story points and time cover most cases, but not all. If you track a budget, a cost, a risk score or an estimate of your own, you can roll that up too.

  1. Open Settings → Issues → Fields (or go straight to /jira/settings/issues/fields) and click Create new field.
  2. Pick the field type TreeTotals Rollup, name the field, and — this part matters — add it to at least one screen. A field that is on no screen is invisible to the app and stays empty forever.
  3. Back in the field list, find your new field, click ••• in the Actions column and choose Contexts and default values. On the page that opens, click Edit custom field config. It can take fifteen seconds to load.
  4. Choose:
Setting What it does
Source field the numeric field TreeTotals reads on each issue in the hierarchy
Method Sum, Maximum, Minimum, Average, or Count of issues with a value
Include the issue's own value off means children only

Values appear after the next change to any issue in the hierarchy.

You can create as many of these as you need — a sum of budget, a maximum of due estimates and an average of complexity can all live side by side.

Three things worth knowing. Average and Count only look at issues that actually have a value in the source field, so an empty estimate does not drag the average down. Minimum and Maximum stay empty when nothing in the hierarchy has a value, because writing a zero there would make Max <= 0 return issues that have no maximum at all. And time fields are rolled up in hours, matching the built-in Rollup: Time Spent (h) field — Jira stores them in seconds, but two rollup fields over the same quantity showing 7 and 25,200 would help nobody.

A rollup field cannot read another rollup field — the order in which they are calculated is not defined, so the result would depend on which one happened to be written first.

Using the fields

In JQL:

"Rollup: Story Points" >= 20 AND status != Done

In automation: trigger a rule on a change to a rollup field, or read it with a smart value to post a comment, send a notification or update another field.

On boards and dashboards: add the field to a card layout or a filter results gadget.

Why not Epic Sum Up?

Epic Sum Up is the category leader — a solid app with roll-up panels, gadgets and reports that display sums across your hierarchy. If a panel view is what you need, it delivers that well.

Where it stops short is JQL. Their FAQ is direct:

Can I JQL or sort by summed values?

JQL – no. ESU calculates summed values live, on-demand, so they aren't stored at the issue level.

The product manager said the same in a response to a customer review:

We decided to NOT cache the data for a JQL Search…

TreeTotals takes the opposite approach: it writes the totals into actual Jira fields. That makes them available in JQL queries, on board card layouts, in dashboard gadgets and in automation rules — not just as a panel.

The trade-off is a size ceiling (see Limits worth knowing below). ESU, which calculates on the fly, has none.

When totals refresh

Totals recalculate automatically when a child issue changes — its story points, its logged time, its parent link or its deletion. Recalculation is processed asynchronously: the change is queued immediately and totals typically update within about 35 seconds for small to medium hierarchies. Very large hierarchies may take a few minutes.

On first install, recalculation starts automatically for all epics — rollup fields fill in without waiting for any edit. A nightly reconciliation pass catches anything that slipped through.

Limits worth knowing before you install

The panel's live breakdown is limited to roughly 1,500 issues. For larger hierarchies the panel switches to showing the last stored rollup values with a note that they are "updated in the background." If the queue has not completed yet — right after a fresh install on a very large project, for example — the panel says "Recalculation in progress" until the values are ready.

Rollup field writes support hierarchies up to roughly 50,000 issues. Above that threshold the app skips the subtree rather than write partial totals.

Your data stays in Atlassian

TreeTotals runs entirely on Atlassian Forge. It has no servers, no database and no outbound network access — a restriction Atlassian enforces at the platform level, not something we merely promise. We never receive a copy of your data.

The app requests three permission scopes:

Scope Why
read:jira-work read the issues it has to add up
write:jira-work write the totals into the rollup fields
read:custom-field-contextual-configuration:jira read the settings of rollup fields you created — which source field and which method

It reads only what the sums need: issue identifiers, parent links, status, summary, logged time, story points and any source field you pick yourself. It does not read user profiles, descriptions, comments or attachments.

Details in our privacy policy.

Guides

Support

Write to support@brasscog.com — we reply within one business day. Bug reports and refund requests always reach a human.

Security issues go to security@brasscog.com. Please give us a chance to fix the problem before disclosing it publicly.