E-COMMERCE ANALYTICS

Qatar e-commerce analytics needs COD fulfilment as the conversion event, not order placement — and most GA4 setups in the GCC are measuring the wrong moment

In Qatar and across the GCC, cash on delivery is the dominant payment method for a significant share of orders. A GA4 purchase event that fires at order placement is recording a conversion that has not yet been confirmed by payment. When 15 to 25 per cent of COD orders are not collected by the courier, the purchase events already recorded in GA4 overstate revenue and overstate ROAS for every campaign that drove those orders. The correct architecture fires a secondary GA4 conversion event from the fulfilment webhook when the carrier confirms cash collection.

This is for you if

Who This Is For

Qatar and GCC-based Shopify brands where COD is a significant payment method, Snapchat Ads is an active channel, and the current analytics setup does not distinguish between placed orders and fulfilled orders in conversion reporting.

What's broken

The Problems We Fix

GA4 purchase event at order placement overstating Qatar revenue

GA4 receives a purchase event when a Shopify order is placed, regardless of whether payment is collected. For COD orders, this means campaigns are optimised against conversions that include a 15 to 25 per cent non-delivery rate. ROAS figures are systematically overstated. The correct implementation adds a fulfilment webhook that fires a second GA4 event (or updates the original purchase event value to zero for non-collected orders) when the carrier confirms delivery and cash collection. Google Ads campaign optimisation should use the fulfilment-confirmed conversion as the primary conversion action.

Arabic-language session data not segmented in GA4

Qatar buyers using Arabic-language product pages, Arabic-language checkout flows, and Arabic-language search queries behave differently from English-language buyers. Without language segmentation in GA4, it is not possible to measure Arabic-language add-to-cart rates, checkout completion rates, or product page performance separately from English-language data. GA4 custom dimensions for browser language and a language-specific URL structure (if the store uses `/ar/` and `/en/` paths) enable clean segmentation of Arabic and English buyer journeys.

Snapchat Pixel not installed

Snapchat reaches a younger Qatari audience at scale — Qatar has among the highest Snapchat penetration rates globally relative to population. Brands running Snapchat Ads campaigns without the Snapchat Pixel installed have no conversion data flowing back to Snapchat Ads Manager, no ROAS figure, and no audience signal for Snapchat's optimisation algorithm. The Snap Pixel must be installed via GTM with purchase, add-to-cart, and view-content events, and Snap Conversions API configured server-side to reduce iOS signal loss.

No GCC-wide performance dashboard

Qatar brands also selling across UAE and KSA through separate Shopify markets — with separate Google Ads accounts, Meta ad accounts, and Snapchat accounts per market — have no consolidated view of GCC performance. A Looker Studio dashboard pulling GA4 data from the Shopify Markets Qatar, UAE, and KSA segments alongside the respective advertising platform data gives the decision-maker a single view of CAC, ROAS, and revenue by GCC country.

What we engineer

What We Build

Shopify fulfilment webhook to GA4 event pipeline

Shopify fulfilment webhook to GA4 event pipeline so COD-confirmed deliveries fire a GA4 conversion event separate from order placement

GA4 custom dimensions for browser language and Shopify market

GA4 custom dimensions for browser language and Shopify market (Qatar, UAE, KSA) for Arabic/English segmentation and GCC market segmentation

Snapchat Pixel installation

Snapchat Pixel installation via GTM with purchase, add-to-cart, and view-content events plus Snap Conversions API server-side configuration

Google Ads and Meta Ads conversion import

Google Ads and Meta Ads conversion import using the fulfilment-confirmed GA4 event as the primary conversion action

GCC-wide Looker Studio dashboard

GCC-wide Looker Studio dashboard combining GA4, Google Ads, Meta Ads, and Snapchat Ads data across Qatar, UAE, and KSA markets

Conversion tracking health check

Conversion tracking health check with COD adjustment rate documentation and ROAS correction methodology

What changes

What you can measure after the analytics infrastructure is in place

Before
After
Before Purchase, add-to-cart, and checkout events are not firing in GA4. Campaign performance cannot be measured against revenue. There is no way to identify which product pages are converting and which are not. Shopify's built-in analytics records that a sale happened but does not tell you which Google or Meta campaign produced it, which keyword the buyer searched, or which product page they landed on before purchasing. Without GA4 e-commerce events configured through Google Tag Manager, your paid campaigns are running blind.
After GA4 shows revenue by acquisition channel — organic search, paid Google, paid Meta, direct, and email are separated into distinct channel groups with revenue attributed to each
Before The Shopify Meta Pixel integration and a manually added Pixel code are both firing on the order confirmation page. Meta is reporting double the actual purchase volume, which inflates your ROAS. This is a common error on Shopify stores that installed the Meta Pixel through Shopify's native integration and then added a second Pixel code snippet directly to the theme. Both tags fire on the thank-you page and Meta counts two purchase events for one transaction. The result is that your Meta dashboard shows a ROAS that is mathematically impossible to reconcile with Shopify revenue.
After Meta purchase events are deduplicated — one purchase in Shopify equals one purchase event in Meta; ROAS calculations are based on actual transaction volume, not inflated event counts
Before Buyers who pay through eSewa or Khalti are redirected away from your Shopify store to an external payment page, then returned to the order confirmation page. The GA4 purchase event on the confirmation page fires correctly for buyers who return through the standard redirect URL. Buyers who use a different return path — or whose browser blocks the event after the redirect — are not measured. This creates a domestic revenue gap in your GA4 data: eSewa and Khalti transactions appear at a lower volume than they actually occur.
After eSewa and Khalti transactions are measured — domestic payment completions are captured in GA4 at the highest rate the payment redirect path allows
Before Klaviyo is sending email and flow campaigns with no click tracking enabled. Email-attributed revenue is not visible in Klaviyo reports. The relationship between lifecycle email sends — welcome flows, abandoned cart sequences, post-purchase campaigns — and actual Shopify revenue is not measurable. You cannot tell whether your email list is driving repeat purchases or whether those buyers were returning regardless of the emails.
After Klaviyo email revenue is visible — each email campaign and flow shows attributed Shopify revenue, click rate, and revenue per recipient
How it works

How the analytics engagement works

  1. 01

    Audit

    Days 1-3

    We review your current GA4 property, GTM container, Meta Pixel, and Klaviyo account. We document every tracking gap, every duplicate event, and every configuration error in a written audit report. You receive the report before any implementation begins.

  2. 02

    Implementation plan review

    Day 4

    We walk through the audit findings and the proposed implementation plan. You confirm the scope before work starts.

  3. 03

    GTM configuration and GA4 e-commerce setup

    Days 5-8

    We build the GTM container with the GA4 e-commerce event layer, the Meta Pixel tag, and the Conversions API configuration. We test each event using GTM Preview mode and GA4 DebugView before publishing.

  4. 04

    Payment gateway testing

    Days 8-10

    We run test transactions through eSewa and Khalti to verify the GA4 purchase event fires correctly after the payment redirect. We document any gaps in the post-redirect firing and implement the best available workaround.

  5. 05

    Klaviyo configuration and handover

    Days 10-12

    We configure UTM tracking on Klaviyo links, verify revenue attribution is active, and deliver a handover document covering every tag, trigger, and variable in the GTM container.

Common questions

Frequently Asked Questions

How do I track COD order fulfilment as a GA4 conversion event for Qatar?

Shopify's order fulfilment webhook (`orders/fulfilled`) fires when an order's fulfilment status is updated to fulfilled. A server-side function (via Shopify Flow, a custom webhook handler, or a middleware service) listens for this event and sends a GA4 Measurement Protocol hit with the event name `purchase_fulfilled` and the original order value. In Google Ads, import `purchase_fulfilled` as the primary conversion action so campaign bidding optimises against confirmed deliveries, not placements.

How do I segment Arabic-language and English-language sessions in GA4 for a Qatar store?

Use the `browser_language` event parameter as a GA4 custom dimension. Arabic-language sessions will have `ar` or `ar-QA` as the browser language value. If the Shopify store uses language-specific URL paths (`/ar/` for Arabic, `/en/` for English), a GTM variable reading the URL path provides a more reliable segmentation signal than browser language, since some Arabic-speaking buyers browse in English. Both dimensions together give a complete picture of language-based buyer behaviour.

How do I install and configure the Snapchat Pixel for a Qatar Shopify store?

The Snapchat Pixel is installed via GTM by adding the Snap Pixel base code as a custom HTML tag that fires on all pages. Purchase events are triggered on the Shopify order confirmation page (`/thank_you`) using a GTM trigger that reads the Shopify checkout object for order value and currency. Snap Conversions API requires a server-side GTM container or a direct Snap CAPI integration from the Shopify backend, sending purchase events with hashed customer data (email, phone) to improve match rates and reduce iOS signal loss.

How do I build a Looker Studio dashboard combining Qatar and GCC-wide e-commerce analytics?

The GA4 Looker Studio connector supports filtering by country or Shopify market segment, allowing Qatar, UAE, and KSA data to appear in the same report with a country/market dimension. Advertising platform data (Google Ads, Meta Ads, Snapchat Ads) for each market connects via their respective Looker Studio connectors or via a Google Sheets data pipeline for platforms without native connectors. Blended data sources in Looker Studio combine spend, revenue, and ROAS into a single GCC performance table with market-level breakdowns.

How do I calculate true Qatar campaign ROAS when COD non-delivery inflates reported conversions?

The standard approach is to calculate a COD adjustment rate from historical fulfilment data: divide confirmed delivered COD orders by total placed COD orders over a rolling 90-day period. Apply this rate as a revenue deflator to GA4 purchase revenue for COD orders when calculating ROAS. The more accurate long-term approach is to use the fulfilment-confirmed conversion event as the Google Ads primary conversion action, so campaign ROAS reported in Google Ads is calculated on confirmed revenue rather than placed order value.

Our team

The people behind the work

Not a black box. Real specialists you can call, with their names on the work.

Niraj Raut

Niraj Raut

Founder — Ecommerce SEO
Keshab Joshi

Keshab Joshi

PPC Expert
Hawrry Bhattarai

Hawrry Bhattarai

Google Ads Expert
Arogya Rijal

Arogya Rijal

SaaS SEO Expert
Start here

Request your Analytics Audit

Qatar and GCC-based Shopify brands where COD is a significant payment method, Snapchat Ads is an active channel, and the current analytics setup does not distinguish between placed orders and fulfilled orders in conversion reporting.