gtmjosh

Unknown versus zero versus bad data

· 2 min read· Salesforce · HubSpot

How to model three different reporting states so missing evidence, a measured zero, and an invalid value do not collapse into the same chart bucket.

On this page

Blank cells are carrying too many meanings. Give the report three explicit states.

StateExampleReporting treatment
ZeroNo qualified requests in a measured periodCount as zero
UnknownOutcome has not arrived yetExclude from completed-rate denominator or show separately
Bad dataDate is before trigger or enum is invalidRoute to data-quality work

Use a state alongside the value

{
  "first_response_minutes": null,
  "measurement_state": "unknown",
  "reason_code": "response_pending"
}

An empty value without a state cannot tell a report whether to wait, fix, or count.

Decision path

  1. Was the measurement opportunity reached?
  2. If yes, was the value observed and valid?
  3. If valid, is the value actually zero?
  4. If not valid, what rule failed?

Use unknown for an open process, zero for a measured result, and bad-data for an invalid record. Preserve the original value for diagnosis when policy allows.

Chart behavior

Show unknown and bad-data counts beside the main metric. Do not quietly drop them. A completed-rate chart can exclude open records from the denominator if its subtitle says so. A health report should count bad data as work.

Store value and state separately

Use fields such as measurement_value, measurement_state, observed_at, and reason_code. Valid states might include observed, unknown-pending, unknown-unavailable, invalid, and not-applicable. A numeric zero belongs in the value only when an actual measurement produced zero.

Define who can move a record between states and what evidence is required. A timeout should remain unknown until reconciliation confirms success or failure. A malformed source value should remain invalid even if a dashboard could coerce it to zero. Preserve the original observation where policy allows so the issue can be diagnosed.

Make missingness actionable

Report state counts and age by source, segment, workflow version, and owner. Rising unknown-pending may indicate process delay; unknown-unavailable may indicate missing instrumentation; invalid values may indicate a broken mapping. Assign correction work to the source owner and keep corrected records traceable to the original state.

Related: Reporting populations and denominators, CRM data quality audit, and Metric ownership and source of truth.

FAQ

What is the difference between zero and unknown in a report?
Zero is a measured value of none. Unknown means the value was not available or the event has not happened. Bad data means a value exists but fails validation. Combining them changes both the numerator and the work needed to fix the process.

Get the next guide

New guides and the occasional note on GTM tooling. Don't worry, I won't drop you into a three-month nurture.