Bikeaholic
Revenue up 132% across two years, then a tracking fault found that had been hiding where that revenue came from.
Visit Bikeaholic+132%
Online revenue
2023 to 2025
3.3x
Transactions
Same period
3.2x
Paid sessions after the fix
Either side of the tracking repair, August 2026
3.2x – 4.7x
Attributed return, now measurable
Monthly, on purchase conversions only, 2026
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.
Online revenue rose 132% across two years, and transactions more than tripled over the same period. That is till data and it is not in dispute.
Then we found the hole
What was in dispute, though nobody knew it, was the attribution underneath.
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 late 2025 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. Either side of that:
| Sessions per day | Before | After |
|---|---|---|
| Paid Search | baseline | 3.2x |
| Organic Search | baseline | −42% |
Paid more than tripled overnight. Organic fell over the same window, which is partly the same clicks finally being filed in the right column and partly the wider search shift that is showing up on every site this year.
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. Monthly return in 2026 runs between 3.2x and 4.7x, with the most recent month always still maturing because conversions keep landing for two to three weeks after a month closes.
That is lower than the figure this page used to claim, and the honest reason is that the old figure 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 growth was real, and the account was still lying to us about where it 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.
Google Ads / Shopify / GA4