Skip to content
All writing

Six thousand dollars of Google Ads bought two free trials

The question in front of me last week was whether to raise the ad budget. Persistence Athletics is my gym in Seattle, the Google Ads budget has sat at $12 a day since the campaign was created in April 2025, and nobody has touched it since. Every instinct said the same thing. The account reports conversions, so the channel works, so buy more of it.

I sat down to confirm that and found the opposite. Since October 2024 the account has spent $6,668 and produced two free trial signups. Two. The 93 conversions the dashboard was reporting were, with two exceptions, not signups at all.

That is $3,334 per signup, and I am being generous by calling them signups rather than customers, because I cannot prove either of them ever paid the gym a dollar.

What the 93 conversions actually were

Ninety one of the 93 came from two conversion actions: 83 recorded as "Local actions, Directions" and 8 as "Clicks to call". Those are map pin taps and phone icon taps. Somebody saw the listing, tapped for directions, and Google counted it in the same column as a booked trial.

They were also on a campaign called "CrossFit Gym Seattle" that has been paused. The number that made the channel look alive was mostly produced by a campaign that was not running.

Only the search campaign ever produced a real free trial booking, twice in 22 months.

old: 93 conversions in the column, so the channel works, so raise the budget
new: 2 free trial signups in 22 months, and the budget was never the constraint

I should be plain about how this audit happened. I applied for a Google Ads API developer token and was denied, so everything below was read out of the account screen by screen through the browser, because there was no way to ask it a question programmatically.

Where the money went

Two findings account for most of the waste.

The first is that the Display Network was switched on inside a Search campaign. It consumed $2,631, which is 50.3% of that campaign's lifetime spend, across 241,823 impressions, and produced zero conversions. Google Search itself took $2,576 across 35,354 impressions and produced the two real signups. Half that campaign's money went to a placement I never intended to buy, on a setting that is on by default. It was switched off in June 2026, so the lifetime numbers describe a configuration that no longer exists.

The second is the device split, and it is the one I would act on first. Mobile took $4,425 of lifetime spend and produced one signup in 22 months. Desktop took $743 and produced the other one.

Two signups prove nothing on their own. What makes the split worth acting on is that a separate system points the same way. In GA4, mobile and desktop visitors open the free trial dialog at nearly the same rate, but only 8 of 48 mobile users ever reach the step where they pick a class time, against 33 of 45 on desktop. Google agrees: it rates the landing page experience "Below average" on nine keywords.

Three independent sources, none of which talk to each other, describing one broken booking flow on phones. Meanwhile the account spends six dollars on phone traffic for every one it spends on desktop. Fixing the ads before fixing the phone experience would be buying more of a thing that does not work.

The budget question, answered by the account itself

Over the last 28 days the campaign won 34.6% of available impressions. It lost 62.1% to ad rank and 3.3% to budget.

Lost to budget means the money ran out before the auction was over. Lost to rank means Google decided the ad was not good enough to show. So of every impression I did not get, roughly one in twenty was about spend and nineteen in twenty were about quality. Google's own label on the campaign is "Bid setting limited", not "Limited by budget". It had been telling me this the whole time in a field nobody reads.

Raising the daily budget would buy almost nothing. The binding constraints at the time of the audit were a $2.00 maximum cost per click against a realised cost per click of $1.69, and quality scores where no keyword in the account exceeds 7 out of 10. Two keywords sit at 1 out of 10. The cap has since gone to $3.00.

The intuitive move, the one I was going to make, was the only move guaranteed to change nothing.

Does it work at all, at the gym's real numbers

The last 30 days cost $353.50 per free trial signup. Against that, the gym's own database says there are 61 active memberships carrying $16,705 in monthly recurring revenue as of August 3, a weighted average of $274 per member per month. That figure is theoretical: it prices every active membership at list, complimentary ones included, so it is contract value rather than cash. July collections were $13.4K against it, so every payback number below is the optimistic end of the range.

So the arithmetic is simple. If half of free trials become members, a member costs $707 to acquire and pays that back in 2.6 months. At 30% it is $1,178 and 4.3 months. At 20% it is $1,768 and 6.5 months. At 10% it is $3,535 and nearly 13 months.

Which means the honest threshold is: paid search works for this gym if more than roughly one in five free trials becomes a member and members stay past seven months. That is a question I can answer from the gym floor, which is the point of framing it that way.

What I cannot answer is whether it is happening. The members table in the platform I built has no source column, nothing on a member record that says trial, or walk in, or ad. So I cannot trace either signup forward to a membership, or compute the trial to member rate for ads specifically. The one number I have is from June and it covers all free trials from every source: 29.6% at 60 days, which is 8 people out of 27. Small numbers, and I have not recomputed it since.

That gap is my fault and it is fixable. Until it is, I am not going to claim the ads work or that they do not.

What generalises

If you buy ads for a small business, this is the part worth taking.

Open the conversions table in your ad account and read the action names one at a time. Not the total. The names. For each one, ask whether you would have paid for that event if it were the only thing that happened. A phone icon tapped and never dialled. A "website visit". Then look at which of those your bidding is optimising toward.

In my account, nine conversion actions are still primary and read only, so I cannot demote them. Five are Google hosted local actions, including one called "Website visits" with 21 and one called "Other engagements" with 80. Those two alone outnumber every real booking the account has ever produced. The only lever is setting conversion goals at the campaign level, which is now done, and it cleans up the reporting without steering the bidding.

Second: before you raise a budget, look at impression share lost to budget. It is one number, it is already in your account, and it settles the argument empirically instead of by feel. Mine said 3.3%.

Third, and this is the one I would put on a wall. I read that dashboard for nearly two years and never once asked what the conversions column was made of. A total with a familiar label reads as self explanatory, and that is exactly what keeps it safe from scrutiny. Whatever number you check most often and question least is the one most likely to be measuring something adjacent to your business rather than your business.

The strongest arguments against me

The best objection is that this is a story about an incompetently configured account, not about paid search. Display network left on inside a search campaign. A two mile radius around one zip code. A bid cap below what the auction costs. Quality scores that top out at 7 out of 10. Fix those and of course the numbers change.

That is correct, and I own every one of those settings. But it is the actual point rather than a rebuttal to it. The account was misconfigured for most of its life, and the dashboard reported it as working the entire time. The measurement did not merely fail to catch the problem. It is the reason the problem survived 22 months, because a number sitting in a column labelled conversions is the last thing in a business anyone thinks to audit.

The second objection is fairer. Somebody tapping for directions to a gym is worth more than an impression, and a phone tap is close to a lead.

Two things still stand. They were recorded on a paused campaign, so they were not something my active spend was producing. And they were summed into a single column labelled conversions, next to actual bookings, at roughly 45 to 1. A total that mixes a booked trial with a map tap cannot answer any question I would spend money on. If I want to value directions taps, they need their own line and their own name.

The honest limit

Two signups is a sample of two. Every ratio in this post that has a 2 in the denominator is close to meaningless as a forecast, including the $3,334 per signup. It is an accurate description of what happened and a bad predictor of what happens next.

This is one gym, in one city, selling memberships that average $274 a month, inside a two mile radius around a single Seattle zip code, which is an unusual thing to buy search ads for. Paid search failing here says nothing whatsoever about paid search generally, and if you take "Google Ads does not work" away from this post you have taken the wrong thing.

The lifetime figures are also polluted by the display network problem, so the account today performs better than these averages suggest. And the $353.50 cost per signup is a 30 day window containing exactly one signup.

What I do trust, and what I would defend, is the counting problem. Ninety one of 93 is not a rounding error or a sampling artifact. Those events were mislabelled with certainty, for 22 months, in a system I checked regularly and believed.

The number was not wrong. It was answering a question I never asked, and I read it as though it had answered mine.

Untangling that kind of thing, and building the tracking that should have existed in the first place, is what Autosterea does.

First published on ravikantdewangan.com.

Tell us what eats your week.

A free 20-minute call. We'll show you what we would take off your plate.

Book a call