How to test GA4 and Meta Pixel events together in one journey
Many online stores send the same funnel twice: once to Google Analytics™ 4 and once to the Meta Pixel. Testing each platform on its own (DebugView for one, test events in Events Manager for the other) means checking two separate views, and it is easy to miss that a step fired on one side only. You can check both in the same journey with Chrome DevTools.
Show both platforms in one Network filter
- Open DevTools (F12), go to the Network tab and tick Preserve log, so the requests stay listed when the page changes.
- In the filter, type
/\/g\/collect|facebook\.com\/tr/. Chrome reads text between slashes as a regular expression, so the list shows GA4 requests (to a/g/collectpath, including server-side tagging endpoints that keep it) and Meta Pixel requests (tofacebook.com/tr) together, in the order they were sent. - Go through the journey once, one step at a time: product page, add to cart, checkout and a test order.
Match each step on both sides
These are the usual pairs between Google’s recommended ecommerce events and Meta’s standard events. Your plan may use
others, such as generate_lead and Lead for a lead form.
| Step | GA4 (en) | Meta Pixel (ev) |
|---|---|---|
| Every page | page_view | PageView |
| Product page | view_item | ViewContent |
| Add to cart | add_to_cart | AddToCart |
| Checkout start | begin_checkout | InitiateCheckout |
| Order confirmation | purchase | Purchase |
Where to read the data in each request:
- GA4:
tidis the measurement ID,cuthe currency,epn.valuethe value,ep.transaction_idthe order ID andpr1,pr2… the items (with fields such asid,nm,prandqt). A POST request can carry several events, one per line of the request body. - Meta Pixel:
idis the pixel ID,cd[value]andcd[currency]the value and currency,cd[content_ids]a JSON array of product IDs, andcd[contents]andcd[num_items]the products and their number, when the site sends them.
What to look for
- Every step fires on both sides. A step that appears only in GA4 or only in Meta usually points to a trigger missing in one tag, a condition that only one tag waits for (consent or a data layer event), or a page, such as a checkout on another domain, where one of the tags is not installed.
- The same products. Compare GA4 item IDs with Meta’s
content_idsor theidfields incontents. Different identifiers can represent the same products if you have a known mapping. For catalog ads, check that Meta’s identifiers match the relevant products or product groups in your catalog, according tocontent_type. - The same value and currency, or a difference you know about. Google recommends that the GA4 purchase value exclude tax and shipping; if Meta receives the order total, the two differ by design. See how to check a GA4 purchase.
- Once per step. Each step should send each event once per destination. Reload the order confirmation page: the purchase should not be sent again.
- Consent applied to both. Repeat the journey rejecting cookies in your banner. Google’s tags follow
Consent Mode (look at
gcsandgcd), but the Meta Pixel only waits if your consent tool or tag setup holds it back or callsfbq('consent', 'revoke'). See how to check Consent Mode v2.
Keep a record
For each step, note the GA4 and Meta events you saw and anything missing or different. If you share a HAR file saved from DevTools, review it first: recent versions of Chrome leave cookies and authorization headers out of the HAR by default, but URLs and request bodies can still contain personal data.