We find a measurement gap in 100% of the accounts we audit. See what is hiding in yours. We find gaps in 100% of audits. Get your free audit
Case Stories Ecommerce Tougher Than Tom
Tougher Than Tom

Tougher Than Tom: a Shopify ad account scaled past 3x ROAS, on conversion tracking we built from scratch.

Tougher Than Tom is a US ecommerce brand selling all-natural insect and rodent repellents, built on Shopify. They came to us for a Google Analytics audit, and the real problem was underneath: at the time Shopify had no GA4 integration at all. So we built the tracking from scratch, a custom, dataLayer-driven system that captures 7 ecommerce events across the funnel and feeds clean data to GA4 and every ad platform at once. Then, on that clean data, we ran and scaled their Google, Performance Max and Bing campaigns to a blended ROAS above 3x, at roughly a 7% conversion rate.

tougherthantom.com
Tougher Than Tom homepage hero
Tougher Than Tom site
3x+
blended ROAS
Held above 3x as we scaled the account
~7%
conversion rate
On the Google Ads account
7 events
tracked end to end
The clean data it all ran on
Every platform
from one source
Google Search, Performance Max, Bing, GA4
01 The Story 02 The Challenge 03 The Approach 04 The Results 05 Takeaways
01 · The Story

Real ad spend, on tracking they could not trust.

Tougher Than Tom is a US ecommerce brand selling all-natural insect and rodent repellents, the kind you can use around family and pets without the harsh chemicals. They run on Shopify, and they advertise across a lot of platforms.

They came to us for a Google Analytics audit. They were spending real money on ads and leaning on several analytics tools, but the data underneath was not solid, and this is the story of the part that fixes that: a clean Google Analytics 4 setup that actually measures the whole funnel.

Here is the catch that makes it interesting. At the time, Shopify had a native Universal Analytics integration but no GA4 integration at all. And even native integrations break: a theme tweak, a new section, a third-party app can knock conversion tracking sideways without warning. If we wanted GA4 data we could actually trust, we had to build it ourselves, custom, end to end.

02 · The Challenge

Seven events, real item data, everywhere on the site.

First we mapped the events that actually matter for an ecommerce funnel, the seven that tell you what is really happening between a visit and a sale: view collection (view_item_list), view product (view_item), add to cart, remove from cart, upsell, begin checkout, and purchase.

The hard part is the item data. Every one of those events has to carry the product details (the id, the name, the category, the variant, the price, the quantity) so GA4 can attribute and report it properly. On a Shopify product page you can pull that from the ShopifyAnalytics meta-object. But that object only exists on the product page.

The moment someone adds to cart from a collection page or the home page, it is gone, and that is exactly where most custom Shopify tracking falls apart. So the brief was clear, and unforgiving:

  • All seven funnel events, view through purchase
  • Accurate item data on every single event
  • Working everywhere, not just product pages
03 · The Approach

Build it once, clean, and feed every platform from it.

We ruled out the fragile options first, then built a platform-agnostic system on a dataLayer push, tested it hard before trusting a single number, and wired it into a clean, reusable Google Tag Manager structure.

First principles

a Not the fragile ways

There were two easy paths, and we rejected both. The first is to track everything manually from GTM by scraping the data off each page. We do not recommend it: it is exhausting, time-consuming and unstable, and any change to the website breaks the configuration.

The second is a third-party Shopify tracking app. Those can help, but depending on how customized the store is they tend to misbehave: covering some events partially, some not at all, differently on every theme. For a store we wanted to trust, neither was good enough.

We chose to build it properly rather than rent something fragile, because tracking you cannot trust is worse than no tracking at all.

The foundation

b The dataLayer push

The solution we built sits on a dataLayer push. We had a developer insert small code snippets that fire each event into the dataLayer, with all its data attached, at the exact moment the action happens: an add to cart, a begin checkout, a purchase.

From there GTM reads the event out of the dataLayer and passes it on to GA4 and to any ad platform through tags. One clean source, every destination, and crucially it works the same everywhere on the site, not just on product pages.

Execution was tight: we sent the developer a detailed spec with every event written out and an example payload for each, so there was nothing to guess. This is the kind of conversion tracking setup the rest of the marketing depends on.

GTM · dataLayer push spec
The dataLayer push specification for the add-to-cart event, sent to the developer
the add-to-cart event spec we sent the developer

A single, platform-agnostic event source that fires everywhere on the site, not just where Shopify makes it easy.

Trust, but verify

c Test it before you trust it

Once the developer shipped the pushes, we did not assume they worked. We watched every event fire live on the real store, with the right item data attached, before any of it went into reporting.

Three tools did the checking: GTM's preview mode, the Analytics Debugger extension, and GA4's own debugView. If an event was missing a parameter or firing twice, we caught it here, on the bench, not three weeks later in a report that had been wrong the whole time.

Analytics Debugger · live event
The Analytics Debugger showing the add-to-cart event firing live on the store with its product data
the add-to-cart event firing live, item data attached

Every event verified firing correctly, with the right data, before a single number reached a report.

The structure

d A clean, reusable GTM structure

With the data flowing, we built the variable-trigger-tag structure in GTM. Variables pull each piece of data out of the dataLayer. Triggers, GTM's custom-event triggers matched on the exact event name, decide when a tag fires, and a single regular-expression trigger can cover all the events at once.

The payoff of doing it this way is reuse: one trigger can feed many tags, so the same add-to-cart event can light up GA4, Google Ads, Bing, Facebook and TikTok at the same time, from one definition.

We went deliberately granular, a tag per event, rather than one catch-all tag, because we were sending different parameters to different platforms and wanted complete control over what went where. The result is a structure that is easy to read, easy to extend, and does not fall over when the store's theme or sections change, which on Shopify they always do.

One event, many tags: GA4, Google, Bing, Facebook and TikTok all fed from a single, reusable definition.

The payoff

e Clean data, then a profitable, scaling account

This was never tracking for its own sake. Tougher Than Tom were running a real multi-platform paid operation, Google Search, Performance Max and Bing across their repellent range, and every one of those platforms optimizes on the conversions you feed it.

Smart bidding is only as smart as its signal. Once the event data was clean, consistent and granular, the algorithms could finally learn which clicks turned into carts and which carts turned into orders. That is when the account moved: we ran and scaled it on a blended ROAS that held above 3x, at roughly a 7% conversion rate, with the brand and shopping campaigns returning well over 10x as the efficient core while broader acquisition scaled the volume.

The point is the order of operations: the measurement came first, the performance followed, because you cannot optimize toward a number you cannot trust. This is the kind of hands-on Google Ads management that only works when the data underneath it is right.

A profitable, scaling account at a blended ROAS above 3x, built on event data we could finally trust.

04 · The Results

Clean data in GA4, and a profitable account built on it.

The result is a complete, bulletproof conversion-tracking system: all seven ecommerce events, carrying full item data, flowing into GA4 and into every ad platform from one source of truth.

And it paid off where it counts, in the ad account it fed. On that clean data we ran and scaled Tougher Than Tom's Google, Performance Max and Bing campaigns to a blended ROAS that held above 3x, at around a 7% conversion rate, with the best campaigns returning well over 10x. None of that is even visible without trustworthy conversion data, which is exactly the point.

GA4's built-in ecommerce reports were weaker than the old Universal Analytics ones, so we recreated the reports that mattered inside GA4 and ran them in parallel, so the client never lost the views they relied on. We kept the item parameters uniform and consistent, clean item IDs and names with no "(not set)" noise, and built an Exploration report to catch duplicate transactions, the kind of data bug that inflates your numbers without anyone noticing.

The whole thing is scalable and reusable by design. A new event or a new ad platform is a small addition, not a rebuild, and it keeps working when the store's theme and sections change underneath it.

One detail we are particularly proud of: even in our own write-up, the dashboard screenshots use Google's demo merchant data, not the client's. Clean measurement and client confidentiality were never in tension here.

And it all landed in about two weeks, start to finish.

05 · Takeaways

Measurement is the foundation, so build it to last.

The lesson here is the one businesses skip most often: you cannot optimize what you cannot measure, and on a customized Shopify store, "native" tracking is not something you can take for granted.

Build it platform-agnostic, one clean event source feeding every tool, so you are never re-implementing the same conversion five times for five platforms. Test it on the real site with real debugging tools before you trust a single number. And make it scalable, so the next event or the next ad platform is a small addition, not a teardown.

That is what we do. We build the conversion tracking and analytics that the rest of the marketing stands on, for ecommerce brands who would rather make decisions on data they can actually trust. Get the data right, and everything downstream gets easier.

Key improvements
  • Tailored ecommerce data-collection strategy
  • Custom dataLayer push instead of a fragile native integration
  • The entire 7-event funnel tracked, view to purchase
  • One event source feeding GA4 and every ad platform
  • Clean, scalable GTM structure (reusable triggers and variables)
  • System unaffected by Shopify theme or app changes
  • GA4 ecommerce reports recreated, duplicate transactions caught
  • Multi-platform account scaled at a blended ROAS above 3x

If your Shopify tracking breaks every time you touch the store, or you are moving to GA4, this is the kind of bulletproof setup we build.

Want this on your account?

Request a Due Diligence Audit. We check 50+ dimensions across PPC, tracking and analytics, and show you where the growth is.

Get your free Due Diligence Audit