Clarvivo

Free tool by Clarvivo · no login

Find repeated transaction IDs before they inflate purchase reporting

Upload a purchase export to detect duplicate and missing transaction or order identifiers.

Purchase or transaction export

Upload an ecommerce or GA4 export with transaction/order IDs. We find repeat and blank IDs that can inflate purchase reporting.

This tool answers: Which transaction IDs are repeated or missing in my purchase export?

Enable JavaScript to run the check — the diagnosis itself is free and needs no account.

Why this happens

A transaction ID should appear once per order. When the same ID shows up twice in your purchase data, the order was recorded twice: from a confirmation-page refresh, a second tag, a retry, or an app that sends its own purchase event. Revenue and conversion counts are inflated by exactly that amount.

Blank transaction IDs are a quieter problem. Without an ID, GA4 and ad platforms can't deduplicate repeats at all, and you can't reconcile analytics purchases against your order system, because there's nothing to join on.

This checker scans a purchase export for both: IDs that repeat, and purchase rows with no ID. It works with GA4 exports, ecommerce platform exports or any CSV with an order or transaction ID column.

Next checks

These answer the questions this one tends to raise.

How this check works

So you can trust the result — and your developer can verify it.

  1. Upload a purchase or transaction export

    Any CSV with a transaction or order ID column: a GA4 Explore export with Transaction ID, an ecommerce platform export, or a custom report.

  2. We find the ID column

    We look for a column named transaction ID, transaction_id, order ID, order_id or purchase ID and use it as the key. If none is found, the result lists the headers we saw so you can rename the column.

  3. We count repeats and blanks

    Every ID that appears more than once is listed with its count, and rows with an empty ID are counted separately.

Common causes and fixes

Purchase fires on confirmation-page reload
The most common source of repeated IDs. Fire the purchase from the order-complete event and guard it with a once-per-order flag.
Two tags send the same purchase
A native integration and a GTM tag both send purchase. Remove one.
Transaction ID not mapped
Blank IDs usually mean the tag reads a variable that no longer exists after a checkout or theme update. Map transaction_id from the order object.
Test orders in production data
Repeated test transactions with fixed IDs like "test" or "12345" appear as duplicates. Exclude internal traffic and test orders.

Frequently asked questions

Does GA4 deduplicate purchases with the same transaction ID?
GA4 is designed to deduplicate purchase events with the same transaction ID from the same user, but duplicates still appear in practice, especially across sessions or devices. Fixing the source is more reliable than relying on deduplication.
Are duplicate IDs always a tracking bug?
In analytics data, almost always. In an order export, a repeated ID can mean split shipments or line-level rows, so check what each row represents.
What about blank IDs?
A few can come from free or test orders. Many blank IDs mean the purchase tag isn't sending the order ID.
Is the file stored?
No. It's parsed for the result and findings expire after 7 days.
What should I check next?
Run the Checkout Purchase Event Checker on your confirmation page to see whether the purchase repeats on refresh.

Make every revenue event answer to an order.

Clarvivo reconciles tracking claims with payment truth.

Trust transaction-level revenue

What this tool reads, and what it keeps