Universal Visual Builder

Universal Visual Builder

The Universal Visual Builder is the no-code report builder inside Report Builder. You choose which Jira records to read, drop fields into rows and columns, decide what each cell should show, and the report redraws as you go. No JQL, no scripting, no query language.

Most templates in the Reports Gallery are Universal Visual Builder reports with the fields already filled in, so everything here applies to them too.

Before you build: three ways in

Building from scratch is the last resort, not the first move. In order:

  1. Look for the report first. Search the reports list by name. In most teams the report already exists — someone built it and shared it. Opening it and adjusting the scope takes seconds.

  2. Then look for a template. The Gallery ships purpose-built reports — Workload, Timesheet, Time in Status, Status Distribution, Sprint Velocity and more. A template arrives with sensible fields and formatting already chosen; you change the scope and tune from there.

  3. Only then start from Blank (universal visual builder). Use it when nothing fits — an unusual cross-tab, or a field combination no template covers.

A pivot table with assignees down the side and issue types across the top
The result we are building: who is carrying how many issues, broken down by issue type.

The Configure panel

Three sections, matching the three questions every report has to answer.

Section

Answers

Section

Answers

Get data

Which Jira records should the report read?

Set chart and fields

How are they grouped, and what does each cell show?

Style

How should the result look?

Leave Auto-apply changes on while you are learning. Every change redraws the report immediately, which is the fastest way to understand what a setting does.

Step 1 — Get data

Looking for chooses the kind of record the report counts: Issues or Work logs. Pick Work logs when the report is about time people booked rather than about the issues themselves.

Scope chooses which records to read. Click the field and pick projects, epics, individual issues or saved Jira filters — you can combine several, and a report is never limited to one project. The counter next to Apply filtering previews how many issues you are about to pull in.

Two checkboxes widen the scope beyond what you picked: Include parent issues and Include child issues. Use them when you scope to a specific set but still want epics or subtasks counted.

Set the scope before anything else. Every field list, filter and total downstream is computed from it, so changing it later re-runs everything.

Switch to JQL exists for filters the pickers cannot express. It is optional — nothing in this guide needs it.

The Get data section with the Scope field
Get data — pick the projects, epics, issues or filters the report reads.

Step 2 — Decide the shape before you pick fields

The structure follows from one question: how many things am I measuring, and how many ways am I splitting them? Count the measures and the dimensions, then read off the answer.

Measures × dimensions

Use

Example

Measures × dimensions

Use

Example

1 × 0

Number

Total open issues, as a single figure for a dashboard

1 × 1 categorical

Pie or Doughnut if 2–6 values, otherwise Bar

Issues per priority

1 × 1 ordered or time

Bar Chart

Issues created per month

Several × 0 or 1

Bar Chart, one series per measure

Original vs remaining estimate per person

1 or more × 2

Pivot table

Assignee against issue type — the example on this page

A ranked list of issues

Simple table

The twenty oldest unresolved bugs

Some combinations are not allowed, and the builder will not let you save them:

  • Number takes exactly one measure and no groupings at all.

  • Simple table groups by issue only, with no columns.

  • Bar, Pie and Doughnut have no columns — they have one axis. Their slots are renamed accordingly: X Axis or Categories, and Values.

  • Only the pivot table, vertical or horizontal, can use both rows and columns.

Switching visualisation keeps your fields where they are. It is cheap to try a pivot, look at it as a bar chart, and switch back.

Step 3 — Put the fields in

Three slots decide the structure:

  • Rows grouping — what runs down the side.

  • Columns grouping — what runs across the top.

  • Cell content — what each cell shows where a row meets a column.

Use Add field for a grouping and Add cell content for a value. Any Jira field can be used, including your own custom fields.

If you have used other reporting tools, Cell content is what they call measures. It holds Count of Issues, Sum of Remaining Estimate, Time in Status, Progress by time and so on — and it can also hold a field, which turns each cell into a subchart.

Add more than one field to a slot to nest groupings — Assignee, then Issue Type underneath. Drag the six-dot handle to reorder; the order of the cards is the order of the nesting. The eye icon hides a level without deleting it, which is how you switch between a detailed and a summary view of the same report.

Set chart and fields showing Rows grouping, Columns grouping and Cell content
Assignee down the side, Issue Type across the top, Count of Issues in the cells.

Step 4 — Tune a field

Expand any field card to reach its own settings. They appear in a fixed order, and that order is not arbitrary — each setting is offered based on what the one above it produced:

field → Bucket by → Format → Filter

A date field bucketed by month produces months, so the formats offered are month formats and the filter offers months. Change the bucket to quarter and the format and filter lists change with it. This is why an option you expected sometimes is not there: something earlier in the chain is producing a different kind of value.

Setting

What it does

Setting

What it does

Name

Renames the field in the report. Jira is untouched.

Bucket by

Groups values instead of listing them one by one — dates by day, week, month, quarter or year; numbers into tens, hundreds or thousands.

Format

How values are printed. For durations, pretty gives Jira-style figures such as 1w 3d 1h using your working calendar instead of decimal hours.

Filter

Keeps only the values you choose.

Conditional Formatting

Colours the cell, its text or its border when a condition is met.

Apply to

Where the value is calculated: everywhere including totals, everywhere but with subtotals hidden, or only at intersections you pick by hand.

Grand totals

Totals row at the top or bottom, totals column left or right, or hidden.

Show empty rows, Show empty columns and Show empty values decide whether groups with no data are listed. Turn them off to compress a sparse report; leave them on when the absence of data is itself the finding.

Step 5 — Style

Fonts and weights, cell alignment, chart colour scheme and height, and Display report details, which shows or hides the scope summary above the table.

Pin rows and Pin columns keep headers, totals or both in view while scrolling a large report — worth turning on before sharing anything wide.

Read the result

Every number is clickable. Click a cell and choose Drill down to see the records behind it, with a breadcrumb showing which row and column you came from. Where you land follows what you clicked: a worklog measure opens worklogs, a status-duration measure opens the status transitions. Open issue navigator hands the same issues to Jira's own search.

Save and share

Name the report in the title field and click Add to My Reports. Then set who can view or edit it, export to CSV, XLSX or PDF, or place it on a Jira dashboard as a Report Builder gadget. The report stays live and recalculates from Jira each time it is opened.