Duplicate purchase events: one order, one event

By the HonestTag team ยท Published October 12, 2026

When two tools send the same Shopify order to the same ad platform as a purchase, the platform can count it twice. Ad platforms remove duplicates only under their own rules, and two tools from different vendors rarely meet those rules together. The fix is one purchase source for each pixel and each conversion action.

How one order becomes two purchases

Take one order, #1001. A tracking app a former agency installed still sends a server-side Purchase to your Meta pixel with its own event ID, say a1. A second tool sends the same order to the same pixel with its own event ID, b7. Meta now holds two Purchase events for one order.

Meta's deduplication page says: "We determine if events are identical based on their ID and name." a1 and b7 are different IDs, so the two events are not identical to Meta. Meta's other method, which matches a browser event to a later server event by fbp or external ID, has a stated limit too: "If you send us two consecutive server events with the same information, we do not discard either."

Google Ads removes a duplicate inside one conversion action. Google's transaction ID page says: "If there are 2 conversions for the same conversion action with the same transaction ID, Google Ads will know the second conversion is a duplicate." Two tools that each report the order to their own purchase action are two actions, so that rule does not join them. Google's primary and secondary page says primary actions are reported in the Conversions column and used for bidding "as long as the standard goal they are part of is used for bidding." Secondary actions are "for observation only" and are not used for bidding, "The one exception is if the secondary action is part of a custom goal, in which case it's used for bidding."

The bidder then learns from a purchase count that is too high. Each campaign looks like it brings in more orders than the store took.

What HonestTag sends for one order

Find every purchase source

  1. List what sends purchases. Tracking apps, an ad platform's own Shopify sales channel, code in your theme, a Tag Manager container, and any app a former agency installed.
  2. Pick one source for each platform. In Meta, keep one server-side Purchase source per dataset. In Google Ads, keep one purchase action as primary and set the rest to secondary, then check that no custom goal still includes a second purchase action.
  3. Turn the others off or move them to reporting. A second source can keep reporting for comparison as long as it is not counted as the bidding purchase.
  4. Check the next day. Put one day's purchase count in each platform next to that day's Shopify orders. A count near double the orders is the sign of a second source.

To run HonestTag beside the tool you have while you compare, follow the alongside guide. To move settings from an old app, see switching apps.

Frequently asked questions

Does Meta merge two server purchases with different event IDs?

Not under its event ID method. Meta says it determines whether events are identical based on their ID and name, so two purchases with different IDs are two events.

Can I keep my old tool while I test HonestTag?

Yes, if only one of them sends the bidding purchase to each pixel and conversion action. The free Mirror sends nothing, so it can run beside any tool.

Will HonestTag send a second Purchase to my Meta pixel?

HonestTag sends Meta's standard Purchase only when you answer on its Meta card that Shopify's Facebook & Instagram channel is not sharing data at Enhanced or Maximum. If another app also sends Purchase to that pixel, turn one of them off.

Does Google Ads remove a duplicate across two conversion actions?

Google's transaction ID rule works inside one conversion action. Keep one purchase action as primary, set the others to secondary, and keep them out of custom goals, where Google uses a secondary action for bidding.

One order, one purchase event, one source per platform. Join the HonestTag early-access waitlist.