Troubleshooting · Revenue

Duplicate payments: why a sale can show up twice and how to fix it

Admaxxer identifies every payment by where it came from and its payment ID. If the same payment arrives again from the same place with the same ID, it's kept once. A sale gets counted twice when it reaches Admaxxer from two different places, or when it's sent without a stable ID.

Revenue · Payment IDs

How Admaxxer counts a payment

Cause 1: The same sale arrives from two sources

If your thank-you page calls window.admaxxer('payment', …) and you've connected a revenue source, such as Stripe, Paddle or WooCommerce, for the same sales, each sale reaches Admaxxer twice: once from your site and once from the provider. Those are two different sources, so they're recorded as two payments.

Fix: use one path for those sales. If a revenue source is connected, it already reports those payments, so stop sending payment events from your site for the same orders. The revenue guides explain how each provider's payments are matched to visits.

Cause 2: Payment events without a stable ID

If you send purchases from your site, always include your own order ID as external_payment_id, and send the same ID every time for the same order.

A payment event with a stable ID

window.admaxxer('payment', {
  value: 89.97,                      // order total in major units (dollars, not cents)
  currency: 'USD',
  external_payment_id: 'order_1042', // your order ID: the same value every time for this order
  email: 'buyer@example.com'         // optional
});

With a stable ID in place, a call that runs twice, for example because a page component mounts twice, is kept as one payment.

Loading the snippet twice is fine

If the Admaxxer script ends up on a page twice, say once in your theme and once through a tag manager, the second copy sees that the pixel is already running and stays idle. It doesn't double your events.

How to check

  1. Compare a few days of Admaxxer's order count and revenue with your store's or payment provider's own report for the same days.
  2. If Admaxxer is consistently about double for sales from one provider, check cause 1: are you also sending payment events from your site for those orders?
  3. If extra sales line up with customers revisiting or reloading the thank-you page, check cause 2: is your external_payment_id the same on every send?
  4. If neither explains it, contact support with a few example payment IDs and their dates so we can look into it.

Frequently asked questions

Q: Does Admaxxer remove duplicates automatically?

Yes, when they share a source and payment ID: repeats of the same payment from the same place are kept once. It can't tell that two payments from different sources, or with different IDs, are the same sale. That's what the fixes above address.

Q: Should I send purchases from the pixel or from a revenue connection?

If your payment provider or store is supported as a revenue source, connect it and let it record payments. Send payment events from your site only for sales that don't go through a connected source, and always with a stable external_payment_id.

Q: What should I use as external_payment_id?

Your own order or payment ID, the same one you'd use to look the order up in your store or payment provider. It must be identical every time you send that order.

Q: Ad platforms show more purchases than Admaxxer does. Is that the same problem?

Not necessarily. If you forward purchases to ad platforms, see the deduplication section of server-side conversions: a browser tag that uses a different event ID can make a platform count a sale twice.