Your GA4 reports describe the visitors who agreed to be counted
When the GA4 tag is blocked, the session is not marked incomplete. It does not exist. Your conversion rates are computed on a filtered population. The Measurement Protocol sends the event from your server, where no blocker sits in the way.
The problem
Why GA4 and your back office never agree
The gap between GA4 revenue and your store revenue is not a rounding error.
Purchases go missing, not visits
The loss is not uniform. A visitor can be counted on arrival and then vanish at purchase, because the confirmation page is where the tab closes fastest. The denominator stays, the numerator leaves.
Hosted checkouts break the session
When payment happens on a third-party domain, the return to your store looks like a fresh visit from a referral site. The sale is then credited to the payment provider instead of the campaign that produced it.
Decisions made on filtered data
These reports arbitrate budgets. If channels do not lose the same proportion of data, that arbitration runs on a distorted ranking rather than on reality.
Session continuity
What has to be sent to keep your reports intact
GA4 does not recognise a visitor by email address but by session identifiers. Sending those correctly is what separates a useful event from an orphan one.
- client_id
- The browser identifier, taken as-is from the GA4 cookie. Without it, the server event creates a new user and you get purchases with no journey, no source and no campaign.
- session_id
- Attaches the purchase to the running session instead of opening a new one. That is what lets GA4 keep the original acquisition source rather than crediting the sale to direct.
- user_id
- For identified customers, it links sessions across devices. A visitor who discovers on mobile and buys on desktop stays one person in your reports.
- consent.ad_user_data, ad_personalization
- Consent signals travel with the event. GA4 then applies the modelling Google intends, instead of treating a non-consented send as if it were consented.
GA4's rules
Constraints we respect on your behalf
Taken from the Measurement Protocol documentation.
72 hours of backdating
Google documents that events and user properties can be backdated by at most 72 hours. Past that, the event is ingested but does not land on the right date. Trackful checks age before sending.
Consent enforced server-side
A denial prevents the send. Unspecified consent lets the event through without advertising signals. The decision is made in one place for every channel, not reinvented at each call site.
The Measurement Protocol validates very little
GA4 happily accepts a malformed event without saying so. A send that returns success can appear nowhere in your reports, which is exactly why verification happens in the realtime report and not on the response code.
Your platforms
GA4 on Shopify and on WooCommerce
Shopify
The Web Pixel reads the browser client_id and session_id and passes them to the server, which sends the purchase. The original session is preserved even if the tab closes before the confirmation page.
Trackful for ShopifyWooCommerce
The plugin passes the GA4 identifiers to the server on every order through a direct PHP hook. No REST webhook that can silently disable itself after repeated failures.
Trackful for WooCommerceSetup
Connected in minutes
- 1
Authorise Google Analytics
One-click OAuth. Trackful lists your properties and creates the API secret for you.
- 2
Pick the property
Select the property and data stream. If you do not have a property yet, Trackful can create one.
- 3
Verify in realtime
The test event shows up in the GA4 realtime report, which proves ingestion rather than mere acceptance.
Questions
Frequently asked
Do I need to remove the GA4 tag from my site?
No. The tag stays useful for everything the server cannot see: scrolling, engagement, navigation. Trackful completes the conversion events, which are the ones the browser loses most often.
Will this inflate my revenue?
No. The server send carries the same transaction_id as the browser purchase, and GA4 does not count a transaction twice when it has already seen that identifier. What appears in addition is the purchases that were missing.
Why are my purchases attributed to direct?
Usually because the server event is sent without the visitor client_id and session_id, so GA4 opens a new session with no source. Trackful always passes those identifiers to preserve the original attribution.
Does GA4 work with Consent Mode v2?
Yes, and Trackful passes consent signals with every event. If the visitor declines, nothing is sent. The decision is made on the server, where it cannot be bypassed.
Trackful is not affiliated with or endorsed by Google. Google Analytics is a trademark of Google LLC, referenced here to identify the service Trackful sends your events to.
Stop paying for results you cannot measure
Every day without Trackful is a day you make ad decisions with only 60% of the data. Install Trackful in 5 minutes and see the difference.