Skip to main content

Case Studies

GA4 Event Tracking Cleanup for a Karachi B2B SaaS

Clean GA4 key events corrected a 22% channel-mix error and cut blended cost per trial 30% at flat media spend.

GA4 Event Tracking Cleanup for a Karachi SaaS campaign results dashboard
Case study SaaS
Result snapshot 1 broken

Answer-ready summary

What happened in this case study?

Clean GA4 key events corrected a 22% channel-mix error and cut blended cost per trial 30% at flat media spend.

A Karachi B2B SaaS selling expense-management software to Pakistani SMEs was spending PKR 2.9 million a month across Google Search, LinkedIn and Meta while its GA4 property reported no usable conversion data at all. One custom signup event fired twice per user, no key events were configured, and Google Ads was optimizing against a goal imported from a deleted Universal Analytics account. Every channel decision was being made on contradictory screenshots from the agency, GA4 and the CRM.

The rollout ran in 4 phases: Measurement audit and funnel definition; Event layer rebuild in GTM; Activation across ads and CRM; Reallocation and compounding.

At a glance

Case summary

Industry
B2B SaaS (SME expense management)
Market
Pakistan (Karachi)
Duration
90 days
Client type
SaaS
Services used
GA4 setup and custom configuration, Google Tag Manager setup, Marketing attribution modeling, Marketing reporting automation
Starting problem
A hasty Universal Analytics migration left the GA4 property with one double-firing signup event, no key events, and a Google Ads account optimizing to a deleted goal.
Work completed
Rebuilt the measurement layer in GTM around 14 validated key events, fixed cross-domain tracking and UTM taxonomy, closed the loop with the CRM, and reallocated spend against the corrected channel mix.
Evidence type
illustrative_composite

Results and proof

Measured impact at 90 days

Headline outcomes first — where a metric moved from a measured starting point, both ends of the change are shown before the full execution notes.

1 broken

Key events in GA4

1 broken event to 14 validated key events with full funnel coverage

22% of

Channel-mix correction

22% of trial signups re-attributed from paid and direct to organic, referral and WhatsApp

-30%

Blended cost per trial

Reduced from PKR 8,400 to PKR 5,850 (-30%) at flat media spend

+44%

Monthly trial starts

Grew from 345 to 496 (+44%) within the same PKR 2.9M budget

Measured metrics

Before and after

PKR 5,850 (-30%) Blended cost per trial
14 validated key events Validated key events in GA4
22% of attributed mix Trial signups re-attributed to organic, referral and WhatsApp
45 minutes Weekly reporting effort

Challenge context

Challenge context

A Karachi B2B SaaS selling expense-management software to Pakistani SMEs was spending PKR 2.9 million a month across Google Search, LinkedIn and Meta while its GA4 property reported no usable conversion data at all. One custom signup event fired twice per user, no key events were configured, and Google Ads was optimizing against a goal imported from a deleted Universal Analytics account. Every channel decision was being made on contradictory screenshots from the agency, GA4 and the CRM.

Zero key events configured in GA4 — reports showed sessions and engagement rate, nothing about trials, demos or revenue

A signup event fired twice per user (hardcoded gtag snippet plus a GTM tag), inflating conversion counts roughly 1.9x

Google Ads conversions came from a Universal Analytics goal deleted at UA sunset — Smart Bidding was optimizing to a signal that no longer updated

UTM source values for the same platform varied across 11 spellings, fragmenting every channel report

The product lived on an app subdomain with no cross-domain linking, so every self-serve trial read as (direct)

WhatsApp inquiries — a primary Pakistani B2B contact channel — were entirely invisible in reporting

Execution roadmap

Implementation phases

Delivered in 4 phases, in the order they ran, with each phase building on the outputs of the one before it.

01

Phase 1

Measurement audit and funnel definition (Weeks 1-2)

02

Phase 2

Event layer rebuild in GTM (Weeks 3-5)

03

Phase 3

Activation across ads and CRM (Weeks 6-8)

04

Phase 4

Reallocation and compounding (Weeks 9-12)

The Client

A Karachi-based expense-management SaaS, founded in 2021, with a 43-person team selling corporate cards, spend approvals and expense reporting to Pakistani SMEs — trading houses, logistics operators, mid-size manufacturers and growing professional-services firms. Roughly 480 business customers, an annual run-rate around PKR 96 million, and two ways to buy: a self-serve 14-day trial on the product subdomain, or a sales-assisted demo track for larger teams that wanted procurement questions answered first.

The marketing setup was typical of a seed-stage Pakistani SaaS. Media spend ran about PKR 2.9 million a month — PKR 1.7 million on Google Search split between brand and non-brand, PKR 0.8 million on LinkedIn, and PKR 0.4 million on Meta lead generation. A two-person content team published four articles a month. Inbound WhatsApp messages were a genuine acquisition channel, as they are for most Pakistani B2B products, with two customer-success staff informally answering them between other work.

They engaged after a board meeting went badly. The founders had been asked why customer acquisition cost seemed to be rising while the marketing dashboard insisted conversions were healthy. Three sources disagreed with each other: the agency’s spreadsheet said one thing, GA4 said another, and the CRM said a third. The founder suspected brand search was eating credit that belonged elsewhere but had no way to prove it. This walkthrough is an illustrative composite — a representative engagement built from the patterns we see across Pakistani B2B SaaS teams at this stage — with numbers that show the outcome shape a buyer can use to sanity-check fit.

The Problem

The measurement estate had accreted over three years and two agency changes, and every layer of it was broken in a different way.

  • No key events at all. The GA4 property had been migrated from Universal Analytics in 2023 by a departing employee, in a hurry, on a deadline nobody extended. It reported sessions, engagement rate and landing pages. It could not answer how many trials started, how many activated, or what a demo cost.
  • One custom event, firing twice. A sign_up event lived in the app shell as a hardcoded gtag snippet, and a second copy had been added later in GTM by an agency that never found the first. Every signup read as roughly 1.9 events. Anyone dividing spend by “conversions” was quietly understating cost per trial by almost half.
  • Google Ads optimizing to nothing. The Ads account’s only conversion source was a goal imported from Universal Analytics that had stopped updating when UA was sunset. Smart Bidding was still happily optimizing — against a flat line.
  • Eleven spellings of the same platform. Active campaign URLs carried utm_source values of Facebook, facebook, FB, Meta, meta, meta-ads, linkedin, LinkedIn, li, LI and ln. Channel reports fragmented accordingly.
  • The app subdomain was a black hole. Marketing site on the root domain, product on app. subdomain, no cross-domain linking. Every self-serve trial — the majority of the funnel — read as (direct) in GA4.
  • WhatsApp and the CRM were separate worlds. Inquiries that arrived by WhatsApp were never logged anywhere systematic, and sales reps chose “lead source” from a manual picklist where 61% of entries read “Other.”

The practical consequence was that every budget conversation ran on anecdote. LinkedIn was justified by raw lead volume nobody had checked against activation. Brand search spend was defended and attacked in the same meeting, with identical confidence. The content team was judged on sessions to blog posts that had never been tied to a single trial. We have written elsewhere about how ad platforms double-count conversions in Pakistani accounts; this was that failure mode, plus four others stacked on top.

Phase 1 — Measurement Audit and Funnel Definition (Weeks 1-2)

Ready to improve your marketing results?

Book a free strategy call - we'll audit your current setup and identify the highest-impact fixes.

Book Free Call

The first two weeks produced no new tags. They produced a plan, which is the only responsible starting point for a rebuild.

Tag and account inventory. A Tag Assistant and GTM preview pass across the marketing site, the pricing pages and the app shell surfaced the full estate: the duplicate sign_up firing, two orphaned GTM containers from previous agencies still referenced in old page templates, six stale tags pointing at deleted accounts, and the absent cross-domain linker. Every finding was logged with the page, the trigger and the business impact.

SurfaceWhat the audit foundBusiness impact
GA4 propertyNo key events; UA-era settings untouched since 2023Zero outcome reporting
App shellHardcoded gtag and a GTM tag both firing sign_upConversions inflated ~1.9x
Google AdsSole conversion source: a deleted UA goalSmart Bidding optimizing to a flat line
Campaign URLs11 source spellings across live adsChannel reports split and misleading
app. subdomainNo cross-domain linker configuredEvery self-serve trial read as (direct)
CRMManual lead-source picklist, 61% “Other”Channel credit assigned by anecdote

Funnel definition workshop. One three-hour session with the founder, the sales lead and the customer-success manager turned the product’s reality into a measurement vocabulary. Two funnels, not one: the self-serve path (sign_up_starttrial_createdworkspace_connectedfirst_expense_loggedsubscription_started) and the sales-assisted path (demo_requestdemo_attendedproposal_sentclosed_won). The critical decision was making first_expense_logged — activation within 14 days — the funnel’s center of gravity, because the team already knew in their bones that trials which logged a first expense almost always converted, and trials which did not almost never did.

UTM taxonomy. A one-page standard: six canonical source values, a fixed medium vocabulary, a campaign naming convention with dates and audience codes, and a link-builder sheet so nobody hand-types parameters again. A pre-launch QA checklist was attached: from that week forward, no campaign link went live without passing it.

Baseline capture. Before changing anything, we recorded the state of the world so improvement could be proven: 1.9 signup events per actual trial, 41% of trials with no discernible source, 100% of app-subdomain trials in (direct), and a monthly average of 345 trial starts against PKR 2.9 million in spend — a blended PKR 8,400 per trial that only the finance spreadsheet, reconciled by hand monthly, knew.

Phase 2 — Event Layer Rebuild in GTM (Weeks 3-5)

Weeks three through five rebuilt the plumbing, following our GA4 setup and custom configuration process adapted to a two-funnel SaaS.

One container, one tag. All tracking consolidated into a single GTM container. The hardcoded gtag snippet came out of the app shell; the two orphaned containers and six stale tags were deleted. The duplicate sign_up problem died at the root rather than being filtered downstream.

The dataLayer and the 14 key events. The engineering team added clean dataLayer pushes for each funnel event, carrying parameters the business actually segments on: plan type, team-size band, industry and normalized acquisition group. Fourteen key events were configured in GA4 — the nine funnel events above plus supporting intent signals (whatsapp_inquiry, pricing-calculator completion, two documentation events, a referral-link click and an integration-page view) that enrich attribution without cluttering reports.

Funnel eventBeforeAfter
trial_createdDouble-fired, no parametersSingle fire, carries plan, team size, industry
first_expense_loggedNot trackedKey event; defines activation
demo_attendedExisted only in a calendarFlowing into GA4 joined with CRM outcomes
whatsapp_inquiryInvisibleClick event with page and campaign context
subscription_startedKnown only to billingKey event with MRR band parameter

Cross-domain and channel hygiene. The GTM linker was configured across the root domain and the app subdomain, so a visitor’s source finally survived the walk from marketing site to signup. Custom channel-group rules were rewritten against the new UTM taxonomy, collapsing the eleven spellings into six sources. Enhanced measurement was pruned to what anyone would read.

WhatsApp made visible. Click-to-WhatsApp buttons across the site began firing a whatsapp_inquiry event with page and campaign context, and a simple routing inbox logged inquiries into the CRM so closers could mark outcomes. WhatsApp was never going to carry last-click precision — but a measured channel beats an invisible one.

Validation before launch. Every event was verified in DebugView and then in a staging environment with automated test fires against a written checklist — the same discipline as the campaign QA gate. Nothing graduated to production until it fired exactly once, with correct parameters, on the right surfaces.

Phase 3 — Activation Across Ads and CRM (Weeks 6-8)

Clean data is only worth what changes because of it. Weeks six through eight connected the rebuilt measurement layer to the systems that spend money and touch customers.

Google Ads re-pointed. GA4 key events were imported as conversions with strict discipline: trial_created as the primary conversion for non-brand Search, demo_request as primary for the two B2B campaigns, and subscription_started set to observation only — too sparse inside a 90-day window to bid on, but valuable as a north-star readout. Smart Bidding entered its re-learning period against a signal that finally existed. Brand campaigns were deliberately left uncapped in this phase; the point was to measure the corrected mix before acting on it.

Campaign QA as a gate. LinkedIn and Meta activity continued, but every new link now passed the UTM checklist before launch. The one-sentence rule posted in the marketing channel: if the link hasn’t passed the gate, the ad doesn’t ship.

The CRM roundtrip. A nightly export joined GA4 trial events to CRM outcomes — activation, demo attendance, closed-won — with source preserved end to end. This closed the loop the picklist had faked for years, and it had a second life as marketing automation: lead scoring in the CRM began keying off GA4 events, and a trial that reached day three without a first expense automatically entered an activation nurture sequence of onboarding emails and in-app nudges. The measurement fix quietly became the trigger layer for lifecycle marketing.

One dashboard. A Looker Studio dashboard blended GA4, Google Ads and the CRM roundtrip into a weekly view the founder, the agency and this team all read together: trials by channel, activation rate by channel, cost per activated trial, and demo pipeline. The six hours of monthly spreadsheet reconciliation by finance retired itself.

Phase 4 — Reallocation and Compounding (Weeks 9-12)

See this in action

How we helped a Pakistani business achieve measurable results.

Read case study

By week nine, six weeks of clean data had accumulated — enough to compare last-click against data-driven attribution and re-read the channel mix. The correction was the engagement’s headline finding.

ChannelShare of trials, before cleanupShare after cleanupWhat moved it
Paid search44%37%Brand capped; honest non-brand read
Paid social (Meta + LinkedIn)21%19%UTM consolidation
Direct20%7%Cross-domain linker restored sources
Organic search11%26%Content finally credited
Referral and partner3%8%Referral-link event + UTM gate
WhatsApp and dark social1%3%whatsapp_inquiry + routed inbox

Paid and direct had been absorbing 85% of trial credit; the corrected mix gave them 63%. Twenty-two points of mix — organic search, referrals and WhatsApp that the broken property had quietly filed under paid and direct. This is the same class of correction we look for in marketing attribution modeling work, but here it required no statistical modeling at all: the previous numbers were simply wrong, and the fix was plumbing.

Then the money moved.

  • Brand search capped at 25% of search spend, down from 44%. Brand queries convert almost regardless of ads; the marginal rupee was better spent elsewhere, and non-brand search expanded into expense-management and receipt-scanning keyword clusters plus two refreshed comparison pages. Non-brand trials rose 41% across the final six weeks.
  • LinkedIn narrowed to two industries — logistics and manufacturing, the segments whose trials activated fastest in the corrected data. Raw demo volume dipped slightly; activated trials from LinkedIn rose.
  • Content redirected to what converted. Two integration guides and a receipt-policy template — pages the old reports had ignored — turned out to sit on dozens of trial paths. They were refreshed and properly interlinked, and organic sessions finished the quarter up 56%.
  • Activation nurture matured. The event-triggered sequence from Phase 3 lifted activation rate from 34% to 41%, which meant the same trial volume produced materially more revenue-ready accounts.

Monthly trial starts closed the 90 days at 496, up 44%, against an unchanged PKR 2.9 million budget — a blended cost per trial of PKR 5,850, down 30% from the PKR 8,400 baseline.

Final Results

MetricBeforeAt 90 daysChange
Validated key events in GA41 (broken)14Full funnel coverage
Signup events per trial1.91.0Inflation removed
Trials with a known source59%98%+39 points
Channel mix correction22 points re-attributedPaid and direct were over-credited
Monthly trial starts345496+44% at flat spend
Blended cost per trialPKR 8,400PKR 5,850-30%
Activation rate34%41%+7 points
Organic sessions (monthly)Baseline+56%Content credited and refreshed
Weekly reporting effort~6 hours~45 minutesAutomated dashboard

Every number above traces to a specific intervention in the phases: the mix correction to the cross-domain linker and UTM gate, the cost-per-trial fall to the reallocation it enabled, the activation lift to the CRM roundtrip’s nurture triggers.

What Made This Work

  1. Activation was made the funnel’s currency. Trials are cheap to start and meaningless until someone logs a first expense. Building the measurement plan around first_expense_logged — and later pointing nurture, scoring and reporting at it — meant every system optimized toward the metric that predicted revenue.
  2. One container, one tag, one truth. Consolidating a decade-style accretion of snippets and containers killed the double-counting at the source instead of filtering it downstream, which is the only fix that survives the next agency handover.
  3. The UTM gate had teeth. A taxonomy document alone decays in weeks. Attaching it to a pre-launch QA checklist — no passing link, no shipping ad — is what kept the corrected channel mix from re-polluting during the most active campaign weeks.
  4. The CRM roundtrip connected spend to outcomes. Once trial, activation and closed-won flowed back with source attached, budget conversations stopped being about reported conversions and started being about activated trials per channel per rupee.
  5. Six weeks of patience before reallocation. It would have been easy to move budget in week three on partial data. Waiting for a clean accumulation window meant the reallocation rested on a defensible baseline — and the 30% cost-per-trial reduction landed inside the following month.

What Teams Can Apply

  1. Audit your tags before trusting any dashboard. A single Tag Assistant preview pass across your site and app will find most of what this audit found: duplicate fires, orphaned containers, dead conversion imports. It costs an afternoon.
  2. Keep key events under roughly fifteen, and make one of them activation. Event sprawl recreates the noise you just cleaned. Define the five to nine funnel events that map to revenue, plus a few supporting intent signals, and stop there.
  3. Gate campaign links behind a UTM checklist. The taxonomy can be one page. The discipline of refusing to ship un-annotated links is what makes channel reports trustworthy a quarter later.
  4. Fix subdomain tracking if signup lives off your marketing domain. Any Pakistani SaaS whose product runs on an app. subdomain and never configured cross-domain linking is reading most of its self-serve funnel as direct traffic.
  5. Re-read your channel mix six weeks after any cleanup. The common finding — paid and direct over-credited, organic, referral and WhatsApp under-credited — usually redirects real budget toward channels that were already working unpaid.

WeProms Digital has run this measurement-first sequence across Pakistani B2B SaaS, professional-services firms and ecommerce teams in Karachi, Lahore and Islamabad. The event vocabulary changes with each funnel; the audit-first, single-source-of-truth, reallocate-after-proof sequence stays the same.

What teams can apply

Use the framework, not just the headline number.

For GEO, AEO, and classic SEO, the useful signal is the sequence: fix crawl access, build answerable category assets, improve conversion paths, and document proof in a format that humans and machines can cite.

The funnel was rebuilt around activation, not signups — first_expense_logged within 14 days predicted paid conversion far better than trial starts, so every downstream system optimized to a metric that actually mattered.

A written UTM taxonomy plus a pre-launch campaign QA gate stopped new agency links from re-polluting the data the rebuild had just cleaned.

GA4 key events were imported into Google Ads with strict primary and secondary discipline, so Smart Bidding optimized against exactly one source of truth instead of a deleted goal.

Limitations

Context and limitations

Illustrative composite built from common patterns in Pakistani B2B SaaS; the size of any channel-mix correction depends on how much traffic arrives through WhatsApp, referrals and app subdomains, and results vary with spend level and category.

Questions

Case study FAQs

Is this GA4 event tracking framework applicable in Pakistan?

Yes. The technical rebuild is platform-agnostic, and the Pakistani context actually makes it more valuable: agency turnover tends to leave multiple stale tags on marketing sites, WhatsApp is a real acquisition channel that default GA4 never sees, and cross-domain product subdomains are common among local SaaS teams that grew out of a single landing page. The framework just adds these surfaces to the standard audit.

How quickly can we expect results?

The audit and rebuild take about five weeks. Trustworthy channel data needs another four to six weeks of clean accumulation before you should reallocate budget against it, because early post-cleanup windows are thin and noisy. Efficiency gains from reallocation typically show between weeks eight and twelve — this engagement cut blended cost per trial 30% inside that window at flat spend.

Can you replicate this process for our business?

Yes. The measurement plan is rebuilt around your funnel, whether that is trial-to-subscription for SaaS, appointment bookings for clinics, or inquiry forms for exporters. The event vocabulary changes; the audit sequence, UTM discipline and CRM roundtrip stay the same. We have applied it across B2B SaaS, professional services and ecommerce stacks in Karachi, Lahore and Islamabad.

Do you provide reporting during implementation?

Yes. Weekly checkpoints track tag coverage, event validation and data quality alongside the usual channel metrics, and a shared dashboard goes live in week one so your team sees the data stabilize in real time rather than waiting for a final reveal.

Next step

Want a similar rollout in Pakistan?

Share your current baseline and we will map a phased execution plan to your growth goals.

Book Free Strategy Call

Start Here

Let's talk about your growth system

Book a strategy call to discuss how WeProms Digital can help your business achieve better tracking, cleaner attribution, and more accountable growth.

Your data is secure
Typically respond within 2 hours
No obligation - just a conversation
Contact workflow From first message to a useful next step
Step one Context received

Your goals, market, and current channels are captured before we suggest a direction.

This helps us recommend the right engagement level for your needs.

We'll respond via email within 1 business day. Your details are kept confidential.