Find repeated purchase records before reporting revenue

Analysis

By Isaac Turner, Measurement Editor2 min read

View author profile
Editorial collage hero: measurement-lab-purchase-duplicate-rate

A purchase count can rise because more players bought, or because the same transaction appeared more than once in an export. A reproducible synthetic example with editable inputs and explicit limits.

A purchase count can rise because more players bought, or because the same transaction appeared more than once in an export. This lab isolates the second possibility with a transparent counting exercise. The result is a diagnostic rate, not an estimate of fraud or a claim about any studio’s instrumentation.

Define the calculation before using it

Start with records already restricted to one transaction system, currency and reporting period. Compare raw purchase rows with distinct transaction identifiers. Count a repeated identifier as an investigation candidate, preserving its original rows so that legitimate split records can be distinguished from accidental replay. Do not deduplicate every event by timestamp: separate events can share a timestamp, and a transaction key has a different meaning.

Work through the synthetic example

The synthetic file contains 120 rows and 100 distinct transaction IDs, giving 20 extra rows and a 16.67% excess-row share. That share uses raw rows as its denominator; it is not the percentage of customers affected. Reconcile the candidate rows with purchase acknowledgements before changing financial totals. Different item lines belonging to one order may need aggregation rather than deletion.

Reference table
OutputWorked-example result
Excess rows20.0000
Excess row share %16.6667

Use the artifact and preserve its assumptions

Open the editable calculator to change the inputs and inspect the sensitivity view. The CSV records synthetic inputs and expected outputs; the JSON fixture keeps the equations available for reproduction. These calculations have been checked against the stated example. No measured campaign data is included.

The sensitivity rows vary only rows by 20% below and above the entered value. They are scenarios, not confidence limits or a forecast distribution. A row outside the model’s constraints is labelled rather than turned into a plausible-looking result. Save the chosen inputs with the decision so another reader can distinguish a changed assumption from a changed formula.

Evidence and limits

Google’s ecommerce guide associates transaction identifiers with purchase and refund records. This lab uses that accounting distinction; it is not a native-app SDK implementation guide. See Measure ecommerce: purchases and refunds, especially “Make a purchase or issue a refund”.

A stable, correctly scoped transaction identifier is required. This calculator does not inspect IDs, establish which rows are erroneous, or prove that a vendor already deduplicates them.

Background: UA metrics explained: CPI, ROAS, LTV and payback and Reading an MMP dashboard without fooling yourself. These existing articles provide context; the present calculation does not verify every archived claim.

Featured

Related posts

Using predicted LTV in bids: disclosure checklist for the UA team

measurement

media buying

·

1 min read

Using predicted LTV in bids: disclosure checklist for the UA team

Blended ROAS targets that hide channel failure in F2P portfolios

measurement

media buying

·

1 min read

Blended ROAS targets that hide channel failure in F2P portfolios

Web-shop LTV with VAT-inclusive prices versus store net proceeds (labelled synthetic)

measurement

media buying

·

2 min read

Web-shop LTV with VAT-inclusive prices versus store net proceeds (labelled synthetic)

View-through attribution windows on F2P rewarded and interstitial traffic

measurement

media buying

·

1 min read

View-through attribution windows on F2P rewarded and interstitial traffic

More from the Measurement desk

Airbridge adds Amazon Ads as an app measurement channel

measurement

·

2 min read

Airbridge adds Amazon Ads as an app measurement channel

When to freeze a cohort for payback review (and when not to)

measurement

·

2 min read

When to freeze a cohort for payback review (and when not to)

Web-shop purchaser quality vs store IAP purchaser quality

measurement

·

1 min read

Web-shop purchaser quality vs store IAP purchaser quality

Web-shop attributed revenue in MMP vs payment-provider settlements

measurement

·

1 min read

Web-shop attributed revenue in MMP vs payment-provider settlements