What a platform needs to count a purchase
Each platform wants a purchase event with a few fields: the order's value and currency, an ID for the order, and something that ties the purchase to a person or a visit. For Meta that is a browser ID, a click ID or hashed customer data such as an e-mail address. For GA4 it is the visitor's client ID. For Google Ads it is the click ID that auto-tagging adds to the ad link, and Google's enhanced conversions can add hashed customer data.
The value and the order ID are easy to send. The identifiers are harder, because most of them live in the shopper's browser. So the browser matters even when a server sends the purchase.
Path 1: the browser
On Shopify, browser tracking runs through pixels. Shopify's help says you add and manage pixels in the Customer events section of your Shopify admin, and that pixels load on the storefront, the checkout, the Thank you page and the Order status page. There are two kinds:
- App pixels. A sales channel or app adds them, for example the Facebook & Instagram channel or the Google & YouTube channel. Shopify's developer documentation says app pixels run in a strict sandbox.
- Custom pixels. You or a developer paste code into Customer events. These run in a lax sandbox, an iframe that cannot read or change the page itself. Shopify says not every feature of a third party's code works there.
Some stores also have tracking code in the theme or in a Google Tag Manager container. Older purchase code in the additional scripts of the Thank you page may no longer run after Shopify's move to the newer Thank you and Order status pages, so check that any purchase tag you rely on still runs.
Browser tracking captures the identifiers well, because it runs where they are. Its weak point is that the purchase is reported only if the browser gets that far and lets the code run. An ad blocker, a privacy setting, a declined cookie banner or a shopper who closes the tab before the Thank you page loads all stop it. Shopify also says that in markets that require consent, pixels run only when the visitor has given the permissions the pixel needs.
Path 2: the server
Shopify can notify an app when an order is created or paid. An app that receives that notification can send the purchase from its own server, through Meta's Conversions API or GA4's Measurement Protocol. Google Ads has its own server routes, such as conversion imports, which need the click ID stored at the visit.
A server does not depend on the Thank you page loading, and browser blockers do not stop the request itself. It has limits too:
- It knows the identifiers only if they were captured in the browser earlier and kept with the order. Without them the purchase still arrives, but the platform may not tie it to an ad or a visit.
- Google says the Measurement Protocol is meant to add to the data your Google tag collects, and that sending events with it alone may give only partial reporting.
- It must still respect the buyer's consent choice.
More on this path: Shopify server-side tracking.
Each platform, in short
- Meta: the Facebook & Instagram sales channel adds the Meta pixel and, at its Enhanced and Maximum data sharing levels, also sends purchases through the Conversions API. See Meta Conversions API on Shopify.
- Google Analytics 4: the Google & YouTube sales channel adds the Google tag. A purchase is a
purchaseevent with a transaction ID, value and currency. - Google Ads: a purchase conversion action set as Primary counts in the Conversions column. It can come from the Google tag, an import from GA4, or a server upload.
- TikTok, Pinterest and Snapchat: each has its own sales channel or pixel, and each offers a server API for purchases. For Pinterest, see how its Conversions API works on Shopify. For Snapchat, see setting up Snapchat's Conversions API.
- Klaviyo: order and checkout events reach it from Shopify's servers, browsing events from the browser. More in how Klaviyo tracks Shopify events.
Why each purchase needs one sender, or a shared ID
Many stores end up with two senders for one purchase, for example a sales channel app plus a Tag Manager tag. Each platform spots a repeat by its own rule.
- Meta treats a browser event and a server event as one when they carry the same event name and the same event ID, and Meta's developer documentation says this works within 48 hours.
- GA4 removes purchase events with the same transaction ID. Google's help says this applies to the same user and to web streams.
- Google Ads counts in the Conversions column only the actions you set as Primary. Two Primary purchase actions can count one sale twice.
When the IDs differ, the platform counts both, while some real orders may still be missing.
Check your own setup
- 1In Shopify admin, open Settings > Customer events and list every app pixel and custom pixel.
- 2Open your theme code and any Tag Manager container. Note each tag that sends a purchase, and to which platform.
- 3For each platform, write down every sender you found. More than one sender per platform needs a shared ID or a decision to keep one.
- 4Count your paid online orders for the last 7 full days in your store's time zone. Leave out point of sale sales, draft orders and subscription renewals.
- 5Compare that count with the purchases each platform shows for the same days. Fewer points to a lost sender, more points to a doubled one.
- 6In Meta Events Manager, check whether purchases arrive from the browser, the server or both. In GA4, look for repeated transaction IDs in an Explore report.
Or let Tikra check it for you: install from the Shopify App Store
How Tikra does it
Tikra sends each paid online order of your Shopify store from our server to Meta, Google Analytics 4, Google Ads, TikTok, Pinterest, Snapchat, Klaviyo and ChatGPT Ads, and keeps a record for each order: what was sent, when, and the platform's answer. For GA4 that answer means Google received the order without an error. Tikra adds its web pixel to read the buyer's consent choice and browser identifiers, and it makes no theme changes. In Strict mode an order is sent only with the buyer's consent, and an order from a buyer who declined is never sent to the platforms that choice covers.
Before it sends to Meta, Tikra checks Meta's own count for another sender, and every hour it sends again what a platform did not accept. Google Ads and Google Analytics 4 connect by logging in to Google and choosing your account from a list.
With a plan, a guarantee in our Terms covers eligible orders: at least 97 % reach each platform, fixed within 12 hours or a month's fee credited. Terms apply.
Frequently asked questions
Is Shopify's own tracking enough?
For many small stores the sales channel apps are a good start. They depend on the browser, so stores with many mobile shoppers, ad blocker users or consent declines usually see a gap between orders and platform purchases.
Do I need server-side tracking?
If the platforms clearly count fewer purchases than your paid online orders, and declined consent does not explain the gap, a server connection helps. If they count more, fix the doubled sender first.
Can I turn off the browser pixel once a server sends purchases?
For Meta, purchases can come from the server alone. For GA4, Google says a server alone gives only partial reporting. The browser pixel also sends page views, product views and add to cart events, and it captures the identifiers. Turning a sales channel pixel off stops all of that.
Why do Meta, GA4 and Google Ads all show different numbers?
Each counts by its own rules: different attribution windows, different time zones and different ways to spot repeats. Compare each one with your orders, one at a time.
Will I count purchases twice?
Only when two senders send the same purchase without a shared ID: the same event ID for Meta, the same transaction ID for GA4, one Primary action for Google Ads.
Does conversion tracking work with my consent banner?
It has to. In markets that require consent, Shopify runs pixels only with the visitor's permission, and a server must apply the same choice.
Check your store
Install Tikra from the Shopify App Store
Check that your tracking works
Related: Meta counts purchases twice