Google Tag Manager

Most themes, plugins and agencies already fill the dataLayer for GA4. Add one Custom HTML tag in Google Tag Manager and every one of those events also goes out from a first-party server, where ad blockers and Safari can't stop it.

Start freeIntegration: availableIntegrations
  • GTM dataLayer
  • Browser SDK
Trakero
  • Meta CAPI
  • TikTok
  • GA4

What you get

  • One tag

    A single Custom HTML tag on All Pages loads the SDK with dataLayer: true. No triggers or variables per event.

  • GA4 format, both styles

    Reads dataLayer.push({ event, ecommerce }) and gtag('event', …) calls: view_item, add_to_cart, remove_from_cart, view_cart, begin_checkout, add_payment_info, purchase, generate_lead, sign_up, login and search.

  • No double purchases

    A purchase becomes event purchase_{transaction_id}: the same id your server or WooCommerce plugin sends, so they merge into one. A purchase pushed twice on reload is sent once.

  • Earlier pushes included

    Events pushed before the SDK finishes loading are read too, so the first page's view_item isn't lost.

Where browser-only tracking loses the sale

Pick a situation your shoppers are in and watch one order take both paths.

Today's deliveries

Purchase #1043

Chrome, ad blocker on · Meta CAPI · 0.4 s

The ad blocker stops the browser Pixel on its way to facebook.com. The same purchase leaves your server, reaches Meta through the Conversions API and is counted.

Sample deliveries. Pick a row to watch its route.

Shopper, Sent to, Took

Set up in minutes

  1. In Tag Manager, add a tag of type Custom HTML with the snippet from Developers → Install, and add dataLayer:true to its init options.
  2. Set the trigger to Initialization - All Pages (or All Pages) and publish the container.
  3. Place an order and open the Debugger: the purchase shows source browser with your transaction id as the order id.
  4. Also send the order from your server (plugin or SDK) with the same order id, for purchases that ad blockers would stop.
track.yourstore.comTrakero

Your store → your domain → Meta, Google, TikTok

Questions

Do I need a server-side GTM container?

No. Trakero is the server. You don't need to host or pay for a separate server container.

What if my purchase push has no transaction_id?

It isn't sent from the dataLayer, because it couldn't be matched with the server copy. Add transaction_id (your order number) to the push.

I already call trakero() in my theme. Should I turn this on?

No: keep one of the two, or you would send each event twice.

Start counting every order today

Create a free account, connect your store and watch a test order arrive in Meta Events Manager.

Free plan · No card needed · Set up in one afternoon