Trakero
Destinationavailable

GA4 server-side purchases with the Measurement Protocol

GA4's Measurement Protocol accepts server events but silently drops invalid ones. Trakero validates, stitches server purchases into the browser session, and uses the order id as transaction_id.

Browser SDKYour serverWooCommerceTrakerodedup · hash · retryGA4

Illustration of the event flow

What you get

Joins the browser session

Server events carry the client_id and session_id from the _ga cookies, so revenue lands in the right session and source.

One purchase per order

transaction_id is always the order id, GA4's own safety net against duplicates.

Within GA4's limits

Events older than 72 hours are not sent (GA4 would drop them); parameters are trimmed to GA4's limits.

Test events validated

Test events go through Google's validation endpoint so setup problems show up before real orders.

Where browser-only tracking loses the sale

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

yourstore.com/checkout/thanksuBlock Origin · 3 requests bloOrder #10231Red dress × 2 · ৳2,580✓ confirmed · CODPlace order123456789🍪_fbc · 7-day cap✕ tab closed🖥️Your store's serverorder.status → paid✕ad blockerTrakeromerge · hash · dedupMeta · via PixelblockedMeta · via CAPI202 · delivered once

A shopper from your Facebook ad places an order.

✕ Browser Pixel: blocked✓ Trakero: delivered once

Illustration of what happens on shoppers' devices, not a measurement.

Set up in minutes

  1. 1GA4 Admin → Data streams → your web stream: copy the Measurement ID.
  2. 2Measurement Protocol API secrets → Create.
  3. 3Add the GA4 destination in Trakero and send a test event.

Questions

Should I keep my gtag?+

Yes for page views and engagement, but let Trakero send the purchase (or remove the gtag purchase), because GA4 deduplicates only purchases by transaction_id, not other events.

Platform rules from Google: Measurement Protocol (GA4).

Works together with