Woolworths Was Capturing 40% of Its E-Commerce Events. We Got It to 94%.
When Universal Analytics sunset, Woolworths' GA4 migration left big holes in the data — only ~40% of e-commerce events were landing cleanly. We rebuilt the legacy data layer, re-implemented enhanced e-commerce tracking, and lifted event capture from 40% to 94%.
Working with Sean and team was refreshing.
Rebecca H., Woolworths
The situation
A GA4 migration isn't finished when the tag loads. It's finished when the data is complete enough to bet a decision on — and Woolworths' wasn't. When we walked in, the honest word for it was train wreck.
If you've shopped in South Africa, you know "Woolies." It's one of the country's most recognised retailers — food, fashion, beauty, homeware, a fast-growing online business, and the Woolies Dash on-demand grocery operation running on top of all of it. Merchandising, marketing, trading: every one of those teams leans on what the analytics say is happening in the cart and at checkout.
So when Universal Analytics went dark, the stakes weren't academic. Every business on the platform got moved onto GA4, which measures the world in a completely different way — events, not pageviews and sessions. For a retailer pushing high transaction volumes across a dozen categories, that's not a checkbox you tick on a Friday afternoon. Get it wrong and you're flying blind through the exact reports a retailer can least afford to lose: what people view, what they add to cart, and what they actually buy.
The task
By the time Woolworths brought us in, the migration had already left holes. Across the e-commerce funnel, only about 40% of events were landing reliably. The other 60% were dropping silently — distorted by legacy data structures dragged over from the old Universal Analytics setup, and an event layer that no longer matched how GA4 expects to be fed.
That 40% wasn't a number on a slide. It was the reason a few things had quietly gone wrong:
- Revenue and conversion reports couldn't be trusted — and the teams knew it, so they'd stopped acting on them.
- Inherited, inconsistent data structures were polluting clean events with mismatched names, wrong types, and missing parameters.
- Attribution was unreliable, which undercut every paid-media and merchandising call that depends on accurate event data.
The mandate was refreshingly blunt: close the gaps, clean up the mess, and get e-commerce measurement back to a number the business could stake decisions on.
The action
We were brought in to fix the data gaps, full stop — so we treated this as a data-quality program, not a one-off tag fix. There was no clever shortcut here. It was weeks of combing through broken calls and bad data, one event at a time, until the funnel told the truth.
- Audited the full funnel. We mapped every e-commerce event end to end —
view_itemandadd_to_cartthroughbegin_checkoutandpurchase— against what was actually firing, and pinned down exactly where and why events were bleeding out. - Cleaned up the legacy data structures. We rebuilt the old Universal Analytics scaffolding into a consistent, GA4-native schema: standardised event and parameter names, correct data types, and one source of truth for the data layer instead of a patchwork of old and new.
- Rebuilt the e-commerce event layer. We re-implemented tracking to GA4's enhanced e-commerce spec, so every step of the funnel sent complete, well-formed events. No more half-populated payloads.
- Hardened data efficiency. We tightened how and when events fired to cut loss from race conditions, navigation, and consent edge cases — the quiet places where capture rates bleed out while everything looks fine on the surface.
- QA'd against reality. We validated every fix across the live funnel until the reported events matched actual user behaviour — not just a clean debug view, which is a very different and much more flattering thing.
Here's the part nobody puts on a slide: this work lives or dies on mapping. Mapping, mapping, and mapping. When you build systems, the data mapping has to be correct — one wrong value, one event named slightly off, one parameter typed as a string when GA4 wants a number, and your whole attribution chain breaks. Not "looks a little off." Breaks. That's why 60% of the events were on the floor, and that's why the fix took weeks instead of an afternoon.
Because the work was scoped around data quality and not cosmetic reporting, the fixes compounded. Every cleaned structure and corrected event lifted the capture rate for everything downstream of it.
The result
We took Woolworths' e-commerce event capture from 40% to 94% across all e-commerce events. A measurement system the business had stopped trusting became one it could run on again.
- Capture rate climbed from 40% to 94% across the full e-commerce event set.
- Clean, GA4-native data structures replaced the legacy scaffolding, so new events stay consistent instead of decaying.
- Reporting teams trusted the numbers again — revenue, conversion and funnel reports finally matched reality.
- Attribution got far more reliable, giving paid-media and merchandising decisions a foundation they could actually stand on.
The headline number tells the story. A 40% capture rate is a system you second-guess. A 94% capture rate is one you build a business on.
The takeaway: a GA4 migration isn't "done" when the tag loads. It's done when the data is complete enough to trust. The gaps hide in the mapping, and most teams find them months later, in a report that doesn't add up. We go looking for them on purpose — and close them.
Mid-migration and unsure what your real capture rate is? Send us a brief and we'll come back with a plan in 48 hours.