Guide

What every state in a report is telling you

A SendProofs report has no score and no summary grade. Every checked resource lands in exactly one of six states, each with recorded evidence and one concrete next action. This page is the complete vocabulary, including how the campaign outcome rolls up from it.

Last verified: 2026-08-24

The six states

Healthy
The destination answered with a 2xx status and no warnings were recorded. Action: none.
Warning
The destination answered 2xx, but at least one warning was recorded along the way — a UTM issue on the final URL, an HTTPS→HTTP downgrade inside the redirect chain, an unexpected content type on an image, or a response truncated at the 64 KB cap. Action: review each recorded warning and decide before approving.
Broken
A deterministic failure: a non-2xx status (other than the remote-restriction statuses below), a timeout, a connection or TLS failure, or a redirect fault — a loop, a hop with no target, or a chain past the 3-hop limit. The HTTP status or an explicit error code is part of the evidence. Action: fix in your sending platform, send a fresh test, recheck.
Protected
The link was recognized as action-bearing — unsubscribe or preference center, sign-in or reset, verification, invitation, order or purchase — by URL and link-text patterns, at upload or on a redirect hop — and the recognized action URL was never requested. Recognized at upload, the link is never touched at all; recognized on a redirect hop, the check stops at that hop without following into the action. Likely tracking pixels are treated the same way. Action: review by hand, deliberately — these links do things.
Blocked
The network safety policy refused the destination — for example a hostname resolving to a private or internal address — with the policy reason recorded. Action: review manually; work out why a public campaign carries a non-public destination.
Inconclusive
The destination answered 401, 403 or 429 — it limited automated access. This state is deliberately neither a success nor a failure: a bot-protection response says little about what a real reader would see. Action: open the link yourself and confirm.

The vocabulary is fixed. In particular, Protected, Blocked and Inconclusive are explicitly unresolved states — the report asks you to resolve them by hand, and never folds them into a green result.

Each state in a real report shape

Sample data August launch — final test · one row per state
ResourceStateEvidence
campaign.example/launch?utm_source=email&utm_campaign=aug-launch Healthy 200 after 2 redirects · 312 ms · 14:02 UTC
campaign.example/blog/whats-new?utm_source=email Warning 200, but the workspace's required utm_campaign is missing on the final URL
campaign.example/pricing/summer-2026 Broken 404 at final destination — fix in your sending platform, then recheck
example.com/unsubscribe/%5BREDACTED%5D Protected Not opened — action-bearing link, review manually
img-staging.campaign.example/hero-test.png Blocked Resolved to a non-public address — not requested, review manually
partner.example/offer Inconclusive 403 — destination limited automated access, review manually

Sample data. The full sample run covers 24 unique resources (18 links, 6 images): 15 Healthy, 2 Warning, 1 Broken, 3 Protected, 2 Inconclusive, 1 Blocked. 20 of the 24 consumed a check; the 3 Protected items and the 1 Blocked item were never requested.

How the campaign outcome rolls up

When a check run completes, the campaign outcome is derived from the resource states, in this order:

  • Any Broken resource marks the campaign Failed. The sample run above is Failed — one dead pricing link outweighs 15 good ones.
  • Otherwise, any Blocked or Inconclusive item marks it Incomplete. Manual review is required before the campaign counts as reviewed.
  • Otherwise, any Warning marks the campaign Warning.
  • Otherwise, with Healthy results present, the campaign is Passed.
  • A completed run with no Healthy evidence at all is also Incomplete.

Runs that do not complete — an internal error, an exhausted monthly allowance — are always marked Incomplete. An interrupted run is never reported as passed, silently or otherwise.

The evidence behind every check

Timestampwhen the check ran
Durationhow long the destination took to answer
Redirect chainevery hop recorded, up to 3
Final URLwhere the chain actually ended
Status or error codethe HTTP status when a response arrived; an explicit error code otherwise

A timeout or connection failure has no HTTP status — for those, the error code carries the evidence instead. Nothing is left as an unexplained red dot. Evidence reports in depth.

Why some URLs read [REDACTED]

Visible report URLs are redacted by pattern: recognized token-like path segments — long mixed-alphanumeric strings and UUIDs — the segment following a sensitive keyword such as unsubscribe or token, and every query value except the five standard utm_* keys are replaced with [REDACTED]. Redirect chains are redacted hop by hop. Redaction is pattern-based — it hides the common token shapes, not every conceivable secret — and the canonical stored URLs are encrypted at the application level regardless of what the display copy shows.

Read a report about your own campaign

Upload the delivered test — every state above comes with its evidence attached.

Create workspace