Google Ads and GA4 should agree with Shopify.
The free channel app connects your store to Google. PixelRelay is the measurement layer on top: the whole funnel relayed server-side to Google Ads and GA4, with gclid plus gbraid and wbraid for iOS traffic, and a per-order record you can reconcile against Shopify when two dashboards disagree.
Keep the channel for Merchant Center and Shopping. This is about the numbers.
A funnel report is only as good as the steps in it.
GA4 funnels, audience building and Google Ads' own optimisation all read from the events before the purchase. Missing steps don't just shrink a report — they change which audiences exist and what the bidding learns from.
PixelRelay relays the complete GA4 event set server-side, so your funnel, traffic and conversion reporting all describe the same orders — and Google Ads receives purchases backed by a real ad click, which is what keeps reported conversions defensible rather than merely large.
One authoritative path in. One event spec out.
Order capture is server-to-server: Shopify hands the order straight to our server, so there is no browser script on that path for anything to strip. A first-party script rides alongside it — served from your own store's domain, never a third-party one — purely to attach the ad-click receipts that earn your campaigns credit.
From there it's one set of rules fanned out to every destination you've connected — GA4, Meta, Google Ads, TikTok, Klaviyo, Bing, Reddit, Snapchat, Pinterest, LinkedIn and Segment, plus your own server endpoints. Change a rule once and every platform gets the change. No GTM container, no theme edits, and no digital fingerprinting — first-party signals only.
Each platform gets the proof of click it recognises.
A shopper can touch three platforms before they buy. PixelRelay captures every one of those ad-click receipts on a single first-party cookie, then hands each destination the parameter it understands — so the same order can be credited correctly everywhere, and you keep one owned record of the overlap.
Know it arrived. Know when it didn’t.
Most tracking setups give you a number in a platform dashboard. The number you actually need is which orders are behind it — and which ones aren’t.
Per-order reconciliation
Live delivery status for every order, per platform, checkable against your Shopify admin — with the reason when one didn’t relay: duplicate, stale order, quota, relay disabled.
Retries that surface
Failed sends are retried automatically, capped, and surfaced in your dashboard if they still can’t be delivered — so a failure becomes a task, not a silence.
Counted once
PixelRelay recognises sales an existing sender already reported and doesn’t send them again. One order stays one conversion, in every dashboard.
Breakage alerts
Threshold-based, not hopeful: events quiet for four hours, or delivery under 80% across a day, and you hear about it — instead of finding out at month end.
Two senders, one conversion action.
PixelRelay deduplicates against events another sender already reported. Where two senders can't be matched, a conversion action can count the same order twice — so decide which source is canonical before Smart Bidding starts learning from the total.
Two senders, no decision
Inflated conversion counts don’t just misreport — they retrain bidding toward whatever the duplicate makes look cheap.
One canonical source
One source of truth per conversion action, and a per-order ledger you can check against Shopify when the numbers are questioned.
What we do — and how to check what you have.
We’re not going to tell you what another app does under the hood; we don’t run it and it changes. Here’s what PixelRelay does, and the question that settles each row for your own store.
| Capability | PixelRelay | Check in your own admin |
|---|---|---|
| Event coverage | Product views, add-to-carts, cart views, checkout starts and purchases — the whole funnel, relayed server-side | Open your platform’s event dashboard. Which of those five are arriving, and which are marked server-side? |
| Destinations | One install, one event spec, 11+ destinations — including ones with no free channel app | Count the tracking apps on your store. To change one rule, how many places do you change it? |
| Ad-click receipts | gclid, gbraid and wbraid for iOS, fbclid and ttclid — captured on one first-party cookie with a 365-day window | Pull a recent converting order. Can you see which ad click it came from, on every platform at once? |
| Per-order delivery | Live delivery status per order, per platform — with the reason when one didn’t relay | Name an order from yesterday that didn’t reach the platform. Can you? |
| Retries | Automatic and capped on failed sends, surfaced in your dashboard if they still can’t be delivered | When a send fails today, where does that appear? |
| Breakage alerts | Threshold-based — events quiet 4h, or delivery under 80% over 24h | If tracking broke this morning, what would tell you, and how long would it take? |
| Counted once | Recognises sales an existing sender already reported, so one order stays one conversion | If you add a second sender to this dataset, what stops the same sale counting twice? |
| Conversion value | Adjusted for excluded products — gift cards, shipping protection — so you bid on revenue you actually want | Does the value you optimise against include line items you’d rather not bid on? |
| Subscriptions | Recharge subscription starts and renewals relay as conversions | Do renewals show up as conversions in your reporting today? |
| Headless | Works on Hydrogen and headless storefronts | If you moved off the Online Store theme tomorrow, what would still be tracking? |
The right-hand column is deliberately a question, not our description of another app. We don’t run it, and it changes.
When the free app on its own is enough.
If Google is your only channel, spend is modest, and nobody is reconciling GA4 against Shopify, the free channel app on its own is a fine place to start. Most stores begin exactly there.
It stops being enough the first time Google Ads, GA4 and Shopify give you three different numbers for the same week and there’s no per-order ledger to settle it — or when iOS traffic starts arriving without a gclid and nothing is catching gbraid and wbraid instead.
- Google only, modest spendThe channel app is fineNo one is making budget calls off a reconciliation you don’t have yet.
- Dashboards disagree, or iOS is materialConsolidate the measurement layergclid, gbraid and wbraid captured first-party, and a ledger that settles the argument.
Before you change anything.
gclid. If your setup only ever looks for gclid, those clicks arrive with no receipt attached. PixelRelay captures all three first-party.We describe what PixelRelay does; we don’t describe another app’s internals. Shopify and Google change their app settings and menus periodically — confirm the current labels in your own admin. Last reviewed August 2026.
Stop losing conversions to ad blockers.
Install the Shopify app from the App Store and start relaying orders server-side today.
// install from the Shopify App Store. That’s the whole setup.
delivery status you can check against Shopify.Failed sends retry automatically and surface in your dashboard.