---
title: Drift
nav: Drift
description: The four drift severity bands, what triggers each, and why an exchange-rate movement can never authorize a store write.
group: concepts
order: 5
status: shipped
updated: 2026-09-21
---

Drift is the gap that opens between what Paywall Parity expects and what is actually true — either because the economic data moved, or because someone changed a price in the store directly.

## The bands

Classification is on the absolute change ratio:

| Change         | Severity    | Behaviour                          |
| -------------- | ----------- | ---------------------------------- |
| below 5%       | Ignored     | Not recorded, not surfaced.        |
| 5% – under 10% | Mild        | Recorded. Visible in history.      |
| 10% – 20%      | Review      | Recorded and surfaced for review.  |
| above 20%      | Significant | Recorded and surfaced prominently. |

The 5% floor is the same threshold recommendations use. Below it, the movement is indistinguishable from rounding and FX noise.

## Store drift

If the expected price and the actual store price differ, that is store drift — someone edited the price in Play Console, or a deployment did not land as intended.

Store drift is only classified when both prices are in the **same currency**. A currency change is a different event entirely and is not expressible as a percentage, so it returns no drift rather than a misleading number.

Store drift alerts appear on the Recommendations page.

## Economic drift

When refreshed economic observations move a market's target materially, the recalculation produces a new recommendation and **supersedes** any stale open recommendation for the same market and plan.

Superseding rather than accumulating matters: two competing open recommendations for the same market is a decision trap, and whichever one a reviewer happens to click is arbitrary.

## Drift never writes

An economic movement produces a recommendation for a human to review. It cannot trigger a store change on its own, and there is no configuration that makes it do so.

This is a deliberate design constraint rather than a missing feature. Currency markets move every day; a system that repriced a global catalogue in response would be writing to your store constantly, on evidence that reverses within the week.

## What is not implemented

- A dedicated historical drift page. Drift is currently visible only as in-app alerts, not as a browsable history.
- Post-rounding materiality thresholds, cooldown, and hysteresis. A market oscillating around a band boundary will currently re-alert each time it crosses.
- Opt-in email notification delivery.
- Separation of new-customer pricing from existing-subscriber cohorts.
