Al-Shiʿra · Sirius

How do you set up ecommerce tracking you can trust?

7 min read Updated

Every scaling decision you make — which campaign gets budget, which creative lives, which channel dies — is only as good as the numbers underneath it. And in Gulf ecommerce the numbers are routinely broken: a pixel pasted twice by an old app, a Conversions API added by a setup wizard that double-counts every purchase, currency mismatches that turn 370 SAR into 370 USD. Stores then scale the campaign that looks best in a dashboard that is lying to them.

This guide builds tracking that tells the truth: the three-layer architecture, Meta pixel plus Conversions API with deduplication done right, the GA4 events that matter for stores, exactly where the switches live on Salla, Zid and Shopify, and the weekly reconciliation habit that catches breakage before it costs a month of budget.

The three layers of tracking that tells the truth

Layer one is the browser pixel — Meta, TikTok, Snap, Google — which captures on-site behavior but loses events to iOS privacy limits, ad blockers and flaky connections. Layer two is server-side: the Conversions API (and its TikTok/Snap equivalents) sends the same events from your store's server, recovering what browsers drop. Layer three is neutral analytics — GA4 — which measures every channel with one consistent ruler instead of each platform grading its own homework.

Above all three sits the ground truth: your store's order list. Ad platforms estimate with modeled attribution and view-through credit; your back office counts money. Any tracking setup that cannot be reconciled against actual orders is decoration. Build the three layers, then check them against reality weekly — that habit, more than any tool, is what makes tracking trustworthy.

Meta pixel and Conversions API setup — without double counting

The pixel and the Conversions API intentionally send the same purchase twice — once from the browser, once from the server — and Meta deduplicates them only if both events carry the same event name and the same event ID. The correct event ID is your order number: it is stable, unique, and identical on both paths. Setup wizards and some plugins instead generate a random or timestamp-based ID per call, so the browser and server versions never match, and every purchase counts twice.

The symptoms of broken dedup are unmistakable: Events Manager shows roughly double your real purchases, ROAS looks suddenly heroic, and the inflation starts the exact day the CAPI integration went live. To verify: open Events Manager, select the Purchase event, and check that events arrive from both 'browser' and 'server' with a healthy deduplication rate — then count a day's purchases against your store's order list.

The practical checklist:

  • Use one integration path, not two: either your platform's official Meta integration or a manual pixel+CAPI setup — never both simultaneously (the classic Shopify mistake: native Meta channel plus a leftover theme pixel).
  • Set event_id = order number on both browser and server purchase events.
  • Send value and currency on every purchase — and verify the currency code matches your store's actual currency.
  • Pass customer parameters (hashed email/phone) server-side to improve match quality — it directly improves delivery.
  • After any app install, theme change or platform migration: re-test purchases within 48 hours.

GA4 for online stores: the events that matter

GA4 is your referee because it has no ad budget to flatter. For a store, only a handful of events matter, and they must carry parameters: view_item, add_to_cart, begin_checkout, add_payment_info and purchase — with items, value, currency, and a transaction_id (the order number again) on the purchase. Salla, Zid and Shopify all offer GA4 integrations that map these automatically; verify them in GA4's Realtime view by placing a test order, not by trusting the checkbox.

Two Gulf-specific traps. First, currency: a store selling in SAR but sending USD codes quietly corrupts every revenue report. Second, payment-gateway referrals: shoppers who bounce to a payment page and return can get their session re-attributed to the gateway — add your payment providers to GA4's unwanted-referrals list, or a chunk of your paid revenue will report as 'referral traffic'. With those fixed, GA4's channel comparison becomes the closest thing you have to an honest scoreboard.

Where the switches live on Salla, Zid and Shopify

Each platform hides the same functionality in different places:

  • Salla: pixel and analytics integrations live in the store dashboard's linkage settings and the app store — Meta, TikTok, Snap and Google connections handle pixel plus server events. Rule: connect each platform through one app only, and remove any manually pasted pixel code from theme settings.
  • Zid: same model — official integrations in Zid's app market for Meta, TikTok, Snap and GA4. After connecting, place a test order and confirm one purchase event arrives, with correct value and SAR currency.
  • Shopify: the official Meta, TikTok and Google channels handle pixel plus server-side with dedup automatically. The most common breakage is legacy code — an old checkout script or theme-embedded pixel running alongside the channel. One integration per platform, period.
  • All platforms: after every migration (for example Zid to Shopify, or a theme change), rebuild the tracking checklist from zero — integrations do not carry over cleanly, and the gap usually goes unnoticed until ROAS mysteriously collapses.

The weekly truth check: reconciling platforms against real orders

Once a week, put four numbers side by side: actual orders and revenue from your store's back office, and reported purchases from Meta, TikTok/Snap, and GA4. They will never match exactly — platforms use different attribution windows, count view-through conversions, and model iOS gaps — but the relationship should be stable. GA4 typically reports slightly under your back office; each ad platform claims some overlapping share of it.

The alarm rules: any platform reporting more purchases than your entire store actually took is double counting — check event IDs first. A sudden week-over-week jump in one platform's conversions without a matching jump in real orders means a tracking change, not a performance miracle. And when platforms disagree about which campaign wins, trust the trend that survives in blended numbers: total ad spend versus total store revenue. Dashboards are witnesses, not judges — the order list is the judge.

How Ashayrah sets up tracking for your store

We refuse to scale ad budgets on numbers we have not verified — so tracking is the first thing we build, not an afterthought.

  1. The audit

    We test-purchase through your store and trace every event: duplicate pixels, missing CAPI dedup, wrong currency, gateway referral leaks. You get a written list of what is lying to you and by how much. Free, and yours to keep.

  2. The launch

    Within 14 days: one clean integration per platform on your Salla, Zid or Shopify store, order numbers as event IDs across pixel and server, GA4 events verified with a real test order, and a reconciliation sheet comparing platforms to your back office.

  3. The scale

    The weekly truth check runs as part of our reporting rhythm — budgets move on verified cost per order and blended revenue, and any tracking drift gets caught the week it happens, not the quarter after.

Questions people also ask

Why does Meta show more purchases than my store actually received?

Two usual causes: broken deduplication between the pixel and the Conversions API (random event IDs instead of the order number), which literally double-counts, or attribution generosity — view-through conversions and 7-day click windows claiming orders other channels drove. Check dedup first; it is the fixable half.

Do I really need the Conversions API, or is the pixel enough?

You need both. iOS privacy changes and ad blockers mean a browser-only pixel misses a meaningful share of purchases, which starves the algorithm of signal and understates your results. Server-side events recover those losses — but only with correct dedup, or you trade missing data for doubled data.

What is event deduplication and how do I fix it?

When the pixel and the server both report the same purchase, Meta keeps only one — if both events share the same event name and event ID. Use the order number as the event ID on both sides. If your Events Manager shows purchases roughly double your real orders, mismatched event IDs are almost always the cause.

Can I set up proper tracking on Salla or Zid without a developer?

Mostly yes: both platforms ship official integrations for Meta, TikTok, Snap and GA4 that handle pixel and server events. The discipline is using exactly one integration per platform, removing old pasted code, and verifying with a test order. A developer or specialist is worth it for server-side GTM or complex multi-domain setups.

Do I need Google Tag Manager for my store?

Not at the start. Platform-native integrations cover pixels, CAPI and GA4 for most stores with less breakage risk. GTM earns its place when you need custom events, multiple tools firing on one dataLayer, or server-side tagging — at that point, have it implemented properly once rather than patched repeatedly.

The fire is lit. Sit with us.

Pick your time

Booking takes 30 seconds. The consultation is free — and the plan is yours to keep.

  • 20 minutes
  • A concrete 90-day plan
  • Zero obligation
Book a free consultation

Calendar not loading? Book directly on TidyCal

Pick your time

Booking takes 30 seconds. The consultation is free — and the plan is yours to keep.

  • 20 minutes
  • A concrete 90-day plan
  • Zero obligation