DEV Community

Cover image for Shopify Shows the Sale. Meta, Google Ads and TikTok Don't. Here Is the 5-Step Fix
MD Niamul
MD Niamul

Posted on Originally published at mdniamul.com

Shopify Shows the Sale. Meta, Google Ads and TikTok Don't. Here Is the 5-Step Fix

Shopify reports one order count. Meta reports fewer. Google Ads reports a different number. TikTok misses most of your sales.

The sales happened. The platforms just didn't see them. And platforms bid on what they see, so partial data means higher costs and weaker scaling.

Where the attribution gap comes from

Platforms learn from the orders you report back. Five things quietly cut that signal, and each needs its own fix:

• Ad blockers: the pixel never loads. Fix: server-side events on your own domain.
• Safari ITP: script cookies last up to 7 days, possibly 24 hours after a tagged ad click, so returning buyers look new. Fix: cookies set by your own server.
• Declined consent: pixels wait for agreement. Fix: respect the choice and send consent signals correctly.
• Retired checkout scripts: Shopify Plus additional scripts stopped running on August 28, 2025. Fix: customer events plus server-side purchase events.
• Duplicate setups: an app and GTM both send Purchase. Fix: one source per event.

Think of each ad platform as a commissioned salesperson. It needs to hear about every sale it really made, once. Server-side tracking delivers that news from a server you control, through each platform's official API.

Step 1: Audit and build one tracking map

Before you add anything, find what already exists. Review Shopify customer events (app pixels and custom pixels), list every app that adds tracking, and search theme.liquid for gtag, fbq, ttq and GTM IDs. Check whether anything still depends on the retired additional scripts.

Then write a simple map: page_view, view_item, add_to_cart, begin_checkout and purchase. For each, note the destination and whether it is sent from the browser, the server, or both. Circle every event with two sources. Those are your double-count risks.

Step 2: Build the server on your own domain

Create a Server GTM container, host it on Stape, and give it a custom subdomain on your store's domain. For the longest Safari cookie lifetime, use a same-origin setup or Stape's Own CDN. A subdomain on a different IP range can still hit the 7-day limit.

Then install the Stape Conversion Tracking app, add both container IDs, and turn on data layer events plus the purchase and refund webhooks. The webhooks send orders from Shopify's own server, so a closed tab or a blocker can't hide them.

Step 3: Connect each channel once

One server container can feed every channel from the same clean events. The deduplication rule differs by platform:

• Meta: Pixel in the browser plus Conversions API on the server. Same event name and event ID, within 48 hours. Send hashed email and phone, plus fbp and fbc, to lift Event Match Quality.
• Google Ads: Conversion Linker on all events, and a Conversion tag on purchase with value, currency and transaction ID. Turn on Enhanced Conversions.
• TikTok: Pixel plus Events API with the same event_id from both sides. Pass hashed identifiers and ttclid when you have them.

For every platform, choose one source: the Shopify app or Server GTM. Not both.

Step 4: Treat Klaviyo and Clarity differently

Klaviyo can run partly from the server. Keep the native Shopify sync and its Placed Order event, and add server events such as view_item and add_to_cart when you know the email. Never send a second order event under a new name, or you will see two order metrics.

Clarity and Hotjar are different. They record the page, so they must run in the browser, and consent is what matters. Since October 31, 2025, Clarity needs a consent signal for visitors in the EEA, UK and Switzerland, or it runs without cookies. Pass Shopify's consent choice to the tool and test both banner choices.

Server-side tracking is not a way around consent. Follow each visitor's choice on every channel.

Step 5: QA, document and hand over

Preview both containers and follow one visitor all the way to purchase. Then place real test orders and compare order ID, value and currency in Shopify, GA4, Meta, Google Ads and TikTok:

• GTM Preview: web and server events with matching IDs
• Meta Test Events: browser and server events merged
• Google Ads conversion status and Enhanced Conversions diagnostics
• TikTok Events Manager: both connection methods
• GA4 DebugView: transaction details
• Klaviyo activity feed: one server event per action

Compare platform orders with Shopify every week for the first month. Then write the playbook: event map, tags and triggers, token owners and test steps, so your team can run it without you.

Key takeaways

• Plus stores lose the record of the sale, not the sale itself
• Retired additional scripts, Safari cookie limits, blockers, consent and duplicates each need a different fix
• Audit first and build one tracking map, with one source per event
• One server container on your own domain can feed Meta, Google Ads, TikTok, GA4 and Klaviyo
• Share one event ID (Meta, TikTok) or transaction ID (Google, GA4) so each order counts once
• Clarity and Hotjar stay in the browser, and consent decides what they can do

The complete step-by-step guide, with the full checklist, testing workflow and FAQ, is here:

If you run a Shopify Plus store, which platform's order count is furthest from Shopify's right now: Meta, Google Ads, or TikTok?

— MD Niamul
Conversion Tracking & Web Analytics Specialist | Digital Soldier Agency
Want your Shopify tracking checked? My DMs are open.

ShopifyPlus #ServerSideTracking #MetaConversionsAPI #GA4 #GoogleTagManager

Top comments (0)