Metrics and diagnostics

Audit Your Chargeback Dataset Before Publishing a KPI

Budget and finance tracking.
Photo: Shopify Partners / Burst

Do not publish a chargeback KPI until you can explain its case identities, lifecycle events, date basis, and monetary units. A small data defect can change a percentage enough to trigger a management decision, especially in a low-volume store. The publish gate should distinguish a clean result, a clearly qualified result, and a number that must wait for repair.

Build the audit around the exact dataset feeding the report. Checking a different export or an earlier snapshot does not establish that the published number is reproducible.

Test identity and lifecycle consistency

Confirm the unit of one row. It may be a case snapshot, a status event, or a payment relationship. Multiple rows for one case are not duplicates if they represent distinct events, but they must not all become separate cases in a count-based KPI.

Require a stable case identifier and a documented relationship to the relevant payment population. Test for duplicate identifiers with conflicting current states, one event assigned to several stores, and relationships that unexpectedly link a case to multiple unrelated payments.

Reopened episodes need explicit treatment. Preserve the provider's lifecycle relationship rather than creating a new initial incident every time a case appears again in an export. Keep a record of legitimate separate episodes so deduplication does not erase real activity.

Reconcile questionable current states using the applicable Shopify case administration workflow. A merchant spreadsheet should not silently override the source case because its status is inconvenient for a report.

Validate dates, amounts, and currency

Record the meaning of each timestamp: purchase, case opening, status transition, extraction, and final decision. Confirm timezone conversion and period boundaries. A case at midnight in one timezone may belong to the preceding day in another.

Test impossible sequences, such as a final outcome before the recorded opening, while allowing documented migration or correction cases to be reviewed. Do not “fix” every anomaly by replacing the date with the extraction timestamp; that conceals the problem and distorts age-based analysis.

For monetary fields, confirm whether values use major currency units or minor units. A stored integer of 12500 might represent 125.00 in one schema. Keep the currency code beside the amount and distinguish original disputed amount, recovered amount, and fees.

Check report semantics before using sales totals as a payment denominator. Shopify's sales-report documentation distinguishes sales reporting from payment movement. An order-oriented export should not be treated as a complete eligible-transaction ledger without reconciliation.

Apply a hypothetical publish gate

Suppose a hypothetical monthly dataset contains sixty case rows. The audit finds five repeated event rows for existing cases, two cases with unknown currency, and one payment link that belongs to a different store.

Removing repeated event rows from the case count may leave fifty-five distinct cases, but the work is not finished. The wrong-store relationship affects population scope, and unknown currencies prevent a reliable combined monetary total. A clean count does not automatically validate the amount metric.

Use a gate like this:

Check Publish condition Stop condition
Unique population Every included case has a stable identity and scope Unresolved duplication or cross-store contamination
Lifecycle Current state and episode treatment are consistent Conflicting final outcomes materially affect the KPI
Dates Timestamp meaning and timezone are documented Unknown boundaries could move material cases between periods
Amounts Units and currencies are known Mixed or unknown currency in a combined value metric
Reconciliation Differences from source counts are explained Material unexplained gap remains

The count KPI might be publishable after the wrong-store record is resolved, while the monetary KPI remains withheld until currencies are repaired. Qualification should be metric-specific, not a blanket green light for every number in the workbook.

Make the audit reproducible and proportionate

Save the extraction timestamp, source scope, definition version, row counts before and after transformations, and a compact exception register. Another analyst should be able to reproduce the reported population without guessing which rows someone manually removed.

For each exception, record the observed defect, affected metrics, owner, decision, and supporting reference. Use a status such as open, explained, corrected, or excluded under policy. An unexplained exclusion is not a resolved defect.

Set materiality before seeing the result. In a small store, one case may materially change a rate; in a larger dataset, a missing currency can still invalidate a financial subtotal even when it affects few rows. Materiality depends on the decision, not only the number of records.

Do not let the gate become a ritual that delays harmless reporting indefinitely. A clearly labeled provisional count with known limitations can be useful when the affected decision is reversible and the uncertainty is explicit. A confidently published rate with an unknown denominator is not improved by an attractive chart.

End with a signed publication note: “Dataset [snapshot], metric definition [version], checks completed [date], open limitations [items], publication decision [approved or held], accountable reviewer [role].” That note makes data quality part of the evidence behind the KPI rather than an assumption hidden underneath it.

Check the operational dispute view before publishing numbers from your own reporting dataset.

Review your disputes

Related reading in this collection: