---
title: "Track production against shift goals"
description: "Shift Production, at /production?select=part, lists every operation that has run this shift with its calculated goal, good count, pace and hourly bars, and expands each operation into one row per machine. The Progress gauge is green at or above the machine's OEE goal and red below it, with no orange. Goals here are read-only: the calculated goal comes from the operation's ideal cycle time in the Parts List, and the percentage that colors the gauge comes from the OEE goal. Six filters write themselves into the URL, which is what makes the board sendable to a TV."
category: "Watch production"
source_url: "https://www.iotflows.com/docs/production/shift-production/"
---
# Track production against shift goals

See whether this shift will hit its numbers, operation by operation and machine by machine.

Shift Production is the board you leave open while a shift runs. It lists every operation that has produced since the shift started, with the parts counted so far against the goal for the shift, the pace each machine is holding, and an hourly bar chart showing where the output landed.

Nothing on this page is editable. It reads the numbers other pages set, which is what makes it safe to put on a screen the whole cell can see.

**Before you start**

- Create the part and at least one operation, and assign the operation to a machine. See [Create parts and operations](/docs/production/parts-and-operations/).
- Set an ideal cycle time on the operation. Without one, every goal on this page reads `0`. See [Set cycle times and downtime filters](/docs/production/cycle-times-and-filters/).
- Have your shifts defined for the organization. See [Shifts and time zone](/docs/admin/shifts-and-timezone/).

There is no role gate. Anyone who can see a machine can read its production board.

## Read the board
Open **Production**, then the **Shift Production** tab, at `/production?select=part`. On a phone the tab is labeled **Shift**.

Every row is one operation, with the part it produces named underneath, for example `OP100-CUTTING-BLANK` over `Aluminum can`. Six columns follow it.

An *OEE goal* is the single target percentage every gauge in IoTFlows is colored against. Each machine inherits the organization's until you give it one of its own. See [Set OEE and utilization goals](/docs/monitoring/oee-goals/).

| Column | What it shows |
|---|---|
| **Operation** | The operation name, the part beneath it, and the part picture where one is set |
| **Calculated Goal** | The number of good parts this operation should finish during the shift |
| **Progress** | A half gauge. The center number is good parts made so far, labeled with the operation's own unit, and the arc fills to the percentage of the goal reached. A tick on the arc marks the OEE goal |
| **Production Rate** | Three figures, **Ideal**, **Goal** and **Actual**, over a bar drawing the measured cycle time with an arrow at the ideal. The swap arrow flips all three between a cycle time and a rate per minute, for example `00:00:00.50` and `120.0 ops/min` |
| **Quality** | Good parts as a percentage of everything counted, with the bad count beneath it in red |
| **Hourly Production** | One bar per clock hour of the shift |

An operation that runs on more than one machine carries a chevron at the left of its row. Select it to expand the operation into one line per machine, carrying the same columns. That is the only place the board separates two machines running the same operation, so it is where you go when the operation total is behind and you need to know which machine is dragging it.

Operations with a *quantity per cycle* other than 1, meaning one cycle that yields more than one part, draw a second gauge to the left of Progress counting cycles rather than parts.

![The Shift Production board. Six operation rows under the column headings Operation, Calculated Goal, Progress, Production Rate, Quality and Hourly Production, each expanded into the machine line beneath it with its own gauge and hourly bars. Four Progress gauges are green and two, OP30-ASSEMBLY and OP400-CLEANING-DESIGN, are red](/images/production/prod-shift-01.webp)

*Live shift production. Counts per operation and per machine against the shift goal.*

**The gauges are green or red, never orange.** The Progress gauge draws green while the percentage of the goal reached is at or above the machine's OEE goal, and red below it. The cycle-time bar underneath the rates is green while the measured cycle is faster than the ideal, and red the moment it reaches or passes the arrow. See [Set OEE and utilization goals](/docs/monitoring/oee-goals/#where).

**You do not need this page to know whether a machine is running.** Machine state, uptime and downtime live on the Assets page and do not need a part, an operation or a cycle time. See [Monitor your fleet on the Assets page](/docs/monitoring/assets-overview/).

## Read the hourly bars
Every operation row, and every machine row inside it, draws one bar per clock hour since the shift began. Good parts go up from the zero line and scrap hangs below it in red. Hover a bar for its **Good** and **Bad** counts.

The bar color is the hour's own verdict. Blue means the hour met or beat its hourly goal; amber means it fell short. The hourly goal comes from the ideal cycle time and the machine's goal, see [Production metrics](/docs/monitoring/metrics-reference/#production).

This is the part of the row that does not average. An operation can sit at 96% of its shift goal with a green gauge and still carry one amber hour that lost 60 parts, and that hour is the one worth asking about while the shift is still running.

![An hourly production bar chart for one operation, OP10-MACHINING on Bevel Gear 2, across ten hours of a shift. Nine bars are blue and the last, the 5 PM hour, is amber and visibly shorter, marked with a violet callout arrow](/images/production/prod-shift-02.webp)

*Hourly production against the calculated goal.*

## Filter the board
Six filters sit across the top of the page, with **Reset filters** at the end of them.

| Filter | Values | Effect |
|---|---|---|
| **Parts** | Any part in the organization, multi-select | Shows only operations that produce the selected parts |
| **Departments** | Any department, multi-select | Shows only operations running on machines in those departments |
| **Machine type** | Any machine type, multi-select | Shows only operations running on that class of equipment |
| **Tags** | Any asset tag, multi-select | Shows only operations on tagged machines |
| **Sort by** | Name (A to Z), Name (Z to A), Department, Machine type | Reorders the rows. It does not sort by progress or by rate |
| **Shift** | A named shift, **All Day**, or **Custom Time** with your own start and end in 30-minute increments, on yesterday or any past date | Sets the window every count, goal and bar on the page is calculated over |

**Shift** defaults to the shift you are in right now, or to **All Day** when the current time falls outside every named shift. The filter is the same control the Assets page carries, see [Choose the window](/docs/monitoring/assets-overview/#window).

![The Shift Production filter bar wrapped onto two rows, with six numbered callouts, reading Part, Department, Machine type, Tag, Sort by set to Name (A to Z) and Shift set to Day Shift 2026-09-18, followed by a Reset Filters button](/images/production/prod-shift-03.webp)

*The six filters on the shift view.*

Every filter writes itself into the address bar, so the URL is the view. Copy it, bookmark it, or send it to a screen and it reopens filtered exactly as you left it. **Reset filters** clears all six and returns the board to the current shift.

## Put the board on a TV
The board is built to be sent to a wall display, and the control that makes it readable from across a cell is the **Expand Operations** switch at the top right.

1. Filter the board down to the cell the screen belongs to, usually with **Departments** or **Tags**.
2. Set the switch. Its label names what flipping it will do: **Collapse Operations** while machine rows are showing, **Expand Operations** while they are hidden. Collapsed, each operation is one line and its per-machine rows are hidden.
3. Add `&hide_tabs=true` to the URL to drop the Scheduler, Work Queue, Parts List, Historical and Insights tab bar from the top of the page. This is read when the page loads, so it has to be in the URL before you send it.
4. Copy the address bar and send it to the screen. See [Send a view to a paired screen](/docs/monitoring/wallboards/#send).

![The Shift Production board collapsed for a wall display. Nine operations render as nine single lines, each one gauge, one rate and one hourly bar chart, with no machine rows beneath them and no tab bar across the top. The switch at the top right reads Expand Operations](/images/production/prod-shift-04.webp)

*TV collapse mode, for a wallboard at the cell.*

The collapse state travels in the URL alongside the filters, as `operations_expanded` and `assets_expanded`, so the screen opens the way your browser looked.

**The board has no refresh timer of its own.** It loads its numbers when the page opens and reloads them whenever you change a filter or flip the switch, unlike the Assets page, which refreshes every minute. Reload the page to catch a browser tab up.

## Where the goals come from
Two different goals color this page, and neither one is set here.

| Goal | Set on | Applies to |
|---|---|---|
| **Calculated Goal**, a part count | The operation's ideal cycle time in the Parts List. See [Set cycle times and downtime filters](/docs/production/cycle-times-and-filters/) | One operation, on every machine that runs it |
| **OEE goal**, a percentage | The organization, or one machine where you have overridden it. See [Set OEE and utilization goals](/docs/monitoring/oee-goals/#machine) | Every gauge on the machine, here and on the Assets page |

The calculated goal is derived for you from the shift, not typed in:

```
Goal = (Shift Duration - Expected Downtime) / Cycle Time
```

Expected downtime is the historical average for that operation and machine, which is why a machine with a long changeover history is given a goal a lower one would not get.

**Goals on this page are read-only, and there is no per-operation override.** If a goal is wrong, the number behind it is wrong. Change the cycle time in the Parts List to move the calculated goal, and change the OEE goal to move the threshold the gauge is colored against. Both recalculate on the next load.

To reach the cycle time from here, select **Add/Edit Parts** at the top right, then edit the operation's ideal cycle time. Goals recalculate for future shifts; the shift already under way keeps the goal it started with.

## When a number looks wrong
| Symptom | Cause | Fix |
|---|---|---|
| **Calculated Goal** reads `0` | The operation has no ideal cycle time | Set one in the Parts List. See [Set cycle times and downtime filters](/docs/production/cycle-times-and-filters/) |
| "There are no parts in production for this shift." | Nothing has been counted in the selected window | Check the **Shift** filter before you check the machine. A named shift that ended hours ago shows the shift, not today |
| The count does not match the hand count on the floor | The operation's detection algorithm is reading the signal wrong | See [Troubleshoot inaccurate part counts](/docs/production/troubleshoot-part-counts/) and [Choose a production tracking algorithm](/docs/production/choose-an-algorithm/) |
| **Quality** reads 100% with scrap in the bin | Scrap counts only once it is logged against the job | See [Log scrap and manage scrap reasons](/docs/production/log-scrap/) |
| An operation is behind but every machine row looks fine | The operation is split across machines and no single one is far off | Read the hourly bars rather than the totals. One amber hour on each of three machines is the same lost shift |
| The numbers have not moved in an hour | The page loaded before those parts were counted | Reload. The board has no timer, see [Put the board on a TV](#tv) |

Use this board for the shift in front of you. To compare one shift against last week, or to export the counts, go to [Compare production over weeks and months](/docs/production/historical-production/): Shift Production itself has no export.

## See also
- [Set cycle times and downtime filters](/docs/production/cycle-times-and-filters/)
- [Set OEE and utilization goals](/docs/monitoring/oee-goals/)
- [Compare production over weeks and months](/docs/production/historical-production/)
- [Display a wallboard on a TV](/docs/monitoring/wallboards/)
- [Metrics](/docs/monitoring/metrics-reference/#production)
