Home / Case studies

Case studies · GA4 · GTM · Firebase · Meta CAPI · Consent Mode

Case studies: how I fix analytics in e-commerce, apps, FinTech and B2B

17 example projects where the data stopped adding up or marketing needed support: what was broken, what I changed and what the client got out of it. Some descriptions are anonymised, because I also work white-label for agencies and under NDA.

  • 11+ years in analytics and online marketing
  • 150+ brands I have delivered projects for
  • I used to run B2B campaigns in Google Ads, Meta Ads and LinkedIn Ads, today I focus on analytics
  • Projects in English, Polish and German-speaking markets

Group 1 of 5 · E-commerce

E-commerce: every purchase counted once, every market separately

Conversion deduplication, a tidy GTM and Consent Mode setup, and data split by market. Without that, campaigns learn from the wrong data.

Case study 01 B2B and B2C e-commerce · Poland and Germany

GA4, GTM and Consent Mode audit for a store selling in Poland and Germany

After the audit, each market has its own GA4 property connected to its own Google Ads account, and the BigQuery export lets the client join orders with CRM data by transaction_id.

Problem

The store sold to businesses and consumers on two domains: .pl and .de. Customers in the two countries did not overlap, and the company had separate Google Ads accounts for Poland and Germany. Yet all data went into one GA4 property, Consent Mode was faulty, and over the years the GTM container had filled up with tags nobody could explain.

What I did

  • a full technical audit of Google Tag Manager, GA4 and Consent Mode
  • split the data into two GA4 properties, one for .pl and one for .de, each connected to the Google Ads account for its market
  • fixed the Consent Mode implementation
  • GA4 export to BigQuery, so the client can join order data with their CRM by transaction_id
  • a dataLayer specification for the IT team, ready to implement without guesswork

Separate GA4 properties make sense when markets have different domains, different customers and separate ad accounts. A single GA4 property then mixes the data and makes campaign optimisation harder.

Delivered white-label, as a subcontractor to a marketing agency.

ResultClean data for each market, Google Ads budgets optimised separately in Poland and Germany, and GA4 sales joined with the CRM.
  • GA4
  • GTM
  • BigQuery
  • Consent Mode
  • Google Ads

Related service: GA4 and Google Tag Manager audit · BigQuery and reporting

Case study 02 E-commerce · fashion · WooCommerce

Meta Conversions API with deduplication: EMQ from below 4 to above 6.5, and above 9 for Purchase

A fashion store on WooCommerce had no event deduplication between the Pixel and Conversions API. After an implementation where the Purchase event sends the order number (transaction_id) instead of event_id, Event Match Quality (EMQ) rose from below 4 to above 6.5, and above 9 for purchases.

Problem

The Meta Pixel and Conversions API sent the same purchases without a shared identifier, so Meta could not pair them. EMQ was below 4 and campaigns were learning from incomplete and duplicated data.

What I did

  • implemented deduplication: for Purchase, the Pixel and Conversions API send transaction_id instead of event_id
  • conversion value sent to Meta without shipping costs
  • cleaned up the Google Tag Manager environment
  • configured Consent Mode

EMQ (Event Match Quality) is a 0 to 10 score of how well Meta matches a website event to a specific person. The more contact data, the higher the score. Most visitors do not log in or leave an email or phone number, so browsing events have lower EMQ. At purchase the customer provides this data, which is why Purchase can exceed 9. A store with many logged-in users also gets higher EMQ for events such as AddToCart and InitiateCheckout.

ResultEMQ up from below 4 to above 6.5, and above 9 for Purchase. Every order is counted once, and Meta campaigns learn from more complete data.
  • Meta Pixel
  • Conversions API
  • transaction_id
  • GTM
  • WooCommerce

Related service: Meta Conversions API implementation · Server-side tracking

Group 2 of 5 · Mobile apps

Mobile apps: Firebase that shows the whole user journey

Event mapping, in-app payments, push, cohorts and sign-up funnels. App analytics is my specialty, and I also train teams in it.

Case study 03 Mobility · mobile app · Blinkee

Blinkee: Firebase, push and one report for the app, ads and many cities

After mapping events in Firebase and connecting them with Facebook Ads and Google Ads data, Blinkee sees in one report which campaigns and push notifications lead to sessions and purchases.

Problem

App data did not match the ad platforms, and every channel had its own separate report. Group ride events distorted the Firebase statistics. The app operates in selected cities in Poland and abroad, and data from these markets did not flow into one reporting ecosystem.

What I did

  • a Firebase event architecture mapped to Facebook Ads and Google Ads data
  • fixed Group Rides tracking, which was distorting the statistics
  • push campaigns for user segments, such as group rides and contests, with click, session and purchase measurement
  • Firebase cohorts, such as users active after 2 rentals and uninstalls, for better ad targeting
  • one data collection standard for all cities and reports combining Firebase, Facebook Ads and Google Ads
ResultConsistent app and ad data for all markets, measurable push campaigns and segments ready for precise targeting.
  • Firebase
  • GA4
  • Facebook Ads
  • Google Ads
  • push
  • cohorts

Related service: Mobile app analytics

Case study 04 Diet catering · mobile app · NDA

Diet catering platform: the path from choosing a diet to payment and renewal

Events in the iOS and Android app cover the whole journey from choosing a diet to purchase, including BLIK and Google Pay payments and diet renewals, and they are consistent with website data, so the company sees in one report where it loses orders.

Problem

The path from choosing a diet to purchase in the app was only partly measured. The website had been collecting data for years and the client wanted to keep continuity, so the app had to speak the same language. Mobile payments such as BLIK or Google Pay can complete with a delay or fail, and the subscription model needed separate events for renewals.

What I did

  • a specification and event mapping in Firebase for iOS and Android, from choosing a diet to purchase, consistent with the website’s long-running data so the client kept continuity
  • purchase, purchase_wait and purchase_fail events that reflect how mobile payments behave
  • DIET_RENEWAL_START and DIET_EXTEND_START for diet renewals and extensions
  • VIEW_ITEM_LIST_ZERO, which shows when filters return no diets at all
  • cohorts, such as users after 2 orders, and one report combining the app with the website

The client’s name and details are covered by an NDA.

ResultA full view of the in-app purchase funnel, with payments and renewals, continuity with website data and data for campaign personalisation and better offer matching.
  • Firebase
  • GA4
  • iOS
  • Android
  • BLIK
  • cohorts

Related service: Mobile app analytics

Case study 05 MedTech · Shopify store and app · StethoMe

StethoMe: GDPR-compliant analytics from scratch for a Shopify store and a medical app

StethoMe got working tracking for its Shopify store and app dashboard in GTM, Google Analytics and Facebook Ads, one Consent Mode consent for the domain and subdomain, and one UTM standard that lets sales be attributed to a specific channel.

Problem

The Shopify store and the app dashboard had no consistent analytics, and they ran on a domain and a subdomain. Native, display and social campaigns were tagged inconsistently, so there was no way to compare which channel sold. On top of that, a medical app required particular care when collecting user data.

What I did

  • set up GTM, Google Analytics and Facebook Ads from scratch for the Shopify store and the app dashboard
  • one Consent Mode consent shared by the domain and subdomain, so users do not have to click the banner twice
  • a UTM campaign tagging standard for native, display and social (source, medium, campaign)
  • analytics configured with GDPR requirements for medical app data in mind
  • technical support adapting display and responsive ad creatives to Google and Meta requirements

This describes the setup during my time working with the client.

ResultPrecise attribution of sales to source, medium and campaign, and GDPR-compliant analytics from day one.
  • GTM
  • Google Analytics
  • Facebook Ads
  • Shopify
  • Consent Mode
  • UTM

Related service: GA4 implementation · Consent Mode v2 and CMP

Case study 06 Navigation app · NDA

Event audit in a navigation app and the points where users drop off

The audit identified errors in the data layer and the points where users abandon sign-up and licence purchase, so the team knows what to fix first.

Problem

The navigation app’s maker was not sure app events were being collected correctly. Without that, analysis of the sign-up and licence purchase funnel led to questionable conclusions.

What I did

  • a review of the event implementation in the app
  • drop-off analysis in sign-up and licence purchase
  • a list of data layer errors to fix

The client’s name and details are covered by an NDA.

ResultA reliable view of the retention funnel and a list of data layer fixes.
  • app events
  • funnel
  • retention
  • audit

Related service: Web and app analytics audit · Mobile app analytics

Do you see one of these problems in your own data?Describe it in 2 or 3 sentences. The first 30 minutes are free, and I usually reply within 48 hours.

Book a free 30-min consultation

Group 3 of 5 · FinTech and lead generation

FinTech and lead generation: every lead with its source

Calculators, forms and contact requests measured step by step, with personal data protected in line with GDPR.

Case study 07 FinTech · insurance · NDA

SPA insurance calculator: a gap-free dataLayer, hashed personal data and leads from callback requests

The insurance calculator got one dataLayer for every step of the single-page app, personal data is SHA256-hashed before sending, and every contact request records the step it came from.

Problem

The calculator ran as a single-page application, so moving between steps generated no page views and the data had gaps. The form collected email addresses and phone numbers, which must not be sent to external systems in plain text. Callback requests landed in one bucket, with no information about which stage they came from.

What I did

  • specified and implemented a full SPA dataLayer, consistent across every calculator step
  • normalised and SHA256-hashed email and phone before sending them to external systems
  • a generate_lead event with a lead_source parameter showing the step where the contact request was made
  • excluded the company’s employees from GA4 data with a user property

SHA256 hashing turns, for example, an email address into an irreversible string. An ad platform can match it to a user, but never sees the address itself.

The client’s name and details are covered by an NDA.

ResultContinuous data from the whole calculator, GDPR-compliant data sending and leads attributed to a specific form step.
  • dataLayer
  • SPA
  • SHA256
  • GTM
  • user property

Related service: Google Tag Manager and dataLayer · GA4 implementation

Case study 08 FinTech · insurance · NDA

A step-by-step calculator funnel, a conflict-free consent banner and alerts on data drops

A dashboard shows progress through calculator steps 1 to 4, including drop-offs caused by errors in external databases such as CEPiK (the Polish vehicle register), and the team gets an alert when the number of events drops unusually.

Problem

Cookie banner conflicts blocked some users mid-process and held back scripts such as remarketing tags. The team could not see at which calculator step people dropped off, or that some drop-offs were caused by external database outages. Email campaigns had no consistent UTMs, and tracking failures surfaced late.

What I did

  • integrated the cookie banner with GTM and Consent Mode v2 and removed UX conflicts along the path
  • a step 1 to 4 funnel dashboard with drop-offs caused by external database problems, such as CEPiK
  • a UTM tagging strategy for email marketing
  • self-audit dashboards: event trends and automatic alerts on drops
ResultAn error-free path, visible drop-off points, a full view of email campaigns and alerts before anyone notices a hole in the report.
  • Consent Mode v2
  • CMP
  • UTM
  • GA4
  • dashboards

Related service: Consent Mode v2 and CMP · Free UTM link builder

Short case study

Leads instead of form spam

Together with the sales team I analysed which form submissions were spam. Based on that, I had the developers implement an invisible reCAPTCHA that cut the spam, and I optimised campaigns for real leads.

  • reCAPTCHA
  • lead analysis
  • Google Ads
Short case study

Enhanced conversions in diet catering: SHA-256 instead of SHA-1 and phone numbers in E.164

On a diet catering website, Google Ads reported a critical enhanced conversions error for purchase and add to cart. The user data source was missing, and the data was hashed with the outdated SHA-1 instead of the required SHA-256.

On another catering platform, the dataLayer was missing the sha256_phone_number parameter. A phone number must first be normalised to E.164 format (for example +48500100200) and only then hashed with SHA-256.

You can check your hashes in the SHA-256 tester for enhanced conversions.

  • Google Ads
  • enhanced conversions
  • SHA-256
  • E.164
  • dataLayer

Group 4 of 5 · B2B and marketing continuity

B2B: compliant tracking, niche campaigns and marketing without downtime

In B2B every enquiry counts. These projects cover cookie consent, campaigns in a narrow niche and keeping marketing running when the company is short of people.

Case study 10 B2B · energy

A Google Ads campaign for an EU-funded green loan in a B2B niche: from creatives to landing page

A Google Ads campaign promoting grants for drive system upgrades launched in line with Google’s guidelines, and the landing page got a lead-focused structure built around audit sign-ups.

Problem

The client wanted to launch a campaign fast in a narrow niche: grants from the EU-funded FENG programme for upgrading drive systems. The image creatives did not meet Google Ads standards for dimensions, formats and amount of text, and the landing page was not built for B2B conversion.

What I did

  • a full technical spec for creatives: responsive display ads in 300×250, 1200×628 and 900×1600 formats
  • landing page guidelines based on B2B best practice: headline, CTA, social proof and UX
  • technical review of the image creatives supplied by the client
  • ongoing campaign budget management
ResultA B2B campaign compliant with Google’s guidelines, better ad materials and a landing page built to generate audit leads.
  • Google Ads
  • display
  • responsive ads
  • landing page

Related service: Consulting · B2B analytics implementation

Case study 11 B2B · marketing outsourcing

Marketing without downtime when the company lost its specialist

While the client’s specialist was away, I took over Google Analytics and Google Ads, so campaigns kept running and the team learned to manage them on their own.

Problem

The client had no one responsible for campaigns. Marketing risked grinding to a halt, and nobody in the company knew the ad accounts or analytics well.

What I did

  • took over the Google Analytics and Google Ads accounts
  • ongoing consulting and technical support for website changes
  • trained the client’s staff to manage the campaigns
ResultStable advertising through a difficult period and smooth marketing processes without downtime.
  • Google Ads
  • Google Analytics
  • consulting
  • training

Related service: Analytics consulting

Group 5 of 5 · Audits and automation

Audits and automation: less data debt, less manual work

I fix tools nobody trusts and replace manual reports with ones that arrive on their own.

Case study 13 SaaS startup

An event model from scratch and email reports with real CAC and LTV

Combining product analytics with CRM data in a BigQuery warehouse revealed the real cost of acquiring a customer and their value over time. The agency running the campaigns and the client get these numbers weekly and monthly in an email report.

Problem

A fast-growing startup could not see the user journey in its app. The conversion was sometimes sign-up and sometimes payment, so every report said something different. Without one definition there was no way to judge how much could be spent on acquiring a customer.

What I did

  • designed an event model from scratch, with one definition of sign-up and payment
  • combined web analytics with user database (CRM) data in a BigQuery warehouse
  • weekly and monthly email reports with customer acquisition cost and lifetime value, for the agency running the campaigns and for the client

CAC (Customer Acquisition Cost) is the cost of acquiring one paying customer. LTV (Lifetime Value) is the revenue a customer brings over the whole time they use the product.

ResultReal CAC and LTV in regular reports, which made it safe to increase ad spend.
  • GA4
  • CRM
  • BigQuery
  • event model
  • email reports

Related service: BigQuery and reporting · GA4 implementation

Short case study

Year-on-year comparisons after a store platform change

After an e-commerce platform change, I translated the historical data format into the new structure so year-on-year reports kept telling the truth.

  • GA4
  • data migration
  • e-commerce
Short case study

A dashboard instead of a manual Excel report

I replaced manual Excel reporting with an automated Data Studio dashboard that pulls data through APIs and from BigQuery. The client no longer wastes time copying numbers.

  • Data Studio
  • BigQuery
  • API

How I work

Every one of these projects went through the same 4 steps

I start with a diagnosis, not with adding more tags. That way I fix the cause, not the symptom.

  1. Free 30-minute consultation

    You tell me what does not add up in your data. I tell you where to start and whether you need an implementation at all.

  2. Audit on your accounts

    I check GTM, GA4, Consent Mode and ad pixels. I work in your accounts and the data stays with you.

  3. Plan and spec for IT

    You get a list of fixes and a dataLayer specification your developer can implement without guesswork.

  4. Implementation, testing and monitoring

    I implement changes in GTM, test them before publishing and set up checks that catch the next failure.

FAQ

Questions about these case studies and working together

Why do some case studies not name the client?

Because I deliver some projects white-label for agencies and others under a non-disclosure agreement (NDA). For those projects I describe the industry, problem, solution and result without data that could identify the company. Some of the brands I have worked with are on the client list.

Are these all your projects?

No. These are selected examples that show typical data problems well. I have delivered projects for more than 150 brands.

Do you work white-label for agencies?

Yes. The agency stays in contact with the client, and I deliver the analytics audit or implementation as a subcontractor. The first case study, a store selling in Poland and Germany, is an example.

Do you also analyse mobile apps?

Yes. I have implemented and audited app analytics in Firebase, including for Blinkee, StethoMe, a diet catering platform and a navigation app under NDA. I also train teams in app analytics.

How do you protect personal data sent to Meta and Google?

I normalise and SHA256-hash email addresses, phone numbers and other identifiers before sending, and fire tags according to Consent Mode v2. That is how the insurance calculator project worked.

Do you need access to the website code?

Not always. I do most of the work in Google Tag Manager, GA4 and the ad platforms. Code-side changes, for example in the dataLayer, go into a specification for your developer.

Can you take over marketing while an employee is away?

Yes. I can take over Google Analytics and Google Ads, support website changes and train your team, as in one of the B2B projects above.

How much does a project like this cost?

It depends on the scope. A GA4 implementation starts from €190 excl. VAT, Consent Mode v2 with a CMP from €225, Meta Conversions API from €225, and consulting from €67 per hour. Full pricing is on the services page.

How can I check whether my analytics has similar problems?

Book a free 30-minute consultation. Send your website URL and 2 or 3 sentences about what does not add up. After the call you know where to start and whether you need an implementation at all.

Marcin Miłowski, GA4, GTM and BigQuery consultant

Who is behind these projects

Marcin Miłowski, GA4, GTM and BigQuery consultant

I have worked in analytics and online marketing for more than 11 years and delivered projects for over 150 brands, from one-person businesses to Inter Cars and Vercom. Before I started fixing analytics, I ran Google Ads and Facebook Ads campaigns myself, so I know what data a marketing team needs.

I spoke about GA4 on stage at the Sprawny Marketing conference, and I have trained the Orange Polska and 4F teams in Firebase app analytics.

Tell me about your data problem

Send your website URL and 2 or 3 sentences about what does not add up. The first 30 minutes on Google Meet are free and with no obligation. I usually reply within 48 hours.

Ta strona jest dostępna również po polsku.

Przejdź do wersji polskiej