Send Shopify Purchases to Google Ads with Enhanced Conversions
Google Ads reports fewer sales than Shopify, so Smart Bidding optimizes toward a number that isn't real. This playbook sends every checkout event server-side, with the hashed customer data Enhanced Conversions needs, before it reaches Google.
Set a tROAS target and Google keeps that promise with the data it can see. That’s the problem. Between iOS restrictions, Safari’s tracking prevention, and ad blockers, the browser-side gtag misses a slice of your real Shopify sales, so Smart Bidding optimizes toward the orders that happened to survive, and you scale spend on a conversion count you can’t reconcile with your store admin.
- Smart Bidding learns from incomplete data: the checkout events that don’t survive the browser never reach the bidding model, so it undervalues the campaigns quietly producing them.
- Layered tracking double-counts the rest: the Google & YouTube channel app, leftover
gtagsnippets, and a GA4 import can each report the same order, inflating the Conversions column. - Enhanced Conversions sits idle: Google can match hashed checkout data to signed-in users, but only if something sends that data with every sale.
This playbook fixes all three. AnyTrack collects your Shopify checkout events server-side, matches each order to the gclid that earned it, and sends it to Google Ads through the Conversion API with the hashed customer data Enhanced Conversions requires, formatted and normalized automatically.
The Journey of a Tracked Conversion
Follow one order from the ad click to a value-attributed conversion in Google Ads. Every step is tracked, enriched, and sent automatically.
Steps marked with the AnyTrack node run automatically. No extra code, no manual tagging.
Example Scenario
You run a Shopify store with Performance Max and Search campaigns. Shopify’s order admin shows healthy revenue, but the Google Ads Conversions column tells a poorer story, so bidding stays timid on your best campaigns. You want every Purchase, with its real order value, flowing to Google server-side with the original ad click attached.
- An AnyTrack account on Starter or above (the Conversion API requires a paid plan)
- Admin access to your Shopify store, for theme code and Settings → Notifications
- A Google Ads account with Standard or Admin permissions, so you can create conversion actions
Step 1: Install the Tracking Tag
The Tracking Tag opens the session, collects the traffic source, UTM parameters, and first-party data, and stores them against a click ID, including the gclid Google appends to every ad click.
- Create a Property in AnyTrack and set your shop’s name and root domain.
- Copy the Tracking Tag.
- In the Shopify admin, edit your theme code and paste the Tag in the
headsection of the Theme Liquid file, then save. One paste, and you won’t touch the theme again.
Confirm the Tag in 30 seconds
Install the AnyTrack Pixel Helper Chrome extension to confirm the Tag runs on your store.
Step 2: Connect Shopify
The Shopify integration collects cart, checkout, and order events server-side, straight from Shopify’s servers. That’s why checkout events are tracked reliably even though the Tag doesn’t run on Shopify’s hosted checkout pages.
- In the Integration Catalog, install the Shopify integration and copy the webhook URL it generates.
- In your Shopify admin, go to Settings → Notifications → Webhooks and create the five webhook notifications listed on the integration page, pasting the AnyTrack webhook URL into each. Set the API version to the latest stable release, not Shopify’s default
unstable.
You now track AddToCart, InitiateCheckout, AddPaymentInfo, and Purchase server-side, each carrying product details, order values, and the customer data that Enhanced Conversions will run on.
Step 3: Create Conversion Actions in Google Ads
Google only accepts conversions into actions you’ve defined, so build the containers first. In Google Ads, go to Tools & Settings → Measurement → Conversions and create a conversion action for each event you’ll send, each with type Website and Manual Setup:
- A Purchase action. Set it as your primary action, the one bidding optimizes on.
- Optional actions for
AddToCartandInitiateCheckout. Keep them secondary, for observation and for the optimization ladder below.
While you’re in the Purchase action’s settings, turn on Enhanced Conversions and select Global Site Tag or Google Tag Manager, per the Enhanced Conversions guide. Enhanced Conversions typically recover 15 to 25% of the conversions that cookie restrictions and browser privacy modes lose, and AnyTrack does the work automatically: it hashes, normalizes, and sends the customer data from every Shopify order, no code involved.
Step 4: Connect Google Ads and Map Your Events
Open Tracking Pixels in your AnyTrack dashboard, select Google Ads, enter your AW- conversion ID, and complete the standard Google login. Then:
- Turn on the Conversion API, so conversions travel from AnyTrack’s servers to Google’s, where ad blockers and browser privacy restrictions can’t touch them.
- Click Reload Conversions and map each AnyTrack event to the conversion action you created for it.
- Open the Ads Integration tab, copy AnyTrack’s UTM tracking template, enable Auto-Tag in your Google Ads account settings, and paste the template into the account-level tracking template field. That’s what ties every session, and every sale, to the campaign in your Campaign Report.
Only Website + Manual Setup actions appear
If a conversion action is missing from the mapping list, check how it was created: AnyTrack maps to actions of type Website with Manual Setup, and MCC-created or pageview-rule goals won’t show. Unmapped events are dropped.
Step 5: Remove Duplicate Google Tracking
Two systems reporting the same order means an inflated Conversions column and bidding on phantom revenue. The Shopify and Google Ads guide walks through the cleanup:
- Remove any Google Ads conversion
gtagfrom your theme code and disable Google Ads conversion tags in Google Tag Manager. - In Shopify, go to Settings → Apps and sales channels → Google and YouTube → Settings and turn off Conversion Measurement.
- If GA4 imports conversions into Google Ads, disable that import so orders don’t arrive twice.
- In Google Ads, keep only your mapped Purchase as a primary action; demote the rest to secondary.
Step 6: Verify Your Setup
- Place a test order, or wait for a real one, and confirm it lands in the Shopify integration’s Event Log in AnyTrack.
- In Google Ads, open the Purchase action’s Diagnostics tab. You’re looking for Recording recent conversions, and, once volume accumulates, an Enhanced Conversions match rate above 50%.
- Be patient with Google’s side of the ledger: last-click conversions appear within about 3 hours, other attribution models take up to 15, and a brand-new conversion action can take 3 to 5 days to start displaying data.
Step 7: Launch the Campaign Stack
The signal is fixed. Two campaigns put it to work, and both run on the events already flowing.
Performance Max: scale on real order values
Google’s automation is only as smart as the revenue data you feed it. Now it’s fed.
- Destination: your best-selling collection or product pages, with Auto-Tag enabled and AnyTrack’s UTM tracking template in the account-level tracking template, so the Campaign Report ties every order to the campaign that earned it.
- Budget: hold your current level through a week of learning on the new signal, then scale in steps of about 20% while the Campaign Report ROAS holds. Big jumps reset delivery learning.
- Audience: feed the asset group’s audience signal with your buyers, built from the
Purchaseevents AnyTrack sends, and let Performance Max prospect outward from what a real customer looks like. - Event tracking: optimizes on the server-side
Purchasewith its order value; generates theViewContent,AddToCart, andInitiateCheckoutevents that fill the retargeting pool below. - Conversion objective: your mapped Purchase action under Maximize Conversion Value, with a tROAS target once you have a few weeks of stable purchase volume. While purchase volume is still too thin for value bidding to learn, run a campaign-level custom goal on your mapped
InitiateCheckoutaction, then hand the campaign back to the Purchase action as sales accumulate.
Retargeting: close the abandoned carts
The cheapest revenue in your account: shoppers who already chose the product.
- Destination: the product page or cart, same account-level tracking template.
- Budget: 10 to 15% of your Performance Max spend to start. The audience size is the real ceiling, so raise budget only as the pool grows.
- Audience: a Custom Audience of
AddToCartwithoutPurchase, 7-day window, running on Display and YouTube, with buyers excluded. Both segments build from the events AnyTrack sends. - Event tracking: fed by the
AddToCartevents arriving server-side from Shopify; generates thePurchaseevents that pull each buyer out of this audience automatically. - Conversion objective: the same mapped Purchase action, so every recovered cart reports next to the campaign that recovered it.
The Optimization Loop
The next order that comes in works for you three times. Shopify’s webhook hands it to AnyTrack, AnyTrack matches it to its gclid and sends it to Google with the order total and hashed customer data attached, and Google does the rest: the buyer leaves your abandoned-cart audience, joins the purchaser signal Performance Max studies, and adds one more example of what a paying customer is worth. Google folds each conversion into bidding on its own schedule, about 3 hours for last-click and up to 15 for other models, so the improvement is continuous rather than instant. You shipped that machine in Steps 1 through 6; it doesn’t need you anymore.
What needs you is a weekly pass:
- Measure. Read ROAS per campaign in the Campaign Report, where ad spend sits next to the Shopify revenue AnyTrack attributed. Then check the Enhanced Conversions match rate in the Purchase action’s Diagnostics tab; above 70% means the checkout data is doing its job.
- Improve. Move budget toward the campaigns whose Campaign Report ROAS holds up, not the ones that only look good in Google’s own column. Climb the ladder: any campaign still optimizing on
InitiateCheckoutgraduates to the Purchase action once its sales volume matures, and Purchase campaigns graduate to tighter tROAS targets. - Expand. When the abandoner pool outgrows one campaign, split
AddPaymentInfowithoutPurchaseinto its own tier: those shoppers stopped at the last field of checkout, and they’re worth a stronger bid. Then point the surplus budget at a second Performance Max asset group seeded with the same buyer signal.
Google gets sharper between your check-ins; you get sharper at them. Both run on a purchase count that finally matches your store admin.
Wrapping Up
Here’s what you shipped:
- Every Shopify checkout event tracked server-side, immune to iOS and ad blockers, with order values normalized.
- Enhanced Conversions running on autopilot: hashed customer data on every sale, no code, no manual hashing.
- A Performance Max and retargeting stack bidding on real revenue, with duplicate Google tracking cleaned out.
- One Campaign Report where ad spend and Shopify revenue finally agree.
Sending conversions through the Conversion API requires a paid plan (Starter or above); the Free plan tracks events in your dashboard. Running Meta alongside Google? The same events power the Meta Conversions API playbook, no extra setup on the Shopify side.
Explore Related Playbooks
Send Shopify Purchases to the Meta Conversions API
Meta reports fewer conversions than Shopify, and your campaigns scale on a number that isn't real. This playbook sends every checkout event server-side, deduplicated by AnyTrack before it reaches Meta.
The Advertorial + Shopify Playbook
Run Taboola traffic to an advertorial, follow every reader across domains to your Shopify checkout, and retarget the ones who mattered on Meta and Google. One Tracking Tag, zero lost signals.
Build TikTok Custom Audiences from High-Value Buyers
TikTok can find more of your best customers, but only if it knows who they are. This playbook sends full order values server-side, so you can build value-based audiences and lookalikes from the buyers who move your AOV.
