Turning messy data into clear revenue decisions
Web Analytics Consultant with 5+ years of experience across web tracking, product analytics, and reporting.
Working with clients globally, including the USA, Australia, UK, Germany, and more
Most businesses run on incomplete tracking: duplicate events, missing conversions, dashboards nobody fully trusts. I fix that: setting up and repairing analytics for e-commerce, SaaS, and app-based businesses, across both web tracking and product analytics, then turning it into reporting teams actually use.
Behind a couple of recent fixes
Moving GA4 fully server-side without losing attribution
Problem: The client needed to move GA4 server-side and implement CAPI across Meta, Google Ads, Bing, LinkedIn, and Reddit, while keeping first-touch and last-touch attribution intact even though ecommerce hits would be sent straight to the server via API, bypassing the browser entirely.
Fix: Set up the GCP infrastructure and server-side event hits, working closely with the client’s developers through customized documentation and hands-on support. Basic user behavior stayed client-side for GA4, while ecommerce hits went directly server-to-server. To preserve attribution, we captured each platform’s click and browser IDs from the landing page (fbc and fbp for Meta, gclid for Google Ads, msclkid for Bing, li_fat_id for LinkedIn, rdt_cid for Reddit), stored them in Firestore against the GA4 client ID, then fetched and attached them, along with other relevant user info, whenever a server-side hit was sent.
Result: Full server-side tracking across GA4 and five ad platforms, with first-touch and last-touch attribution preserved end-to-end, even though the hits never touched the browser.
Why it mattered: Attribution kept working even as ad blockers and privacy restrictions cut into browser-based tracking, so the client could scale ad spend on data they could actually trust.
GA4 · Server-side GTM · Google Cloud Platform · Firestore · Meta CAPI
Attributing a full-funnel journey across seven marketing platforms
Problem: A fast-moving marketing team was running paid and content campaigns across Facebook, Google, LinkedIn, Twitter, Pinterest, Reddit, and Quora, but couldn’t attribute site visitors to any of them or access their own revenue data.
Fix: Configured GA4 views, filters, custom dimensions, and goals; set up revenue and attribution tracking; implemented GDPR-compliant consent tracking; and built a dashboard covering the full journey from signup to trial to subscription.
Result: Clear attribution across every channel let the team see what was actually working, reallocate spend accordingly, and improve overall marketing ROI and ROAS.
Why it mattered: Instead of splitting budget evenly across seven platforms out of guesswork, the team could double down on what was actually converting and cut what wasn’t.
GA4 · Google Tag Manager · Consent Mode
Fixing a tracking setup that was under-reporting sales
Problem: GA4 showed ~40% fewer conversions than actual sales, from broken events and duplicate tags.
Fix: Audited and rebuilt tracking from scratch in GTM and GA4.
Result: Data matched reality within 2 weeks; client redirected $8K/month in ad spend.
Why it mattered: Budget stopped being wasted on channels that only looked underperforming, and the client could finally trust GA4 as the source of truth for spend decisions.
GA4 · Google Tag Manager · Looker Studio
Rebuilding a Meta pixel to actually optimize ad spend
Problem: The client wanted to optimize their ad performance, but their pixel’s Event Match Quality was under 5%, which was holding campaigns back.
Fix: Rebuilt the pixel implementation and ran the old and new pixels in parallel to validate the data before switching over.
Result: Event Match Quality improved from under 5% to 9.4%. Once validated, the client moved their full ad spend to the new pixel for better-optimized campaigns.
Why it mattered: Better match quality meant Meta’s algorithm could actually find and optimize toward the right audience, directly improving campaign performance.
Meta Pixel · Conversions API · Google Tag Manager
Getting attribution data into HubSpot forms and contacts
Problem: HubSpot forms and contacts carried no attribution data, so there was no way to trace which channel or campaign actually brought a lead in.
Fix: Used GTM to capture the required attribution fields and populate them into hidden fields on the HubSpot forms, so every submission carried its source data automatically.
Result: Every new contact arrived in HubSpot with full attribution already attached, no manual tagging needed.
Why it mattered: Sales could see lead source at a glance, marketing could finally prove channel-level ROI, and lead scoring got sharper once source quality was visible.
Google Tag Manager · HubSpot
Making sense of a Mixpanel setup with too much data, no direction
Problem: Dozens of tracked events, but last-touch attribution was missing and no one knew which events actually mattered.
Fix: Connected GTM into their Segment → Mixpanel setup (profile merging preserved), mapped business questions to existing events, audited only what mattered, filtered bot traffic, and cross-checked with session replays.
Result: A focused reporting dashboard built around real business questions, not a generic template.
Why it mattered: The team stopped drowning in events they didn’t understand and could finally act on the handful that actually answered their questions.
Google Tag Manager · Segment · Mixpanel
Connecting web traffic to mobile app conversions
Problem: The client had no idea where their mobile app conversions were actually happening from, so ad decisions were being made blind.
Fix: Set up web-to-app conversion tracking using OneLink, connecting not just web traffic but social traffic to the app as well, so every conversion could be traced back to its actual source.
Result: Clear conversion attribution across both web-to-app and social-to-app journeys, giving the client real visibility into what was driving installs, not just guesswork.
Why it mattered: Budget could finally move toward the channels actually driving installs and conversions, instead of being split on guesswork.
AppsFlyer · Adjust · GA4
Fixing “Unassigned” traffic that UTM parameters alone couldn’t explain
Problem: “Unassigned” traffic in GA4 is one of the most common issues clients come in with, and most fixes stop at checking UTM parameters.
Fix: Went past the surface-level UTM check to debug the server-side setup itself, including broken cookie configurations and inconsistent session handling that were quietly breaking attribution.
Result: Traffic sources correctly assigned again, fixed at the root cause rather than patched over.
Why it mattered: Reporting became trustworthy again, so decisions stopped being based on a growing chunk of traffic nobody could explain.
GA4 · Server-side GTM
Full tracking setups without extra tooling costs
Problem: Many clients come in with no tracking at all, needing GA4 and conversion setup built from scratch across multiple ad platforms, without budget for extra paid reporting tools.
Fix: Set up GA4 tracking end-to-end, configured conversions for the ad platforms in use, implemented advanced matching and CAPI for better match rates, and built reporting directly inside GA4 instead of reaching for a separate BI tool.
Result: Clients get full, reliable tracking and reporting without extra software costs, keeping analytics budget-friendly from day one.
Why it mattered: Smaller clients got the same reliable setup as bigger ones, without paying for extra BI tools on top of an already tight budget.
GA4 · Advanced Matching · Conversions API
What I work with
How the work usually flows
Tracking setup
New GA4 and GTM implementation for sites or apps that don’t have reliable tracking yet.
Audit & fix
Finding and fixing broken events, duplicate tags, and misattributed conversions in an existing setup.
Dashboard build
A Looker Studio dashboard built around the decisions your team actually needs to make.
Ongoing support
Monthly reporting and insight, so tracking stays healthy after the initial setup.