You can launch an ad campaign in an afternoon. You can't get back the budget that ran on broken tracking.
Here is the five-step check I run before any campaign goes live, so every purchase reaches Meta, Google Ads and GA4 once, with the right value.
*## Why purchases go missing
*
Most ad accounts don't fail at the ad. They fail at the hand-off. A visitor clicks an ad, lands on your site, fills in a GoHighLevel form, moves to a checkout, and pays. Every jump is a place where the browser can lose the signal: ad blockers, cookie limits, a new domain, a payment page that never loads your tags.
Think of browser tracking as a courier who can be stopped at any door. Server-side tracking is a direct line from your own server to the ad platform. With server-side GTM hosted on Stape, on your own subdomain, the purchase is sent from a server you control instead of a browser that may block it.
But server-side tracking is not a magic switch. It needs the five checks below.
*### Step 1: Map the funnel
*
Write down the path: Ad, Website, GoHighLevel form or checkout, Payment, Purchase. For each jump, note what must survive: the campaign data, the order ID and the order value.
If you can't say where the purchase event is born, you can't prove that it arrived.
*### Step 2: Preserve attribution
*
Capture UTMs and click IDs (fbclid, gclid, gbraid, wbraid) the moment someone lands. Store them first-party, then carry them into the form as hidden fields, through the checkout, and onto the server event. Meta also uses the _fbc and _fbp cookies to match the click to the browser, so keep them intact.
The goal is a chain you can read in your reports: Campaign, Ad set, Ad, Conversion, Purchase, within each platform's own attribution and privacy limits.
**Step 3: Send each event once
**
When the browser Pixel and the server (Conversions API) both send a Purchase, Meta needs to know it is the same sale. Send the same event name and the same event ID from both sides, and Meta keeps one.
Skip the shared ID and you risk double counting. That inflates purchases and makes your ROAS look better than it is.
**Step 4: Make the purchase data trustworthy
**
Every purchase should carry a transaction ID, the order value and the currency. In GA4, the transaction ID stops repeat counts. In Google Ads, add Enhanced Conversions so hashed first-party data (email or phone, hashed with SHA-256) helps match the conversion, and send it only where you have the right consent.
A purchase with no value is just a lead in disguise. Smart bidding can't optimise for revenue without it.
**Step 5: Validate before launch, recheck after
**
Run a real test purchase through the full funnel and watch it land in each tool:
• Meta Events Manager: Test Events, plus a check that browser and server events are merged
• GTM Preview and the server container preview
• Stape logs: request received, request sent
• GA4 DebugView and Realtime
• Google Ads conversion status
Then compare the platforms against your real orders during the first days of live traffic. Small drift is normal. A growing gap means something broke.
A note for health and other restricted categories
If your business sits in a category that Meta restricts (health is a common one), treat the rules as part of the setup. Send only event data that is allowed, keep health details and personal data out of event parameters, and read Meta's business tools terms before you design your events.
Tracking that works with platform policy lasts. Tracking built to hide what a business does does not.
**
Key takeaways
**
• Most tracking loss happens at the hand-offs (site, checkout, payment), so test every jump
• Capture UTMs and click IDs on landing and carry them all the way to the order
• Share one event name and one event ID between Pixel and CAPI to avoid double counting
• Every purchase needs a transaction ID, a value and a currency
• Test with a real purchase before launch, then recheck during the first days live
My full guide to Meta Pixel and Conversions API with server-side GTM and Stape is here:
https://mdniamul.com/blog/meta-pixel-conversions-api-capi-sgtm-stape/
When you last launched a campaign, how did you confirm that a purchase was counted once, and only once?
— MD Niamul
Conversion Tracking & Web Analytics Specialist | Digital Soldier Agency
Need your funnel checked before launch? My DMs are open.





Top comments (0)