Google Ads

Duplicate Google Ads conversions on Shopify

Duplication happens when more than one tracking path counts the same Shopify order as a separate conversion — two conversion actions both marked primary, two implementations both firing, or a counting setting that logs every page load instead of one per order. The orders themselves are real. Google Ads is just recording each of them more than once, which inflates conversion count and revenue together even though nothing shipped that didn't actually sell.

What duplication actually looks like

The tell is a stable multiple, not a fuzzy gap. If Google Ads reports conversions running at roughly twice — or three times — Shopify's order count for the same channel and date range, consistently, that's a strong signal something is structurally counting each order more than once. A gap that moves around depending on the week, or that shrinks and grows with refund activity, is a different problem — ordinary attribution and reporting mismatch, not duplication. More on that distinction below.

Multiple "Primary" conversion actions counted together

Every conversion action set to Primary status contributes to the headline Conversions column and to automated bidding — Google Ads sums them. If a native Purchase conversion action and a separately imported GA4 purchase event are both marked Primary, and both are logging the same orders, Google Ads is literally adding two records of one sale. This is the single most common cause of duplication on Shopify accounts, because it's easy to enable GA4 import without checking whether the existing native action is still Primary too.

The Google & YouTube app and a separate GTM setup, both live

Shopify's built-in Google & YouTube channel integration deploys its own conversion tag automatically. If a store also has a manually configured Google Tag Manager container in the theme — often left over from before the app was installed, or added later without checking what was already there — both fire independently on the same order. Neither implementation knows the other exists, so neither suppresses the duplicate. This usually traces back to an incomplete migration: someone installed the app but never removed the old manual snippet, or vice versa.

The "every" vs "one" counting setting

A conversion action can be configured to count every conversion or one conversion per click/interaction. For a purchase action, you almost always want one per order. If it's set to count every occurrence instead, a single order that re-renders its confirmation page — a browser back-and-forward, a manual refresh, a webhook retry that re-fires the event — gets logged as multiple separate conversions from what was actually one sale. Worth checking this setting directly on the Purchase action rather than assuming the default is right for your setup.

Missing or non-unique transaction IDs

Google Ads relies on the transaction ID passed with a purchase event to recognize a repeat firing as the same order rather than a new one. If that ID is missing, or a static placeholder value gets reused across every order instead of the actual Shopify order ID, Google loses the ability to deduplicate — a page reload or retry that would otherwise be recognized and ignored instead counts as a fresh conversion. This compounds with the "every" setting above: correct transaction IDs are what makes "one per order" enforceable in the first place.

Attribix sends Shopify order data to Google Ads with a consistent transaction ID per order and shows that alongside what Google Ads actually recorded, which makes a stable 2x-type gap visible immediately instead of surfacing weeks later in a spend review. See the mechanics on the Google Ads conversion tracking for Shopify page.

What this isn't: ordinary attribution difference

A Google Ads conversion count that's close to but not identical to Shopify's order count — and moves around week to week — is a different topic entirely. Conversion-date-vs-order-date timing, attribution windows, refunds, and cross-channel overlap with Meta all produce that kind of variance without any technical duplication happening. That mismatch pattern is covered in why Google Ads and Shopify revenue don't match. The quickest way to tell the two apart: duplication produces a consistent multiple tied to a specific setting; ordinary mismatch produces a variable gap tied to timing and refund activity.

Common questions

How do I know if it's duplication versus just a reporting difference?
Check whether the gap holds a stable multiple — roughly 2x, consistently, tied to a specific setting like two primary actions both live — versus a gap that fluctuates with refunds, dates or attribution windows. A stable multiple points at duplication. A fluctuating one points at ordinary mismatch.
Should I mark a duplicate conversion action as Secondary instead of deleting it?
Usually yes, at least initially — Secondary actions still collect data and don't affect bidding or the headline Conversions total, so you keep the history without it double-counting. Deleting an action outright can also break historical reporting for that action.
Does duplication affect conversion value as well as count?
Yes — if the count is inflated, the aggregate value is too, even when each individual order's value is correct. Worth checking both together rather than assuming a correct-looking value means the count is also fine.
Can Performance Max make duplication worse?
Not directly, but because PMax's automated bidding optimizes hard against whatever conversion value and count it's given, an inflated conversion signal from duplication has a bigger downstream effect on PMax's spend decisions than it would on a manually managed campaign.

When the settings check out and the gap stays

This covers the settings worth checking yourself. When duplication persists after checking them, or the cause turns out to be layered across multiple tools, that's account-level investigation — send us the details and we'll dig in.