Sample audit · anonymized
Tracking Audit - sample report
Telehealth DTC brand with a two-domain funnel: marketing site plus a separate 14-screen medical intake and checkout subdomain.
01 · Current architecture
Everything runs through a single Google tag firing on every page of a two-domain funnel - a marketing site handing off to a separate intake/checkout subdomain. That tag carries one Google Ads destination and two GA4 destinations, so every hit is collected twice into the same GA4 property. The GTM container (GTM-NCS•••••) holds a complete measurement plan - 42 dataLayer variables and 13 custom-event triggers mapped to the 14-screen intake - yet only 3 triggers are wired to any tag and no GA4 event tag exists at all. The headline discrepancy: GA4 traffic is inflated roughly 2x and shows ~526,000 'conversions' in 90 days, while recorded revenue is $0 and all 8 Google Ads conversion actions read zero.
02 · Findings (selected from the full document)
Every visit is counted twice in GA4
The single Google tag was given two GA4 stream destinations, so every page view, session, and event lands in the property twice. Every GA4 metric - users, sessions, engagement - is inflated by roughly 2x.
Evidence row
One page load fired two collection hits carrying the same client ID to measurement IDs G-NN7••••• and G-57V•••••; a 28-day API report showed ~342,000 page_view events recorded on each of the two streams in parallel.
Costs you: Every decision made on analytics, and every audience built from it, is working off doubled data.
The real conversions have never fired - zero purchases in 90 days on both platforms
Purchase, qualified-lead, and checkout key events show zero occurrences in 90 days in both GA4 and Google Ads. The purchase relies on a GA4 create-event rule that transforms an event GA4 never receives - and the rule sits on the marketing-site stream, not the stream where checkout actually happens.
Evidence row
90-day API report: total revenue $0, transactions 0, yet ~526,000 'key events' - all from session_start and user_engagement being marked as conversions; all 8 Google Ads conversion actions read 0.00 with 'No recent conversions'.
Costs you: The business cannot see which ads, pages, or funnel steps produce customers, and Smart Bidding has no valid signal to optimize toward - while the dashboard looks like it is converting.
A complete measurement plan was built in GTM but never connected
The container holds 42 dataLayer variables (value, currency, transaction ID, screen position, progress percent, and more) and 13 funnel triggers mapped to the intake - but 10 of 13 triggers are orphaned, zero variables are referenced by any tag, and there is no GA4 event tag in the container at all.
Evidence row
Container-export cross-reference: only 3 trigger IDs appear in any tag's firing configuration; the live site genuinely emits the data - the intake broadcast 'screen 2 of 14, 14% progress' as a real dataLayer event that reaches GA4 as an anonymous page_view.
Costs you: Per-screen drop-off across the 14-step intake - the single most valuable thing this funnel could measure - is invisible.
No consent management, while automatic Enhanced Conversions harvests the medical intake
No cookie banner or Consent Mode exists anywhere - confirmed even under simulated EU conditions - while Google's automatic Enhanced Conversions detects and hashes customer identifier fields directly from intake forms without anyone specifying which fields.
Evidence row
The consent (gcs) parameter was absent on every collection hit and all 9 GTM tags show consent status 'notSet'; form-data POSTs with ec_mode=a (automatic mode) were observed firing on the date-of-birth and account-creation screens against conversion ID AW-1793•••••••.
Costs you: Attaching hashed identifiers to conversions on a health intake communicates a health inference about a named individual to an ad platform - a compliance exposure, not just a tracking gap, on top of EU/California consent liability.
03 · Solution plan
| # | Fix | Layer | Impact | Effort |
|---|---|---|---|---|
| 01 | Remove the duplicate GA4 destination from the Google tag | Quick win | High | Low |
| 02 | Demote session_start / user_engagement from key events | Quick win | Medium | Low |
| 03 | Add order value, currency, and order ID to the ad conversion tags | Quick win | High | Low |
| 04 | Wire the orphaned intake triggers to GA4 event tags + custom dimensions | Structural | High | Medium |
| 05 | Consent Mode v2 rollout + server-side authoritative purchase event | Strategic | High | High |
Anonymized from a delivered tracking audit. The full document inspects every tag, trigger, and destination; this sample shows four of the findings and five of the ranked fixes.
Want this for your store? Fixed price from $500, delivered in 1-2 days, credited toward implementation.
Book a discovery call