
Author Name
Emtiaz Hossain
A client's Google Ads account was spending normally, orders were coming in, and Smart Bidding was still stuck in learning mode with weak signal. Inside GA4, the acquisition report told a different story than the ad account did: a large share of revenue was landing under Organic Search, not Paid Search. This is how that revenue got there, and the exact fix, in the current Merchant Center interface, not the deprecated one most guides still describe.
Google Ads showed normal spend and normal order volume. GA4's channel breakdown didn't match: Paid Search was underperforming while Organic Search carried an outsized share of purchase revenue. Smart Bidding was optimizing on a thin conversion signal because a real chunk of paid-driven purchases weren't being counted as paid at all.
Filtering GA4's Traffic Acquisition report by source/medium on purchase events surfaced this string attached to a large share of completed orders:
utm_source=google&utm_medium=product_sync&utm_campaign=sag_organic
&utm_content=sag_organicsag_organic isn't a UTM value a human writes. It's Shopify's own tag. When a store connects the Google & YouTube sales channel, Shopify pushes the product feed into Google Merchant Center for free listings and appends this exact query string to every product link:
&utm_medium=product_sync&utm_source=google&utm_content=sag_organic
&utm_campaign=sag_organicSAG stands for Surfaces Across Google, Google's original name for free shopping listings (now just called "free listings," the SAG name stuck around in the tag itself). The intent was reasonable: let Shopify distinguish organic Shopping traffic from organic Search traffic inside Google Analytics. In practice, it does something worse. A customer clicks a paid Shopping ad, browses, comes back later through a free listing or a bookmark, and completes checkout, GA4 attributes that entire session to sag_organic, not the paid campaign that originally earned the click. The paid campaign didn't underperform. It got its credit reassigned to an auto-generated tag.
This is a known, documented Shopify behavior (see the Shopify Community thread on the exact same parameters), not a one-off bug in a single store's setup.
The standard advice for this problem points to Google Merchant Center's Feed Rules tab under Classic mode: add a rule on the link attribute, use Optimize URL to strip the UTM parameters, done. That path is gone in current Merchant Center (Merchant Center Next). Feed Rules doesn't exist in the new interface, and switching back to Classic mode isn't a permanent option anymore for most accounts. The fix still exists, it just moved.
Step 1: Enable Advanced data source management. This isn't on by default. Go to Add-ons and turn on Advanced data source management first, the Attribute rules tab won't appear on your data source without it.
Step 2: Open the data source's Attribute rules. Go to Data sources → select your primary source (Content API, if Shopify is syncing via the Google & YouTube channel) → the Attribute rules tab.
Step 3: Add a rule on the link attribute. Click Add attribute rule, select link. Under "Modify attribute data," choose Optimize URL as the modification type, not Find & Replace.
Step 4: Remove the four parameters. Add four "Remove parameter" operations, one each for:
utm_source
utm_medium
utm_content
utm_campaignStep 5: Verify in the Preview panel before saving. Merchant Center shows a live before/after comparison. The contaminated version looks like:
https://yourstore.com/products/product-handle?variant=123456789
&country=US¤cy=USD&utm_medium=product_sync&utm_source=google
&utm_content=sag_organic&utm_campaign=sag_organicAfter the rule applies, the same URL drops all four UTM parameters, leaving the clean product link with only the legitimate variant, country, and currency parameters intact. Confirm this in Preview before saving the rule, not after.
Step 6: Save and apply.
Stripping the UTM contamination at the feed level fixes the free listings side. The paid side needs its own hygiene so it doesn't drift back into the same mess: confirm auto-tagging is on in the Google Ads account (Settings → Account Settings → Auto-tagging), and rely on the account-level tracking template rather than static UTM parameters hardcoded into individual campaigns or ad groups. If a tracking template is set at the campaign or ad group level, it can override the account-level one silently, worth checking both.
Merchant Center feeds don't update instantly, give it a few hours. Then check GA4's Traffic Acquisition report filtered to purchase events: the google / product_sync and sag_organic campaign strings should stop showing up on new sessions, and purchase volume should shift back toward the actual paid channel that earned it.
sag_organic and product_sync in GA4 aren't traffic sources, they're a UTM tag Shopify's Google & YouTube channel auto-appends to every free listing product linksag_organic if the visitor later touches a GMC-synced product linklink attribute for utm_source, utm_medium, utm_content, utm_campaign, and confirm the strip in the Preview panel before savingNo. The sag_organic and product_sync tags only appear if Shopify's Google & YouTube sales channel is connected and actively syncing your product feed to Merchant Center for free listings. If you're not using that channel, this specific contamination source doesn't apply to you, though it's worth checking your GA4 source/medium report for other auto-tagged traffic regardless.
No. The Attribute rule only modifies the tracking parameters on the outgoing link, specifically utm_source, utm_medium, utm_content, and utm_campaign. The product URL itself, along with legitimate parameters like variant and country, stays intact. Google still receives a fully working link to the product page.
Discussed this on LinkedIn
Found this helpful?
Drop a comment on the LinkedIn post – I read every reply and love connecting with tracking folks.
Book a free 30-minute call. I will review your current tracking setup, show you where conversions are leaking, and tell you exactly what I would fix.

Build FT/LT attribution in GTM with localStorage JSON and a custom sGTM variable template. cHTML tag, GA4 event params, and server-side variable import.

A real-world case study showing how attribution data (UTM, gclid, fbclid) was captured, persisted, and sent to Shopify orders for accurate marketing attribution. This guide walks through the architecture, implementation, and tracking strategy used in a live TinyBot client project.
Learn how to implement Meta Conversions API (CAPI) using your own server in a Next.js project. This guide breaks down the server-side tracking process step-by-step with real code and structure , no third-party tools needed. Perfect for developers and tracking experts who want full control.