Free discrepancy diagnostic

Why Marketing Numbers Disagree: A Diagnostic Decision Tree

Marketing numbers usually disagree because two systems are measuring different facts, applying different scope or timing rules, or aggregating the same metric differently. The first step is not choosing a winner. It is naming each metric’s source, event, grain, date basis, attribution rule, currency, and adjustment policy.

Direct answer

Start with shared identifiers and definitions, not totals. Reconcile order IDs to transaction IDs, then classify what remains as tracking loss, attribution, scope, timing, currency, adjustment, or aggregation. Some gaps can be corrected. Others are valid because an attributed conversion and an observed order are not the same business fact.

1. IdentityWhich orders, events, campaigns, stores, and accounts are included?
2. DefinitionWhat does revenue, conversion, order, or spend mean in each source?
3. Time and currencyWhich date, timezone, reporting window, and FX policy are used?
4. AggregationCan the metric be summed, or must it be recomputed or deduplicated?
Written by: Metric Hive editorial team Product review: Metric Hive data contracts team Reviewed: July 18, 2026
Interactive decision tree

Build a prioritized reconciliation checklist

This tool does not declare one platform correct. It narrows the likely mechanisms and links to a detailed guide. Inputs stay in your browser.

Which definitions have already been aligned?
Diagnostic guidance only; validate against your implementation and source documentation.
Discrepancy matrix

Classify the gap before changing the report

The same total can differ for several reasons at once. Use identifiers to measure coverage, then isolate one mechanism at a time.

Common discrepancy classes, their signatures, and the first evidence to inspect.
ClassTypical signatureEvidence to compareCan it reconcile?
Tracking coverageAnalytics or ad events are lower than backend orders, often uneven by device, browser, consent state, or market.Order ID, transaction ID, event ID, tag diagnostics, consent state, event timestamp.Often partially. Missing historical events may not be recoverable.
Duplicate eventsEvent counts or revenue exceed order records, with repeated transaction or event identifiers.Duplicate transaction IDs, browser/server event IDs, retry logs, event timestamps.Usually, when a stable deduplication key exists.
AttributionPlatform conversions exceed or lag store orders; several platforms each claim credit for the same purchase.Conversion event, click/view eligibility, attribution model, lookback window, campaign touchpoint.Not to a single universal platform total. Preserve attributed and observed facts separately.
Revenue basisA stable percentage or amount gap remains after order IDs align.Gross and net sales, discounts, tax, shipping, tips, refunds, cancellations, status.Yes, if both systems expose the required components.
Date and timezoneDaily differences reverse on adjacent days while the longer-period total is closer.Event timestamp, order date, click date, conversion date, refund date, timezone, inclusive boundaries.Usually, after choosing a declared date basis.
CurrencyMarket-specific gaps or a percentage gap that follows FX movements.Original currency, reporting currency, FX date, provider rate, settlement currency.Yes for reporting, but provider and internal historical rates may remain different views.
Scope and statusSpecific stores, properties, test records, channels, or order statuses are consistently missing.Store/property/account IDs, order source, test flag, draft/cancelled status, filters.Usually, by making scope explicit rather than silently changing totals.
Report grainTotals inflate after a join or change when rows are grouped at a lower level.Primary keys, base entity, row grain, relationship cardinality, metric grain.Yes if a safe aggregation or scoped allocation exists; otherwise keep the metrics separate.
Late changesRecent periods keep moving after initial reporting.Ingestion watermark, provider restatement, refund/cancellation events, late attribution, refresh time.Often, after the period stabilizes and the replacement policy is understood.
Manual workflow

A seven-step reconciliation that preserves meaning

Do not overwrite one source with another to make a dashboard look tidy. Document the semantic difference and decide which view answers the business question.

  1. Freeze a small, stable window.Use three to seven completed days first. Avoid diagnosing an actively changing current day.
  2. Write each metric as a full sentence.Include source, event, status, revenue basis, attribution, date, currency, and scope.
  3. Export or query shared identifiers.Compare order ID, transaction ID, and event ID coverage before comparing totals.
  4. Build matched, source-only, and analytics-only sets.Quantify missing and duplicated records instead of reasoning from percentages alone.
  5. Recompute a common revenue basis.Align discounts, refunds, tax, shipping, cancellation state, and currency using explicit component fields.
  6. Align time without erasing provenance.Choose an analysis date while retaining the source timestamps that explain reclassification.
  7. Publish the residual gap with a reason code.Tracking loss, attribution, timing, scope, and unresolved should remain visible.
Required contract

The minimum fields behind a credible comparison

A total-only screenshot is not enough evidence. These fields let an analyst determine what is missing, duplicated, reclassified, or inherently different.

Identity and scope

Source ID, provider account, store or property, order or transaction ID, event ID, record status, and test flags.

Order IDEvent IDAccount

Time

Source timestamp, order date, event date, click or impression date where relevant, refund date, timezone, ingestion time, and last update.

Date basisTimezoneLatency

Value components

Gross amount, discounts, refund amount, tax, shipping, tips or duties where relevant, net amount, original currency, and reporting currency.

GrossNetCurrency

Marketing context

Conversion event, platform, campaign, ad set or ad, attribution model, lookback window, touchpoint type, and spend.

AttributionCampaignSpend

Inspect the contracts before comparing the fields

The Metric Hive Semantic Contract Library exposes registered report entities, grains, time keys, canonical mappings, aggregation behavior, and field visibility. Review the relevant Shopify, Google Analytics, Meta Ads, or Google Ads connector page too. Registration is inspectable evidence, not a guarantee that every connector report is customer-available or production-smoked.

Primary sources: verify current provider behavior

Provider definitions, interfaces, and reporting behavior can change. Use these official documents to validate the current source behavior behind a discrepancy, then record the settings used for your own extract.

Source-specific guides

Continue with the closest discrepancy

Each guide keeps observed, tracked, attributed, and derived facts distinct and includes a focused checklist.

Shopify vs. GA4 revenue

Reconcile backend orders with tracked ecommerce events across identifiers, revenue components, scope, date, and currency.

Platform vs. blended ROAS

Compare attribution-dependent channel efficiency with observed business revenue over total paid-media spend.

Keep both truths when the facts are different

Metric Hive is designed around source-specific and canonical semantic contracts so an attributed platform metric does not silently become observed commerce truth. It can make definitions and compatible comparisons explicit; it cannot recover events that were never collected or prove incrementality from attribution data alone.