BigCommerce tracking

BigCommerce Conversion Tracking: GA4, Meta CAPI & Server-Side

This is for BigCommerce merchants whose GA4, Google Ads and Meta numbers don't line up with their orders. BigCommerce has native GA4 and Meta connections, Script Manager, theme files and apps that can all add tracking, so stores often end up with three senders for the same purchase. I pick one clean path for each event and back the important ones up server-side.

BigCommerce · Ecommerce
  • One sender per event across native integrations, apps and Script Manager
  • Purchases from the order confirmation page with order ID and value
  • Server-side purchases from BigCommerce order webhooks
  • Meta CAPI and Google Ads enhanced conversions, deduplicated
Quick answer

Proper BigCommerce tracking means one GA4 and one Meta setup, not the native integration plus GTM. GTM is added through Script Manager with the right page locations and consent category, purchases fire on the order confirmation page with the order ID, and server-side GTM sends Meta CAPI and other platforms a backup copy from order data.

Tracking flow

How tracking works on BigCommerce

The events I set up on BigCommerce, and where each one is sent.

Why it breaks

Why BigCommerce tracking goes wrong

Native integrations plus GTM

BigCommerce can send GA4 and Meta events natively, and many stores also add GTM or an app that does the same. Each one fires its own purchase, so platforms report more sales than you made.

Script Manager locations and checkout

Scripts are placed on storefront pages, checkout, order confirmation or all pages. Storefront-only scripts never see the checkout or confirmation page, and checkout placement only applies to BigCommerce's Optimized One-Page Checkout.

Consent category hides scripts

Every Script Manager script has a consent category. With the cookie banner enabled, a script left in the wrong category may load late or not at all, and tags quietly stop firing.

No GA4-ready dataLayer on custom themes

Stencil themes don't output a full GA4 ecommerce dataLayer for GTM by default. Custom-built events often miss item IDs that match your Merchant Center feed, or skip add-to-cart from quick view and category pages.

Headless storefronts lose the built-ins

On a headless or Catalyst storefront, native script injection and some integrations don't apply. Tracking has to be built into the frontend and the server.

What I set up

My BigCommerce tracking setup

Audit & GTM

  • Inventory of native integrations, apps, theme code and Script Manager entries
  • GTM added through Script Manager on all pages with the correct consent category
  • Duplicate GA4 and Meta senders switched off
  • Ecommerce dataLayer for product, cart and checkout events
  • Item IDs aligned with your Google Merchant Center feed

Purchase tracking

  • purchase on the order confirmation page with order ID, value, tax, shipping and items
  • Google Ads purchase conversion with enhanced conversions
  • Meta Pixel purchase with a shared event ID
  • TikTok purchase event if you advertise there

Server-side

  • Server-side GTM on Stape or Google Cloud with a tracking subdomain
  • BigCommerce order webhooks routed to server-side GTM
  • Meta Conversions API with hashed customer data
  • GA4 and TikTok server events where they add value
  • Offline or refund adjustments where your ad platforms support them

Consent & QA

  • Cookie banner and Script Manager categories mapped to Consent Mode v2
  • Test orders through each payment method
  • Deduplication check in Meta Events Manager
  • Revenue reconciliation against BigCommerce orders
  • Written event map and handover
Event map

Events I track on BigCommerce

EventWhen it firesSent to
view_item_listCategory, brand or search page loadsGA4
view_item / ViewContentProduct page or quick view openedGA4, Meta Pixel + CAPI, TikTok
add_to_cart / AddToCartProduct added from product, category or quick viewGA4, Meta Pixel + CAPI, TikTok
begin_checkout / InitiateCheckoutCheckout page loadsGA4, Meta Pixel + CAPI, TikTok
add_payment_infoPayment step reached in checkoutGA4
purchase / PurchaseOrder confirmation page loads (once per order)GA4, Google Ads, Meta Pixel, TikTok
purchase (server)BigCommerce order webhook received by server-side GTMMeta CAPI, GA4, TikTok Events API
Process

How the setup works

  1. 01

    Audit

    I list every source of tracking on the store and compare recent purchases in GA4, Google Ads and Meta with your BigCommerce orders.

  2. 02

    Choose one path per event

    We decide what stays with native integrations, such as product catalogue sync, and what moves to GTM. Everything else is switched off.

  3. 03

    Build browser and server tracking

    I add GTM through Script Manager, build the ecommerce dataLayer and confirmation page purchase, then connect order webhooks to server-side GTM.

  4. 04

    Test checkout

    I run test orders through each payment method with the cookie banner active, and check every platform counts each order once.

  5. 05

    Monitor and hand over

    I compare numbers against BigCommerce for two weeks, then hand over the event map and Script Manager notes.

Script Manager, checkout and the order confirmation page

Script Manager is the right place for GTM on a Stencil store. The location setting matters: storefront pages exclude checkout and order confirmation, so a GTM container placed there never sees a purchase. I place GTM on all pages, then let GTM decide what fires where.

The consent category matters too. When the store's cookie banner is on, BigCommerce uses each script's category to decide whether it loads. I set GTM up so it always loads and passes consent state to tags through Consent Mode, rather than having the whole container blocked.

Native GA4 and Meta vs GTM

BigCommerce's native GA4 connection and Meta channel are easy to switch on and handle catalogue sync well. For conversion tracking they give you less control over parameters, deduplication and other platforms, and they are the usual cause of duplicate purchases when GTM is added on top.

I usually keep the Meta channel for catalogue and shops features and move conversion events to GTM and server-side GTM, or keep the native events and skip the matching GTM tags. Either works, as long as there's one sender per event.

FAQ

BigCommerce tracking FAQ

How do I add Google Tag Manager to BigCommerce?

Add the GTM snippets through Script Manager, set the location to all pages so checkout and order confirmation are covered, and pick a suitable consent category. Older Blueprint themes don't support Script Manager and need theme edits instead.

Why does BigCommerce report different sales from GA4 and Meta?

Common causes are duplicate senders from native integrations and GTM, scripts placed only on storefront pages, consent settings blocking tags, and ad blockers. A server-side purchase from order webhooks closes most of the gap.

Can I use BigCommerce's native GA4 integration with GTM?

You can, but not for the same events. If the native GA4 integration sends purchases, don't send them from GTM too. I usually choose one and document which events it owns.

Does BigCommerce support Meta Conversions API?

Meta's BigCommerce channel can send server events. For more control, or to send the same order to Google Ads, GA4 and TikTok, I use server-side GTM fed by the browser and by BigCommerce order webhooks, with shared event IDs.

Can you track a headless BigCommerce store?

Yes. On a headless storefront I build the dataLayer into the frontend code and send server events from your backend or order webhooks, since native script injection doesn't apply there.

Guides

Read next

Want your BigCommerce tracking fixed?

Get a free audit of your tracking and ad account. Usually replies within 1–2 hours.