Garage 30
Paid search, tracking + CRO · Queenstown2025–26Current

Bikeaholic

A tracking fault found and fixed that had been hiding where the store's sales came from.

Visit Bikeaholic

The starting point

Bikeaholic is a mountain-bike retail and hire shop in Queenstown. Good stock, strong local reputation, and a Google Ads account doing what most retail accounts do: spending steadily, returning something, and nobody quite able to say which brands or campaigns earned it.

What we did

The work was unglamorous on purpose. Conversion tracking got rebuilt so GA4 and Google Ads were reporting against the same events as the till. Shopping was restructured into per-brand campaigns so spend could follow margin instead of averages. Rentals were given their own funnel and their own goals rather than riding along with retail. After that it was iteration: query sculpting, feed fixes, seasonal budget shifts, and landing-page work when the data said the click was fine but the page was not.

Then we found the hole

In mid-2026 the paid numbers stopped making sense. Google Ads reported clicks that GA4 could not find. Paid Search sessions had been falling toward nothing since October 2024 while spend held steady, which is not a thing that happens for any good reason.

The cause was a Shopify app. An event-management extension was stripping the entire query string off every page load, and the query string is where the gclid lives. A click would arrive, lose its identifier at the door, and get filed under Organic Search because all GA4 could still see was a referral from Google. The account had been paying for traffic and then crediting it to someone else.

It came off in August 2026.

What the fix revealed

With attribution working, the account can be read honestly for the first time. Bikeaholic counts exactly one thing as a conversion, a completed purchase, so there are no checkout starts inflating the numbers.

The figure this page used to claim was built on data that could not see most of what it was measuring. A number produced by broken tracking is not conservative or generous. It is just unrelated to what happened.

What made it work

Tracking first, structure second, opinions last. That was always the order we worked in, and this engagement is the argument for it: the account was lying to us about where its sales came from.

The part worth copying is smaller than the fix. Somebody has to keep asking whether the numbers still reconcile after the setup is signed off, because tracking does not stay fixed. It gets broken later, by an app somebody installed for an unrelated reason, and nothing announces it. The only reason this one surfaced is that a weekly review kept comparing two sources that were supposed to agree, and eventually they did not.

/ Stack

Google Ads / Shopify / GA4