Statistics

Guardrail Metrics: The Checks That Stop a Bad Ship

What guardrail metrics are, how to set a degradation threshold before launch, and why a non-significant guardrail is not a cleared guardrail.

Flat illustration of a curved road with sturdy protective barriers along both edges and a small vehicle staying between them, in deep green tones

Guardrail metrics are the measures a change is not allowed to harm, even when the metric the test was built to move goes up. They exist because a winning primary metric is not the same thing as a safe ship, and the most common way teams get this wrong is to read a non-significant guardrail as a cleared one. This guide covers what a guardrail is and how it differs from a secondary metric, how to set the threshold that gives it teeth, the power arithmetic that quietly disarms most guardrails, and a starter set for ecommerce and SaaS. It is part of our complete guide to A/B testing and pairs with the design arithmetic in minimum detectable effect.

What guardrail metrics are, and what they are not

Dmitriev and colleagues, writing about metric interpretation at Microsoft in 2017, define guardrail metrics as measures that are not clearly indicative of the success of the feature being tested, but which the team does not want to significantly harm when making a ship decision. Page load time on a site like Bing or MSN is their canonical example: nobody launches a feature in order to make the page slower, and yet almost any feature added to a page increases load time a little. Small degradations are expected. Large ones are not allowed.

That definition draws a line that many experiment records blur. Four roles are worth keeping separate, because each one gets read differently.

The four roles a metric can play in one experimentData quality metrics decide whether the experiment is readable at all. The primary metric decides whether the change is good. Guardrail metrics decide whether the change is safe and can veto a ship. Diagnostic metrics explain why the primary metric moved and never decide anything on their own.One experiment, four kinds of metric, four different questionsData qualitysplit ratio, loggingloss, bot trafficis this readable?Primary metricthe one pre-declareddecision carrieris this good?Guardrailslatency, refunds,complaints, churnis this safe?Diagnosticsstep-by-step funnel,element click rateswhy did it move?fails: discard the testwins: candidate to shipbreached: veto powerdecides nothing aloneOnly two of the four can stop a launch, and only one of those two can stop a launch that the primary metric won.A metric that acquires veto power only after the numbers arrive is not a guardrail, it is a negotiation.
The roles are decided before launch. Writing them down is what stops a losing test from being rescued by a promoted diagnostic, and a harmful test from shipping past a demoted guardrail.

The distinction that matters most in practice is guardrail versus secondary metric. A secondary metric is read for direction and explanation. A guardrail carries a veto: it can block a ship the primary metric won. Because that is a real power, it has to be assigned in advance. A metric promoted to guardrail status after results arrive is being used to justify a decision already taken, and one demoted after results arrive is worse.

Deng and Shi, describing metric development at Bing in 2016, add a second guardrail role worth knowing: guardrails also stand in for the goal metric when the goal metric does not apply. Their example is a search organization whose goal metric counts long dwell time clicks, which is meaningless for the team building instant answers whose whole job is to satisfy the user without a click. That team needs guardrails that capture the experience the shared goal metric cannot see.

The threshold, not the p-value, is what gives a guardrail teeth

Here is the failure mode that costs the most, and it hides inside a sentence that sounds responsible: “the guardrails came back not significant, so we shipped.”

A test is sized for its primary metric. Guardrails are usually rarer events with much lower baselines, and sample size scales with roughly one over the square of the effect you want to see, so a lower baseline buys much less resolution at the same visitor count. Take a checkout test sized to detect a 10 percent relative move on a 4.0 percent purchase rate: that needs 39,475 visitors per variation, 78,950 in total, about 14 days at 40,000 eligible visitors a week. At that exact sample, here is what each metric on the dashboard can actually resolve.

Metric Baseline Smallest relative move detectable at 39,475 per variation In percentage points
Add to cart 22.0 percent about 3.8 percent 0.83 pp
Checkout started 9.0 percent about 6.4 percent 0.58 pp
Purchase (the primary metric) 4.0 percent 10.0 percent 0.40 pp
Refund rate 1.2 percent about 18.9 percent 0.23 pp
Support contact rate 0.8 percent about 23.5 percent 0.19 pp
Unsubscribe rate 0.3 percent about 39.8 percent 0.12 pp

Read the last three rows slowly. In a test that is perfectly well powered for its purpose, a refund rate that comes back “not significant” is consistent with anything from a real improvement to a 19 percent degradation, and an unsubscribe rate that comes back quiet is consistent with a 40 percent degradation. Nothing was cleared. The question was never asked with enough data to have an answer.

Dmitriev and colleagues document exactly this at MSN.com. Total page views per user rose 0.5 percent in one experiment with a non-significant p-value. For a business at that scale, a 0.5 percent move in page views is commercially meaningful. The confidence interval turned out to span roughly plus or minus 5 percent, and the design could only detect a change of 7.8 percent or larger at 80 percent power. Their conclusion is the sentence to hang above the dashboard: we cannot assume that we did not impact the underpowered metric.

Set your own baselines and see what your traffic resolves:

Sample size calculator
-Visitors per variation
-Total (2 variations)
-Estimated duration

Two-proportion normal approximation, 2 variations (50/50). Tweak the inputs and watch it update live.

The fix is not statistical, it is procedural. Declare a threshold for each guardrail before launch, then compare the upper bound of the confidence interval against that threshold instead of comparing the p-value against 0.05.

Reading a guardrail against its threshold instead of against a p-valueFour confidence intervals compared against a declared degradation threshold. An interval entirely below the threshold clears the guardrail. An interval crossing the threshold leaves the question unanswered even when the p-value is above 0.05. An interval entirely above the threshold is a breach. A very wide interval means the guardrail was never measured with useful precision.Same p-value story, four different decisionsno changedeclared thresholdclearedAnot answeredBbreachCDnever measuredB and D both report a p-value above 0.05. Only A earns the word “cleared”, and only C is an actual alarm.Degradation increases to the right. The threshold is a business number, written down before the test starts.
Four guardrails, one dashboard, one p-value column. The column that separates them is the confidence interval, which is why the interval belongs next to every guardrail in the experiment record.

Worked example: the primary metric wins and the guardrail says nothing

A checkout redesign runs at the sample above: 39,475 visitors per variation, purchase baseline 4.0 percent, refund rate baseline 1.2 percent. The threshold declared before launch is that refunds must not rise by more than 10 percent relative, which at this baseline is plus 0.12 percentage points. Run these numbers yourself:

Statistical significance calculator
Control (A)
Variation (B)
Control (A) · Rate-
Variation (B) · Rate-
Relative lift-
p-value-
95% CI of the difference-

Two-sided two-proportion z-test. "Not significant" almost always means not enough sample, not that the versions are equal.

The primary metric. Control finishes with 1,579 purchases on 39,475 visitors (4.000 percent), the variation with 1,745 (4.421 percent). That is z = 2.94, p-value = 0.0033, relative improvement +10.5 percent, confidence interval on the difference of +0.14 to +0.70 percentage points. A clean win, exactly the size the test was designed to find.

The guardrail. Refunds finish at 474 in control (1.201 percent) and 512 in the variation (1.297 percent). That is a +8.0 percent relative move in the wrong direction, with z = 1.22 and a p-value of 0.2233. The naive read is that the guardrail is clear.

It is not. The confidence interval on that difference runs from -0.059 to +0.251 percentage points, and the upper bound of +0.251 pp is +20.9 percent relative on a 1.2 percent baseline. The declared threshold was +0.12 pp. The interval is roughly twice as wide as the number the business said it could tolerate, so this test simply cannot say whether the redesign stayed inside the limit. To clear a 10 percent relative degradation properly, the refund rate would need about 135,624 visitors per variation, roughly 48 days of traffic instead of 14.

For contrast, here is what a guardrail alarm actually looks like at the same sample: refunds at 474 against 592 is +24.9 percent relative, z = 3.64, p-value = 0.00027, interval +0.138 to +0.460 percentage points. Entirely above the threshold, and no reading of that result ships without a conversation.

The honest write-up of the first case is three lines: primary metric up 10.5 percent and significant; refund rate directionally up 8.0 percent, interval -0.06 to +0.25 pp against a +0.12 pp threshold, not cleared at this sample; recommended action is to ship with refund rate monitored in a staged rollout for four weeks. That is a different decision from “guardrails clear, shipping”, and it is the decision the data supports.

How many guardrails, and the false alarm arithmetic

Guardrails are cheap to add and expensive to ignore, which is how teams end up with a list of fifteen and a habit of waving them all away. The arithmetic is unforgiving: every independent guardrail read at a 5 percent threshold adds its own chance of alarming by pure luck.

Guardrails watched Chance at least one alarms by chance alone
1 5.0 percent
2 9.8 percent
3 14.3 percent
4 18.5 percent
5 22.6 percent
6 26.5 percent
8 33.7 percent
10 40.1 percent

At ten guardrails, two tests in five will show a red cell that means nothing. The team learns, correctly, that red cells are usually noise, and then misses the one that was not. Three to six standing guardrails, each with a written threshold, beats fifteen watched loosely. Add a test-specific guardrail only when the change plausibly threatens something the standing set does not cover, and treat a breach as a trigger for a confirmation run rather than as a verdict, the same discipline that applies to a borderline win on the primary metric. The correction methods for deciding on several metrics at once are covered in testing multiple variants.

A starter set of guardrail metrics for ecommerce and SaaS

Guardrails are business-specific, but the categories repeat. The set below is a starting point, not a standard, and the threshold column is the part your team has to fill in with real numbers.

Category Ecommerce guardrail SaaS guardrail Why it earns veto power
Speed Page load time at the 75th percentile Time to interactive on the core app view The 2013 Bing slowdown experiment found every 100 milliseconds of improvement was worth about 0.6 percent of revenue
Regret Refund and return rate Cancellation within the first 30 days A conversion win paid for by buyers who did not want the product is not a win
Friction cost Support contacts per 1,000 orders Support tickets per 100 new accounts Moves cost from the funnel onto a team that does not appear in the test result
Reachability Email unsubscribe rate Notification opt-out rate Spends a durable asset to buy a one-off conversion
Quality of the win Average order value Plan mix, share landing on the entry tier Detects a lift built entirely on discounting or downgrading
Reliability Client error rate on checkout Crash-free session rate The failure mode that never shows up in a conversion rate at all

Two notes on that table. First, the speed row is not a soft guardrail. The 2013 account of experimentation at Bing describes a deliberate slowdown experiment, 10 percent of users slowed by 100 milliseconds and another 10 percent by 250 milliseconds for two weeks, and reports that every 100 milliseconds of improvement was worth roughly 0.6 percent in revenue. That result is specific to Bing at that time and should not be transplanted as a number, but it establishes that latency is a real commercial variable, not a hygiene concern.

Second, the same paper contains a warning that belongs in this article. Its authors flag a published claim from another company that a 200 millisecond delay did not matter, and argue the more likely explanation is that the experiment lacked the statistical power to detect the difference rather than that the difference did not exist. That is the underpowered guardrail failure appearing in public, in a widely read post, from a competent team. It is not an exotic mistake.

The ship decision when guardrails are read correctlyAfter data quality passes and the primary metric wins, each guardrail interval is compared against its declared threshold. An interval entirely inside the threshold ships. An interval crossing the threshold is recorded as unmeasured and ships only with monitoring in a staged rollout. An interval entirely past the threshold requires an explicit written trade-off from the owner of that metric.What happens after the primary metric winsdata quality oksplit, logging, botsprimary metric winspre-declared, one onlyfor each guardrail:interval against thresholdinterval inside thresholdgenuinely clearedshipinterval crosses itrecord as unmeasuredship with monitoringinterval past thresholdbreach, owner decideswritten trade-offThe middle box is the one most dashboards do not have. Without it, every unmeasured guardrail is silently filed as cleared.Note that no box says “override quietly”: a breach can still ship, but only with a name attached to the decision.
Three outcomes, not two. The middle column is where most of the risk actually lives, and it is the column that disappears when a guardrail is read as a p-value.

Common guardrail mistakes

Mistake What it produces
Reading a non-significant guardrail as cleared Real degradations ship, and the program cannot tell a safe launch from an unexamined one
Choosing guardrails after seeing the results The list becomes whatever supports the decision already taken
No written threshold Every guardrail conversation restarts from scratch and lands wherever the loudest person wants
Fifteen guardrails on the dashboard About two tests in five show a red cell by chance, and the team learns to ignore red cells
Treating any breach as an automatic block Guardrails get quietly removed instead of being reasoned about, because small degradations are normal
No owner per guardrail A breach becomes a group discussion with no decision and the launch proceeds by default
Guardrails only in the test, never after ship The rare and slow harms, churn and refunds especially, are exactly the ones a two-week test cannot see

If the recurring problem is that your guardrails are never powered enough to say anything, the structural answers are variance reduction, covered in our guide to CUPED, or accepting the guardrail as post-ship monitoring in a staged rollout rather than pretending the experiment answered it.

Automate this with Donnu

A guardrail only works if its threshold exists before the test starts and its interval is visible next to the verdict, not buried two clicks away. Donnu A/B keeps declared guardrails and their thresholds attached to the experiment, reports the confidence interval alongside every guardrail rather than a lone significance flag, and marks a guardrail as unmeasured when the sample cannot resolve the declared threshold instead of showing a reassuring green tick. When a change wins the primary metric and leaves a guardrail unanswered, that shows up as the open question it is.

Start a free 14-day trial and set thresholds for your own guardrails before the next launch.

References

Read also: Minimum detectable effect · A/B testing statistical significance · Sample ratio mismatch · Common A/B testing mistakes · Free statistical power calculator · Leia em português

Frequently asked questions

What are guardrail metrics in A/B testing?
Guardrail metrics are measures you do not want a shipped change to harm, even though improving them is not the point of the test. Dmitriev and colleagues (KDD 2017) define them as metrics that are not clearly indicative of the success of the feature being tested, but that the team does not want to significantly harm when making a ship decision. Page load time is the canonical example: no feature is launched to make the page faster, but a feature that makes it much slower should not ship. The primary metric decides whether the change is good; the guardrails decide whether it is safe.
Is a guardrail with a non-significant p-value cleared?
No, and this is the single most expensive misreading in the topic. A test powered for a 4 percent primary metric collects enough sample to resolve a 10 percent relative move there, but a refund rate sitting at a 1.2 percent baseline only resolves about a 19 percent relative move at that same sample. A non-significant guardrail in that test is consistent with anything from a real improvement to a 19 percent degradation. Dmitriev and colleagues (KDD 2017) document exactly this case at MSN.com, where a metric moved 0.5 percent with a non-significant p-value while the design could only detect 7.8 percent or larger. Read the confidence interval, not the verdict.
How do I set a guardrail threshold?
Name the largest degradation the business would accept in exchange for the win the test is chasing, write it down before launch, and then compare the upper bound of the confidence interval against that number rather than comparing the p-value against 0.05. If the interval upper bound sits below the threshold, the guardrail is genuinely cleared at this sample. If it sits above, the test simply did not answer the question, whatever the p-value says. Setting the threshold after seeing the data turns the guardrail into a formality.
How many guardrail metrics should a test have?
Few enough that each one is monitored seriously, which in practice means three to six for most teams. Guardrails multiply false alarms: at a 5 percent threshold, the chance that at least one of five independent guardrails crosses the line by pure chance is about 22.6 percent, and with eight it is about 33.7 percent. A long guardrail list trains the team to wave alarms away, which is worse than having no guardrails at all. Keep the standing set small and add a test-specific guardrail only when the change plausibly threatens something the standing set does not cover.
What is the difference between a guardrail metric and a secondary metric?
A secondary metric helps explain the primary result and is read for direction and diagnosis. A guardrail carries veto power: it can block a ship even when the primary metric wins. That difference has to be declared before launch, because a metric promoted to guardrail status after the results arrive is being used to justify a decision already made. Deng and Shi (KDD 2016) also describe a second guardrail role, standing in for the goal metric in cases where the goal metric does not apply to the team or surface being tested.
Do guardrails need the same statistical power as the primary metric?
Ideally yes, and in practice almost never, which is why the threshold framing matters. Dmitriev and colleagues (KDD 2017) recommend a priori power analysis for at least the OEC and the guardrail metrics, and at least 80 percent power to detect changes small enough to matter commercially. When the traffic to power a rare guardrail does not exist, the honest options are to accept it as directional monitoring with the detectable range stated openly, to run a longer dedicated safety test after ship, or to watch the guardrail in a staged rollout instead of in the experiment.
Should a guardrail alarm always stop the launch?
Not automatically, but it should always force an explicit decision by a named person rather than a silent override. Small degradations in guardrails are expected: Dmitriev and colleagues note that almost any added feature slightly increases page load time. The useful rule is that a guardrail inside its declared threshold ships without discussion, a guardrail past its threshold ships only with a written trade-off accepted by whoever owns that metric, and a guardrail whose interval is too wide to tell gets recorded as unmeasured rather than as passed.