# Deviation thresholds and targets

## What are deviation thresholds and targets?

When you take a reading on a brew sheet — say a gravity, pH, or temperature — Breww can compare it against the value you expected. **Targets** are the value or range you were aiming for, and **deviation thresholds** define how far the actual reading can drift before Breww flags it.

This gives you three useful things on the brew day:

* A clear **target line** on each reading so the brewer knows what they should be hitting.

* **Visual warnings** on the brew sheet when a reading falls outside the warning or out-of-spec band.

* An **Alerts tab** on the production dashboard that surfaces any out-of-range readings across recent batches in one place.

Targets are set per recipe action. Deviation thresholds are set centrally per **input variable** or **calculated variable**, with optional per-action overrides for the rare cases where a specific reading needs to behave differently.

> **Note:**
> Thresholds are only used to flag readings — they never block a brew day or stop you saving a recipe. A reading outside the threshold is still recorded normally; Breww just highlights it so it can be reviewed.

![](https://storage.googleapis.com/breww-user-uploads/markdown-embedded/e40ccf24e60562f0247cbd1379dfdeb2b03a6789cede6a832cfa65681772daae.png)

## How targets and thresholds fit together

Think of each reading as a number line:

* The **target** is the value (typically the midpoint of a range) the brewer is aiming for.

* A **warning** band sits on either side of the target — readings here are still acceptable but worth noticing.

* An **out-of-spec** band sits beyond the warning band — readings here are flagged on the dashboard's Alerts tab.

Thresholds are expressed as fixed offsets (e.g. ±0.5 °C) of the target. Breww renders this as a coloured bar next to each reading on the brew sheet so the brewer can see at a glance whether they are on target.

<br />

![](https://storage.googleapis.com/breww-user-uploads/markdown-embedded/11019855b92db8a06a57c50fbf11d05dc784c633ddf78106e31eef6931e9fd5d.png)

## Setting targets on a recipe action

Targets are configured on individual **reading** actions inside your recipe. Open the recipe, edit the reading action, and enter the value you expect to hit.

For most reading types you can enter either:

* A **single target value** (e.g. `5.2 pH`), or

* A **target range** with start and end values (e.g. `5.0`–`5.4 pH`).

For temperature, gravity, pH, weight and volume readings you also choose the unit. For **time of day** readings, the target is a clock time, entered with a time picker. For **duration** readings, the target is an elapsed length of time, typed as e.g. `45m` or `1h 30m`.

<br />

![](https://storage.googleapis.com/breww-user-uploads/markdown-embedded/7abafe818b19ab84e20d8f72e985753e6335c27aeafba3307193f0eb15176e79.png)

If you don't enter a target, the reading still works on the brew sheet — there's just no target line or threshold bar drawn next to it.

## System defaults vs. your own defaults

Breww ships with a sensible set of **system default** deviation thresholds for most measurement types (temperature, gravity, pH, volume, weight, time of day, duration). These are what you'll see on every variable until you decide to change them.

You can override the defaults for any input variable or calculated variable. Your overrides apply to every recipe in your account that uses that variable.

Thresholds live on the variable itself, so you'll find them on whichever of the two variable pages the variable appears on:

1. Go to **Production** -> **View** -> **Recipes**.
2. Click **Settings & options** -> **Input variables**, or **Settings & options** -> **Calculated variables**.
3. Each row lists the variable, its measurement type, and the thresholds that currently apply to it.

![The Input variables page, showing the measurement type and thresholds for each variable](https://storage.googleapis.com/breww-user-uploads/markdown-embedded/81cf821d530defe58729cc7f219a38e4917bcfda4f5d17cf20faae2cd7d0a7f9.png)

For each variable, you can:

* Click the **deviation alerts** (warning triangle) icon to open a thresholds-only form and set your own thresholds. This is available for Breww's system variables and for your own variables alike.

* Click the **revert** icon (where shown) to discard your override and fall back to the system default. Revert only applies to Breww's system variables, as they're the only ones with a system default to fall back to. To clear the thresholds on one of your own variables, open the same form, empty the offset boxes and save.

A variable that's still using the system default doesn't have your own override, so the revert button is hidden for that variable until you save an override.

> **Note:**
> Deviation thresholds used to have a combined **Deviation thresholds** page of their own, listing both kinds of variable together. It has been retired now that both variable pages do the same job in one place, and any old link or bookmark to it will take you to **Input variables**.

### Editing a variable's thresholds

In the edit form, you set:

* **Threshold unit**: the measurement unit your thresholds are expressed in (e.g. `°C`, `SG`, `pH`). The dropdown is restricted to units valid for the variable's measurement type.

* An **acceptable lower offset** and **acceptable upper offset**: the inner band, either side of the target.

* A **warning lower offset** and **warning upper offset**: the outer band. A reading beyond this band is out of spec.

Every band is entered as an offset from the target, in the unit you picked, with its lower and upper sides set separately. Enter the same figure on both sides for a symmetric band, or different figures where a reading is more forgiving in one direction than the other. You can define just one of the two bands if that's all you need, but a band needs both its lower and upper offset rather than one on its own.

A live preview at the bottom of the modal shows you exactly how the thresholds will render on the brew sheet, using a sample target value.

![The deviation thresholds form for an input variable, with its live preview](https://storage.googleapis.com/breww-user-uploads/markdown-embedded/2a3ed3c91807a176ce65436259cfae8562599c349ca5af94fecd7cee47ffe8e5.png)

> **Note:**
> For one of your own calculated variables, use the **deviation alerts** (warning triangle) button on the **Calculated variables** page rather than opening the variable for editing. It changes the thresholds on their own, so you skip the full formula form and its "this will change previous batches" confirmation, which doesn't apply when the formula isn't being touched.

> **Note:**
> Thresholds are stored in whichever unit you pick, but Breww will convert them for display so they always make sense alongside the reading's actual unit. For example, a threshold defined in `°C` will still render correctly when a brew sheet shows the reading in `°F`.

### Thresholds for time of day and duration values

**Time of day** and **Duration** variables (whether input variables or calculated variables) both use time units for their threshold bands — `second`, `minute`, `hour` or `day`. The bands are always offsets from the target, never absolute values.

For example, a duration target of `1h 30m` with an acceptable band of `± 5 minutes` is in spec anywhere between `1h 25m` and `1h 35m`. A time-of-day target of `08:00` with the same band is in spec between `07:55` and `08:05`.

The live preview, the brew sheet bar, and the PDF brew sheet all render these bands as clock times or durations rather than raw numbers, so they read the same way as the reading itself. See [Input variables and calculated variables](https://breww.com/docs/input-and-calculated-variables/) for more on the difference between the two types.

## Per-action threshold overrides

Most of the time, thresholds at the variable level are exactly what you want — set them once, and every reading/recipe using that variable picks them up automatically.

Occasionally, though, a single recipe action needs different thresholds. (For example, the same gravity input variable might be tighter at end-of-fermentation than at the start.) For these cases, every recipe reading and calculated-variable action has a **Deviation thresholds source** option:

* **Use linked variable deviation thresholds** (default) — the action inherits whatever thresholds are configured on its linked input or calculated variable.

* **Override thresholds** — the action defines its own thresholds, ignoring the variable's.

When you pick **Override**, the same threshold editor used on the central settings page appears inline on the action form, and a live preview shows how it will render with the action's target value.

> **Note:**
> If a recipe action references a variable that doesn't have any thresholds yet (and no per-action override has been set), Breww will show an inline warning on the action so you know the reading won't have a threshold preview until you configure them.

## Deviation thresholds on the brew sheet

When a brewer opens the brew sheet for a batch, every reading action that has a target shows the target value and, if thresholds are configured, the coloured threshold bar.

As the brewer enters their actual reading, a marker appears on the bar showing where the reading falls — green inside the target zone, amber inside the warning band, or red if it has gone out of spec.

The same target/threshold information is included on the **PDF brew sheet** so it's visible if you print the brew sheet for a paper-based brew day.

Where a reading is linked to an input variable and there's history from previous batches of the same beer, Breww also draws a small reading-history sparkline next to the target/threshold bar. The same target line and warning/out-of-spec colour bands are shown behind the sparkline, so the brewer can see at a glance how the current reading compares to recent brews against the same thresholds.

## The Alerts tab on the production dashboard

When a reading goes out of spec, Breww surfaces it on the **Alerts tab** of the production dashboard so it doesn't get lost mid-brew day.

The Alerts tab lists every brew sheet reading whose value falls in the out-of-spec band, across batches at the current site, within a configurable lookback window. Each row shows:

* The **batch** the reading belongs to.

* The **stage** and **turn** the reading was taken on (for multi-turn batches).

* The **variable** the reading or calculation is linked to. Rows for a calculated variable are shown with a calculator icon next to the variable name, so you can tell them apart from input-variable readings at a glance.

* A **value vs. threshold** preview showing the marker position on the threshold bar.

* Who recorded the reading and when (calculated values are shown as recorded automatically, since Breww works them out for you).

* Quick-access buttons to jump to the **batch** or its **brewing page**.

<br />

![](https://storage.googleapis.com/breww-user-uploads/markdown-embedded/484576ad0ad141f9782d53a193fdf689b4ecfd4aa997b78ca3d17b28de530290.png)

A small red badge on the **Alerts** tab itself shows the number of outstanding alerts so the team can spot them at a glance.

### Choosing whether a calculation appears on the Alerts tab

Both input variable readings and **calculated variables** can raise alerts when they fall outside their out-of-spec band. Input variable readings always do. For a calculated variable, you decide per recipe action whether an out-of-spec result should be flagged on the dashboard.

When you add or edit a calculation action on a recipe, you'll see a **Show alerts on the Production Dashboard** option. When it's enabled, calculated values that fall outside the acceptable threshold band will appear on the Alerts tab alongside your input variable readings. Disable it for calculations whose deviations you want to track on the brew sheet but don't want to actively flag for the team — the threshold bar still shows on the brew sheet, but an out-of-spec result won't surface as a dashboard alert.

> **Note:**
> A calculated variable only needs thresholds and a target for the alert toggle to be meaningful — if there's no target or no thresholds, there's nothing for Breww to compare the result against.

### Adjusting the lookback window

By default, the Alerts tab looks back two days (today + yesterday). You can change this:

1. Go to **Settings** -> **Production** -> **General production settings**.
2. Scroll to the **Alerts** section.
3. Set **Days to look back for production alerts**:

   * `0` = today only

   * `1` = today and yesterday

   * `2` = today plus the previous two days, and so on.
4. Save the form.

A shortcut button on the Alerts tab itself (**Adjust lookback period**) takes you straight to this setting.

> **Note:**
> If you raise the lookback window high enough that the number of candidate readings exceeds Breww's internal cap, the tab will show a notice telling you so. In that case, drop the lookback period back down to see the most recent alerts again.

## Tips for getting the most out of thresholds

* **Start with system defaults.** They cover most measurement types reasonably; only override with your own values when you have a clear reason.

* **Use brewery-level thresholds for general-purpose variables** (e.g. mash pH, OG). Use per-action overrides sparingly, for specific actions where a different tolerance genuinely applies.

* **Always set a target on important readings.** Without a target, no threshold bar can be drawn — even if thresholds are configured on the variable.

* **Tighten thresholds gradually.** Setting them too narrow at first will produce a lot of dashboard alerts; loosen until the alerts you do see are genuinely worth investigating.

* **Be selective with calculation alerts.** Turn on **Show alerts on the Production Dashboard** for the calculated variables that genuinely warrant attention (e.g. ABV or attenuation), and leave it off for calculations you only want to monitor on the brew sheet.

## Related guides

* [How to build your recipes and brew sheets in Breww](https://breww.com/docs/recipes-and-brew-sheets/)

* [Using your electronic brew sheet on a brew day](https://breww.com/docs/brew-sheets/)

* [Production dashboard](https://breww.com/docs/production-dashboard/)

* [Production settings](https://breww.com/docs/production-settings/)

* [Input variables and calculated variables](https://breww.com/docs/input-and-calculated-variables/)
