# Checks and verdicts

> The machine checks Checkbox runs at each lifecycle stage, what pass, fail, needs_review and not_applicable mean, and how scores and the insurable flag are computed.

A **check** verifies one observable thing — "the consent checkbox is not pre-checked", "a trial reminder arrived inside
the window". Checks are implemented once and reused by every law that requires the same thing; the
[catalog](https://checkbox.site/docs/concepts/requirements) maps requirements to checks.

## Verdicts {#verdicts}

| Status | Meaning |
|---|---|
| `pass` | Observed, and what was observed meets the requirement (an automated assessment, not a legal determination). A check never passes for lack of data. |
| `fail` | Observed, and it does not meet the requirement. The result says what was seen and how to fix it. |
| `needs_review` | Checkbox lacks the evidence to decide, or a person must judge (for example "clear and conspicuous" on a page Checkbox cannot restyle). The result says which. |
| `not_applicable` | No applicable requirement uses the check (for example trial checks without a free trial). |

A preflight result's `verdict` is the worst status among its checks: `fail` > `needs_review` > `pass`
(`not_applicable` when nothing applies).

## Evidence sources {#sources}

| Source | What it provides |
|---|---|
| Synthetic shopper | Headless Chromium visits the checkout from each state, on desktop and mobile, optionally completes a sign-up and tries to cancel online |
| Snippet | What real visitors see on your own pages, including A/B variants; content changes trigger a re-scan. Snippet captures corroborate: they never produce a pass on their own |
| Billing platform | Plans, trials, portal and checkout settings; webhooks become lifecycle events |
| Email | Your acknowledgment and reminder emails, BCC'd to the site's inbound address or received during a [test subscription](https://checkbox.site/docs/guides/test-runs) |
| Policies | Your Terms, refund and cancellation pages, fetched and checked for consistency |

## Every check {#all-checks}

### Sign-up

| Check | What it verifies | Laws that require it |
|---|---|---|
| `signup.disclosure.autorenew_language` | Discloses that the subscription renews automatically until canceled | 25 jurisdictions |
| `signup.disclosure.price` | Discloses the recurring charge amount | 22 jurisdictions |
| `signup.disclosure.frequency` | Discloses the billing frequency | 17 jurisdictions |
| `signup.disclosure.cancellation_policy` | Discloses the cancellation policy and how to cancel | 24 jurisdictions |
| `signup.disclosure.trial_terms` | Discloses free-trial length and the charge after the trial | 16 jurisdictions |
| `signup.disclosure.term_length` | Discloses the length of the renewal term (or that service is continuous) and any minimum purchase obligation | 20 jurisdictions |
| `signup.disclosure.proximity` | Terms appear before the purchase button and in visual proximity to it | 16 jurisdictions |
| `signup.disclosure.conspicuous` | Terms are clear and conspicuous (size, contrast, not hidden) | 27 jurisdictions |
| `signup.consent.affirmative` | Obtains affirmative consent to the automatic-renewal terms | 20 jurisdictions |
| `signup.consent.not_prechecked` | Consent checkboxes are not pre-checked | 20 jurisdictions |

### Acknowledgment

| Check | What it verifies | Laws that require it |
|---|---|---|
| `confirmation.email.sent` | Sends an acknowledgment after sign-up in a retainable form | 15 jurisdictions |
| `confirmation.email.terms` | Acknowledgment restates the automatic-renewal terms | 15 jurisdictions |
| `confirmation.email.cancellation_instructions` | Acknowledgment explains how to cancel | 15 jurisdictions |
| `confirmation.email.trial_terms` | Acknowledgment explains how to cancel before the trial converts to paid | 12 jurisdictions |

### Reminders

| Check | What it verifies | Laws that require it |
|---|---|---|
| `reminder.trial_ending` | Sends a reminder before a free trial converts to a paid subscription | 13 jurisdictions |
| `reminder.annual_renewal` | Sends a renewal reminder before long-term (e.g. annual) subscriptions renew | 22 jurisdictions |
| `reminder.annual_terms_notice` | Sends an annual reminder of the subscription terms and how to cancel (incl. monthly/continuous plans) | 5 jurisdictions |
| `reminder.charge_notice` | Sends a notice before (or promptly after) recurring charges where required | 2 jurisdictions |
| `reminder.price_change` | Gives advance notice of price changes | 16 jurisdictions |

### Cancellation

| Check | What it verifies | Laws that require it |
|---|---|---|
| `cancel.online_available` | Consumers who signed up online can cancel online | 19 jurisdictions |
| `cancel.mechanism_findable` | Cancellation option is easy to find (e.g. prominent link in account) | 25 jurisdictions |
| `cancel.flow_friction` | Cancellation is not obstructed (no forced calls/chat, limited save offers, few steps) | 18 jurisdictions |
| `cancel.confirmation` | Confirms the cancellation to the consumer | 12 jurisdictions |
| `terms.cancellation_policy_consistent` | Terms of service do not contradict online cancellation (no "no cancellations" / cancel-by-phone-or-mail clauses) | 2 jurisdictions |
| `terms.refund_policy_consistent` | Refund policy is consistent with refund / money-back claims made in marketing and checkout | 1 jurisdiction |

### Billing settings

| Check | What it verifies | Laws that require it |
|---|---|---|
| `config.portal_cancel_enabled` | Billing platform self-serve cancellation is enabled | 19 jurisdictions |
| `config.trial_reminder_enabled` | Billing platform trial-ending reminder emails are enabled | 13 jurisdictions |
| `terms.renewal_terms_present` | Terms of service state the automatic-renewal terms and how to cancel | 1 jurisdiction |

## Severity, score and insurable {#score}

Each finding's severity is the strictest among the requirements that use the check: `critical`, `high`, `medium` or
`low`. A site's **score** (0–100) weighs passing checks by severity (critical 10, high 5, medium 2, low 1;
`needs_review` counts half). A site is **insurable** when no critical or high check fails, no critical check is left at
`needs_review`, and no high-severity obligation is without any evidence. A future compliance warranty will key on
that flag; Checkbox does not provide insurance today.

## Reproducibility {#reproducibility}

Every result records `rules_version`, `catalog_version` and `catalog_hash`. Preflight checks are deterministic: the
same input and the same `as_of` date give the same verdicts.
