The GA4 Audit
The GA4 audit that finds what your reports are missing.
A fixed-price teardown of your GA4 property, plus the Tag Manager, ad pixel and consent layers feeding it. Every undercount explained, the top 10 issues fixed and validated. $900 flat. 5 business days.
5-day turnaround · top 10 issues fixed, not listed · 5+ gaps found or it's free
Why your numbers are low
Most accounts report 60 to 80 of every 100 real conversions.
The gap isn't one big break. It's four small leaks stacking up quietly, and the ad platforms optimize on whatever incomplete signal survives.
LEAK 01
Ad blockers & browsers
Client-side pixels blocked or throttled before they ever fire. Safari and Firefox cap cookies to days.
LEAK 02
iOS & signal loss
App Tracking Transparency and privacy features strip the identifiers Meta and Google match on.
LEAK 03
Consent banners
A misconfigured CMP or missing Consent Mode v2 silently drops every visitor who clicks reject.
LEAK 04
Broken tags
Duplicate purchases, dead triggers, stale dataLayer variables, redirects that strip UTMs. It accumulates.
What gets torn down
Four systems, one pass, every gap logged.
This is the stack the audit walks through, end to end, on any platform: Shopify, WooCommerce, BigCommerce, Magento, Webflow, WordPress or custom.
System 01 · GA4
Property & events
- Property, stream and data settings against current best practice
- Event and key-event design, counting method, dedupe
- Ecommerce and funnel tracking accuracy, item-level data
- Attribution settings, channel grouping, unwanted referrals
System 02 · Google Tag Manager
Container health
- Every tag, trigger and variable mapped and tested live
- Duplicate and dead weight removed, naming rationalized
- dataLayer integrity across templates and checkout
- Cross-domain, iframe and SPA tracking behavior
System 03 · Ad platform signals
Google Ads & Meta
- Conversion actions vs GA4 vs backend truth, side by side
- Meta pixel + Conversions API dedupe and event match quality
- Enhanced conversions and offline import readiness
- Server-side tagging setup reviewed, or scoped if absent
System 04 · Consent & compliance
Consent Mode v2 & CMP
- Consent Mode v2 signals actually reaching Google tags
- CMP behavior on accept, reject and no-choice states
- What data is recoverable through modeled conversions
- Region handling and obvious compliance red flags
In depth
What the property decides before you ever open a report
A GA4 property is not a passive record of what happened. Event design, counting rules, attribution settings and retention each shape the number before it reaches a report, and every one of them is a configuration somebody chose or left on its default. We read all four against your own orders or leads.
01
Events, key events and how each one counts
A key event is an ordinary event with a flag on it, so everything upstream of the flag decides the number. We check event names against the ones GA4 gives special treatment, because a custom name for a standard action leaves the built-in reports empty while the data sits in the property unused. We check the counting method on each key event, once per event or once per session, because the default counts a form submitted three times in one visit as three conversions. We check which parameters were registered as custom dimensions, since an unregistered parameter is collected, retained and absent from every standard report, and registering it later does not reach back over the data already gathered. And we check where high-cardinality values are being sent, because those are the rows that collapse into an other bucket exactly when you need the detail.
02
Ecommerce and item level data
Ecommerce in GA4 is a fixed schema, not a set of suggestions. The event names, the items array and the parameters inside it are what the ecommerce reports read, and anything off the schema is collected as a generic event and reported nowhere useful. We follow the chain from view_item through add_to_cart, begin_checkout and purchase, checking that the same item_id is carried at every step, because an identifier that changes between the cart and the confirmation breaks item level reporting even when every event fires on time. We check that transaction_id is set, because GA4 uses it to recognize a purchase it has already seen, and a refreshed confirmation page without one is a second order. And we check value, currency and quantity against real orders, since a value sent as a formatted string, a missing currency code, or item prices that do not sum to the order total all produce a number that looks plausible and is not.
03
Attribution, channel grouping and unwanted referrals
Attribution is a property setting, not a fact about your traffic. We record which model and which lookback windows the property is on, because changing them rewrites reports you have already read and acted on. Then the inputs. Campaign tagging that varies in case or wording lands in unassigned rather than in the channel it belongs to, and a Google Ads click arriving with both a click identifier and manual campaign parameters is resolved by a data stream setting most teams have never opened. Then the referral exclusions: a hosted payment page or a separate booking domain that is not on the unwanted referrals list opens a new session on the way back, so the purchase is credited to your own checkout provider and the campaign that paid for it gets nothing. That one is quiet and expensive, because it lands specifically on the sessions that converted.
04
Retention, filters and reporting identity
Three settings that change what a report can show without touching collection at all. Data retention decides how far back an exploration can look, and it is a property setting nobody revisits until the day they need last year. Data filters are how internal and developer traffic is meant to be excluded, so we check both that they exist and what state they are in, because a filter left in testing excludes nothing while an active one excludes permanently and does not apply backwards. Reporting identity decides how users are counted and is applied when the report is run rather than when the data is collected, which makes it the one lever here you can move and move back. With Google signals in the mix it also brings thresholding, where rows are withheld to protect identity and the report simply shows less. Teams read that as missing data and go hunting for a tracking fault that is not there.
What you get
Most audits hand you homework. This one ships fixes.
- The Missing Conversions Report. Every gap found, severity, what it's costing you, and the exact fix.
- Top 10 issues fixed and validated in a GTM workspace during the audit, published only with your approval.
- Before / after proof so you can see reported numbers move against reality.
- A recorded walkthrough of the report in plain language, made for the person who owns the budget.
- A prioritized backlog for whatever falls outside the top 10, sized so any dev or ourselves can take it on.
- Two weeks of follow-up questions included after delivery.
Sample report rows
MC-AUDIT · p.4/18
- HIGHPurchase event fires twice on order-confirmation refreshinflates ROAS, corrupts bid optimizationFIXED
- HIGHMeta CAPI events sent without user parameters, EMQ 4.1 of 10weak matching, undercounted paid socialFIXED
- HIGHConsent Mode v2 not passing ad_user_data or ad_personalizationno modeled recovery for rejected visitorsFIXED
- MEDLead key event set to count every submission, not once per userduplicate form fires inflate lead countsFIXED
- MEDEmail links routed through a redirect that strips UTM parametersrevenue misattributed to direct / noneFIX PLAN
How it runs
Booked to delivered in five business days.
Day 0
Access
You get a 10-minute checklist: viewer access to GA4 and Ads, read access to GTM and Events Manager.
Days 1 to 3
Teardown
Full pass across the four systems. Every finding logged with severity and cost.
Days 4 to 5
Fixes
Top 10 issues repaired in a GTM workspace, tested and validated. Nothing publishes without your sign-off.
Day 5
Report
The Missing Conversions Report, before/after proof and the recorded walkthrough land in your inbox.
Pricing
One price. No retainer required.
$900
flat · once
- Full four-system teardown, any platform
- Top 10 issues fixed and validated, not just listed
- The Missing Conversions Report + recorded walkthrough
- Prioritized backlog and two weeks of follow-up
- Fee credited in full toward any follow-on project.
The guarantee
Fewer than 5 fixable gaps found? The audit is free.
If your tracking is genuinely clean, you don't pay, and you keep the report as proof your numbers hold. If it isn't, you'll know exactly what it's costing you and the worst of it will already be fixed.
Fit
Built for accounts where the numbers steer real money.
Right fit
- You're spending on Google or Meta and decisions ride on reported conversions
- Ecommerce or lead gen with meaningful traffic
- Platform numbers, GA4 and your backend all disagree
- Agencies welcome: white-label audits for your clients, your brand on the report
Not yet
- Pre-launch, or too little traffic for the data to matter yet
- You need a site or app built first
- You want someone to run the ads themselves. We fix what the ads learn from
Who does the work
"The person auditing your setup is the person who has spent ten years building them. No juniors, no handoffs."
Missing Conversions is run by Syed Anns, after a decade of GA4, Google Tag Manager and Conversions API implementations for businesses and the agencies that serve them. This audit is that decade, productized: a fixed scope, a fixed price and a report you can act on the same day.
Syed Anns · founder, missingconversions.com
Questions
Asked before booking.
Will the fixes repair our historical data?
No. GA4 processes what it receives when it receives it, so an event that was never sent cannot be recovered, and a parameter registered as a custom dimension today does not fill in the months before it. Two things are genuinely retroactive. Reporting settings such as the attribution model and reporting identity are applied when a report is run, so correcting those changes what your existing data shows. And the report itself tells you which periods are safe to compare, where the break falls, and what to allow for when you put this year against last. Everything else improves from the day the fix ships.
Do you rebuild the property or fix the one we have?
We fix the property you have. A new one starts with no history and no baseline to compare against, and that cost is rarely priced into the advice to start fresh. Most of what makes a property unreliable is configuration and event design, and both are correctable in place. Where a rebuild genuinely is the answer, usually an event schema that cannot be reconciled with the reports it is supposed to feed, the report says so, scopes the parallel run and states what you give up by doing it. That is a recommendation with a cost attached rather than a default.
We have the BigQuery export. Does that change the audit?
Yes, it makes verification exact. With the export we count events, parameters and item rows directly instead of inferring them from reports that are already aggregated and thresholded, which removes most of the argument about whether a gap is real. It is not a requirement. If you do not have it, we check whether the property qualifies and usually suggest linking it at the start of the audit rather than the end, since the export is not retroactive and the first daily table lands on the day it is linked.
What access do you need, and how long does granting it take?
Viewer or Analyst on GA4, read access to the GTM container, and read-only on Google Ads and Meta Events Manager. You get an exact checklist after booking; most teams grant everything in about 10 minutes. Publish access to GTM is only needed if you want us to deploy the fixes, and you can keep that gated behind your own approval.
Will anything break while you work?
No. All fixes are built in a separate GTM workspace, tested against live behavior, and validated before publishing. Nothing goes live without your explicit sign-off, and every change is documented so it can be rolled back in minutes.
Which platforms and stacks do you cover?
Any site running GA4 and Google Tag Manager: Shopify, WooCommerce, BigCommerce, Magento, Webflow, WordPress and custom builds, for both ecommerce and lead generation. Server-side GTM and Meta Conversions API setups are part of the review, and if you don't have them yet the report scopes exactly what they would recover.
What if my tracking turns out to be fine?
Then the guarantee applies: fewer than five fixable gaps and the audit costs nothing. You keep the report either way, which is useful proof for your team, your agency or your investors that the numbers hold.
I run an agency. Can you do this for our clients?
Yes, and quietly. White-label audits with your brand on the report and our delivery underneath, at partner pricing for volume. Mention it on the call and we'll walk through how the handoff works.
What happens after the five days?
The report ends with a prioritized backlog. Take it to your own developers, have us quote it as a fixed project with your $900 credited in full, or put the account on a monthly maintenance plan so tracking stays verified release after release. No obligation on any path.
Next step
15 minutes. You'll leave knowing if there's money in the gap.
A short call to look at your setup from the outside, confirm the audit fits, and book your slot. If it's not a fit, you'll hear that in the first five minutes.
A 15 minute call
- We look at your setup from the outside and say what we can already see.
- You get a straight answer on whether the audit is worth it for your account.
- If it fits, we book the slot and send the access checklist.
Opens the calendar here. Nothing loads from Calendly until you do.
Prefer email? hello@missingconversions.com