I built a coaching business’s ads system from the tracking up. About 180 booked calls in ten weeks, every one of them counted.
The owner sells a training program on a booked call. When I started, the Google Ads account could not count a single one: twelve conversion goals, all broken, and a year of video ads from a previous agency that produced sign-ups nobody could tie to a call. I built the tracking, the booking calendar, the record behind it and the campaigns. Ten weeks later Google has booked about 180 calls at about $67 each, and every booking lands in the client’s CRM with the ad click that produced it.
- Client
- A coaching business (name withheld), selling nationally
- Their work
- A training program, sold on a 15-minute call
- My work
- Conversion tracking, the booking calendar and leads record, the search and video campaigns, the follow-up automations, the reporting
- Live
- Search ads August 25, 2026; video ads September 17, 2026
- Data
- Google Ads and Google Analytics, August 25 to November 2, 2026
What the owner keeps
Built by me, handed over whole. If they ever walk away from me, nothing has to be rebuilt.
Theirs to keep
- The tracking and the one conversion goal, in the owner’s own ad and analytics accounts
- The booking calendar and every booking, with the ad click that produced it, in the owner’s own CRM
- Six follow-up automations in the owner’s voice, and a record of every change with its undo path
Run without me
- Nothing sends until the owner approves it
- The campaigns start, pause and spend on the owner’s word
- Weekly reads come from the account itself, not from me
The short version
Four things changed. Everything below is the detail.
Tracking that tells the truth
The account had twelve conversion goals and none of them was wired to a live page, so its Conversions column read zero no matter what happened. I built the tracking from nothing, proved it with a real booking I made myself, and made the booked call the account’s one goal. Google now knows what a booking looks like and bids for more of them.
A booking calendar of my own, wired to the client’s CRM
The embedded third-party booking widget was replaced with a calendar I built that reads the owner’s real open times from the CRM and books the call into it. Each booking creates the contact with the ad click attached, lands in a separate leads list and sends an alert email the moment it happens.
Video to people who already knew him
Search ads alone, at $33 a day, booked a call every few days. Seven videos I scripted and the owner recorded, shown on YouTube to people who had watched him, subscribed or visited the page, took weekly bookings from 2 to 35 in a month, at a third of what a search booking cost.
Follow-ups by email and text, built and waiting for the go
Six automations inside the client’s CRM: reminders before the call, a rebooking offer after a cancellation, different follow-ups for people who showed and people who did not, a value series, and a guard that stops every message the moment someone becomes a student. They are built as drafts and publish on the owner’s approval.
Before and after
An ad account that spent money and could not say what it bought, against a system where every click, booking and contact is one record.
| Before | Now | |
|---|---|---|
| Conversion tracking | Twelve goals, all misconfigured, none on a live page; the Conversions column read zero forever | One goal, the booked call, fired from the booking page and proven end to end; Google bids on it |
| Analytics | None on the booking page | Google Analytics on the page, the booking as its key event, visitors and bookings by source |
| The booking | A third-party widget in a frame; the page could only guess when a booking finished | My own calendar form on the page, reading the owner’s real availability from the CRM and booking straight into it |
| The ad click | Lost the moment someone booked | Captured on the page and written onto the contact in the CRM, so every booking carries the click that produced it |
| The record | Only what the widget wrote into the CRM | The contact and appointment in the CRM, a row in a separate leads list, and an alert email to the client’s team and to me |
| Search ads | Three campaigns showing to people in 12 countries and to any age, with no ad extensions | Ads shown only to people in the US aged 25 and up, wasted searches blocked, extensions on every campaign |
| Video ads | A previous agency’s cold campaigns, removed; their videos no longer eligible | Seven scripted videos of the owner and a campaign for each market: people who already watched, subscribed or visited, live; a cold campaign and a second-market campaign built and held |
| Follow-up | The CRM’s stock confirmation, carrying another company’s name | Six email and text automations in the owner’s own CRM, written in his voice, drafted and ready to publish |
| Changes | Made by hand in the interface, unrecorded | Checked by Google first, applied in one pass, each with its undo path written down |
| Reporting | No way to say what a booked call cost | Weekly reads from the account itself, a results presentation for the owner, and a proposal for every new spend |
The detail
Each part of the system, what it replaced, and what the numbers show. Open the ones you care about.
1Tracking that tells the truth
From twelve conversion goals that counted nothing to one that Google bids on, proven with a real booking.
Tracking that tells the truth
From twelve conversion goals that counted nothing to one that Google bids on, proven with a real booking.
Where the account stood in August 2026
Twelve goals, none of them real
Purchases, sign-ups, phone calls, a masterclass registration, a YouTube subscription goal, two analytics defaults: every one of them read “misconfigured”, because no tag on any live page could fire them. The Conversions column would have read zero forever.
A year of ads with no outcome attached
From November 2023 to October 2024 a previous agency ran cold YouTube ads for over twenty thousand dollars. They produced nearly six thousand opt-ins at about four dollars each, and nobody could say how many became a call or a sale. The campaigns were gone and their videos were no longer eligible to run.
No analytics on the page that mattered
The booking page had no analytics property of its own, so there was no record of who visited, from where, or how many booked.
A booking widget the page could not hear
The calendar was a third-party widget in a frame. It emitted exactly one signal when a booking completed, and nothing on the page listened for it.
What I built
A tag container, an analytics property and one conversion
Google Tag Manager on the booking page, a new Google Analytics property for it, and a single Google Ads conversion for the booked call, with the booking as a key event in analytics as well. Built August 26 to 28, 2026.
Proven with a real booking
I read all 63 of the widget’s code files to find the one message it sends when a booking completes, wrote the listener for it, then booked a call myself from a real ad click and watched the conversion arrive in Google Ads and in analytics. Not assumed; seen.
The booked call made the account’s only goal
On September 6 the booking became the primary conversion, so it lands in the Conversions column and can steer bidding. On September 17 the seven dead goals were demoted and the three Google would not let me edit were switched out at the account level. Only the booked call can steer bidding now, and both video campaigns are pinned to it.
A hidden click-id field on the form
A tag writes Google’s click id into the booking form at the moment of submission, so the id travels with the booking into the CRM instead of dying in the browser.
What it gives the client
Every number on this page exists because of this part. Before it, the account could spend and could not say what it bought. After it, Google’s bidding had something real to aim at: a video campaign set to maximise booked calls, with nothing else allowed to count, is why the cost per call fell to $23 in its first week.
2The booking calendar and the record behind it
My own calendar on the page, reading the owner’s real availability from the CRM, writing the booking, the click and the contact into it.
The booking calendar and the record behind it
My own calendar on the page, reading the owner’s real availability from the CRM, writing the booking, the click and the contact into it.
On September 22, 2026 the third-party widget came off the page and a booking form I built went on in its place. It does what the widget did, and four things the widget could not.
Real open times, from the client’s CRM
The form asks an automation on my server for the next 31 days of open 15-minute slots on the owner’s discovery calendar. The CRM’s key never reaches the browser. The visitor sees a month grid with the open dates in gold, picks a date, then a time.
The booking written straight into the CRM
Submitting creates or updates the contact in the client’s CRM and books the appointment on the owner’s calendar, confirmed server to server. The first test was a real appointment on the owner’s real calendar, read back from the CRM’s own records to prove it, then cancelled and cleaned up.
The ad click on the contact
Four fields I added to the CRM’s contact record hold the Google click id and the campaign tags, so anyone opening a contact can see which ad brought them.
A leads list of my own
Every booking is also a row in a leads table on my server, with a password-protected page to read it, so the record does not depend on anyone’s CRM login.
An alert the moment someone books
Since September 27, every successful booking sends an email to the client’s team inbox and to mine, with the name, the time and the source.
Every release went the same way: back up the live page, deploy, make a real booking on the live address, check it against the CRM’s own records, cancel it, delete the test row. The first version listed every slot for the week at once, over seventy buttons; The owner preferred the old widget’s calendar look, so the form became a month grid the next morning.
3The campaigns: search first, then video
Search alone booked 2 calls in three weeks. Video to people who already knew the owner booked 35 in its first full week.
The campaigns: search first, then video
Search alone booked 2 calls in three weeks. Video to people who already knew the owner booked 35 in its first full week.
A small start on purpose
Three search campaigns went live on August 25, 2026 at $33 a day in total: people searching for the business, people searching the owner’s name, and people searching for competitors. The point of the first three weeks was to prove the booking could be counted before spending more. Google counted 2 booked calls in those weeks (bookings before September 6 were not yet in its Conversions column), which was the point: the count worked.
One pass of 164 changes
On September 17 I applied 164 changes through Google’s own interface for agencies, each set checked by Google first and verified by reading the account back afterwards: ads shown only to people physically in the US (12 foreign countries had been taking spend), under-25s excluded, wasted and competitor searches blocked, the brand campaign fixed so it could show on the owner’s own name, extensions on every campaign, the dead conversion goals demoted, two new search ad groups and three new ads, and the two video campaigns built. Every change set carries its undo path.
Seven videos: scripted, recorded, cut for ads
I wrote the seven scripts word for word, timed at a speaking pace: three that explain the business to someone who has never heard of it (30 seconds, 60 seconds and a two-minute walkthrough), three that answer the doubts people raise before they book (is this legal, is it too late to start, do I need a licence; 42 to 44 seconds each) and a six-second reminder. Each script carries its on-screen text, the disclaimer that sits on screen from the fifth second, the end card, the unlisted title, the description that goes under it, and the list of what may never be said in this category. The owner recorded them to camera; one was re-cut after its first version. I uploaded them unlisted, attached them to the ads with the approved copy, “Book now” for people who knew him and “Learn more” for people who did not, and the warm campaign went live on September 17.
One set of videos, a campaign for each market
The same videos serve different audiences through different campaigns, each with its own budget and its own ad, so every market reports on its own:
People who already know him
Three audiences: anyone who watched his videos in the last six months, subscribers and people who liked a video, and people who visited the booking page without booking. Live since September 17, and the source of most of the 180 calls.
People who have never heard of him
Three audiences: people who searched for this kind of business, people who browsed competitor programs, and people whose interests and in-market signals fit. Built, approved and held until the warm audience is spent.
People searching
Five search ad groups, each with its own approved text: the business itself, training and course searches, a related-search group, competitors by name, and the owner’s own name.
A neighbouring trade
People whose daily work already overlaps the training, who hear a different message: you already do most of this. Their own booking page, their own tag on every booking, two ads from the existing videos approved by Google, and eight more scripts written for that market, vertical-first for phones, with the shot list. Section 7 has what waits.
Booked calls per week
Every bar is one week of booked calls counted by Google Ads. The gold line is the day the video ads went live. The last two bars are after the budget was cut on October 23 to stay inside the three-month budget.
Where the calls came from
| Campaign | Spend | Clicks | Booked | Per booked call |
|---|---|---|---|---|
| YouTube: people who already knew the owner | $9,124.78 | 4,342 | 159 | $57.39 |
| Search: people looking for the business | $2,290.29 | 446 | 13 | $176.18 |
| Search: the owner’s name and the brand | $518.80 | 78 | 6 | $86.47 |
| Search: competitor names | $121.87 | 25 | 2 | $60.94 |
| YouTube: new people | $0 | 0 | 0 | built, held |
| Account | $12,055.74 | 4,891 | 180 | $66.98 |
Video is 76% of the spend and 88% of the bookings. Search still books, at about three times the cost per call, and most of that extra cost is people searching for free public information rather than for someone to learn from.
The audience has a size
The video campaign was stepped up as long as the cost per call held. It held at $150 a day. At $300 a day the same 11,800 people were seeing the ads 5.6 times a week, bookings stayed at 30 to 38 a week instead of doubling, and the cost per call rose. When the budget came down on October 23, the cost per call came down with it.
| Video budget | Dates | Spend | Booked | Per booked call |
|---|---|---|---|---|
| $39.50 a day | Sep 17 to 22 | $244.25 | 10.5 | $23.26 |
| $150 a day | Sep 23 to 28 | $919.94 | 27.5 | $33.44 |
| $300 a day | Sep 29 to Oct 23 | $7,442.94 | 109 | $68.28 |
| $50 a day | Oct 24 to Nov 2 | $517.64 | 12 | $43.14 |
The fix for that is fresh audiences, not more money on the same people: the 360-day viewer list of about 100,000, the site-visitor retargeting group, and the second-market campaign in section 7.
What I learned from the account
The objection videos book the calls
“Is this legal” and “Do I need a licence” booked more calls than any other video. People book after their doubts are answered, not after a pitch.
Google’s own phone cuts outperformed the originals
The vertical and square versions Google cut from the widescreen videos took about 60% of the video spend and 70% of the bookings. The next videos get recorded for phones on purpose.
Information searches waste search money
People searching for free public information click and leave. One ad group spent hundreds of dollars on them for a handful of bookings; only three exact phrasings ever booked.
Every booker was in the US, 35 or older, and booked the same day
Which is why the location and age settings changed, and why a quiet week is real signal rather than lag.
TV screens spent and never booked
$158 on television screens for no booking; they come out in the next change set.
4The page holds: about 4 in 100 visitors book
Steady from September into October, and returning visitors book at twice the rate of first-timers.
The page holds: about 4 in 100 visitors book
Steady from September into October, and returning visitors book at twice the rate of first-timers.
Every ad sends people to one page: what the business is, who it fits and who it does not, the owner’s background, the questions people ask, and the calendar. Since the analytics property began on August 26 it has recorded 4,540 visits from 3,171 people and 191 bookings on that page.
| Measure | Value |
|---|---|
| Visits that end in a booking | 4.2% |
| People who book | 6.0% |
| First-time visitors from ads who book | 4.4% |
| Returning visitors from ads who book | 9.1% |
| Ad clicks that end in a booking (Google Ads count) | 3.6% |
| Average visit | 53 seconds |
When the cost per call rose in October, this is the number I checked first. It had not moved. The page was not what broke; reach was. That is also why the retargeting group for visitors who did not book is the first thing to switch on: they book at more than twice the rate.
5Follow-ups by email and text, inside the client’s CRM
Six automations written in the owner’s voice, built as drafts on October 6, waiting on his approval to publish.
Follow-ups by email and text, inside the client’s CRM
Six automations written in the owner’s voice, built as drafts on October 6, waiting on his approval to publish.
The owner asked that every automation live in his own CRM, not on my server, so that is where they are built. They trigger from the appointment itself, filtered to the discovery calendar so nothing touches his other calendars.
Before the call
Twenty minutes after booking, an email with the agenda and the three objection videos. A day before, an email and a text. Two hours before, a text naming the person who will call. Because most bookings are same-day, the system skips any reminder whose time has already passed.
Cancelled
The reminders stop and an email offers a new time.
After the call, showed
Two hours later, a recap email and entry into a value series, unless the person bought on the call.
After the call, no-show
A text and an email within the hour, then two more emails over five days, with different wording for existing students.
The value series
A run of plain emails on how the business works. The first is written; the rest wait on the owner’s answers about his program.
The student guard
The moment someone books onboarding or their deal closes, they are tagged a student and removed from every sequence above. The client’s own onboarding keeps running.
Nothing has been published, sent or tested on a real contact. Before the owner says publish: the sending address, the texting number and the person named in the messages need his confirmation, a missing mail record on his domain needs adding, and one test contact needs to run the whole path.
6Reporting, and the record of every change
Numbers read from the account itself, a results presentation for the owner, and every change written down with its undo.
Reporting, and the record of every change
Numbers read from the account itself, a results presentation for the owner, and every change written down with its undo.
Every figure in every report comes from Google’s reporting interface, never from a screenshot. The first results report went out after two weeks. The full results presentation on October 19 told the owner what 149 booked calls had cost, where they came from, what I had learned and what I would change next. The November 2 proposal for the second-market campaign gives him the budget paths and the two answers I need.
Every account change since September 17 was checked by Google in validate-only mode, applied, verified by reading the account back, and filed with the change set and its undo line. If any change had hurt, it could be reversed in minutes, and the owner can see every one of them in his own change history.
7Also built: a second market, and what waits
A campaign and a page for people already working in a neighbouring trade, approved by Google and switched off until the owner says go.
Also built: a second market, and what waits
A campaign and a page for people already working in a neighbouring trade, approved by Google and switched off until the owner says go.
- A version of the booking page for that trade, live since October 19, which asks every booker what they do so the owner knows who is on the call.
- A YouTube campaign for that audience, built from the videos the owner already has, with two ads Google has approved. It is paused, costs nothing, and stops on its own after $400 without a booking once it runs.
- Eight video scripts for that market, written vertical-first for phones, with the shot list for recording them on a phone, vertical and wide.
- A cold YouTube campaign for people who have never heard of the owner, built and held until the warm audience is spent.
- The design for sending call outcomes back to Google, so it hunts for buyers rather than bookers, which waits on knowing how a sale is recorded in the client’s CRM.
8What the numbers do not say
I would rather the client trust these figures than be impressed by them.
What the numbers do not say
I would rather the client trust these figures than be impressed by them.
- Nobody knows the show rate or the close rate yet.About 180 booked calls, and no recorded outcomes. I have not claimed a sale, a student or a dollar of revenue anywhere on this page, because none has been measured. Whether this account can profitably spend more is decided by that number, not by the cost per call.
- Two counts of bookings, and they differ.Google Ads counts 180 booked calls (177 since the booking became the primary goal on September 6, plus 3 it recorded before). Analytics counts 191 on the page. Ads counts one per ad click and ignores bookings with no ad behind them; analytics counts every booking event, including a few direct visits and anyone who booked twice. The true figure is between them, and I quote the lower one.
- The cost per call rose when the budget did.$23 in the first week at $39.50 a day, $68 over the $300-a-day stretch. The headline $67 is the average of all of it. That is what reaching the end of a warm audience looks like, and it is why the next step is new audiences rather than more money.
- The campaigns are paused as I write this.The three-month budget the owner set is nearly spent, and the next spend waits on his answer to the November 2 proposal. Nothing on this page is running today.
- The follow-ups have never sent a message.Section 5 describes what they do, not what they have done. They are drafts until the owner approves them.
- One video is flagged.Google limits where the ads can show because one of the seven videos reads as an exaggerated claim. It needs replacing before cold prospecting starts.
- Search looks worse than it is.Search bookings before September 6 were not in the Conversions column, and search spent most of its money on information searches that I only partly blocked. The fix is written; it is not applied.
- The first three weeks are not comparable.Search ran at $33 a day while the tracking was being proven, so the 2-call weeks in the chart are a deliberate small start, not a failure of search.
9What comes next
The steps that start measuring what a booked call is worth, and reach people the account has not reached.
What comes next
The steps that start measuring what a booked call is worth, and reach people the account has not reached.
Get the call outcomes
Showed, no-show, bought, for every call booked so far. Even a rough count changes what the account should spend.
Publish the follow-ups
The owner’s confirmation on the sender, the number and the person named, one test contact through the whole path, then live, to raise the show rate.
Send outcomes back to Google
Showed, no-show and bought marked in the CRM and sent to Google Ads with the sale value, so bidding hunts for buyers. Needs how a sale is recorded in the client’s CRM.
Fresh audiences on video
Switch on the visitor retargeting group, add the 360-day viewer list, take ads off TV screens, and run the second-market campaign for 21 days.
Replace the flagged video and record for phones
Each new video shot once vertical and once wide, so Google stops making its own cuts and the limited-approval flag clears.
Stop paying for information searches
Keep the three exact phrasings that have booked; block the rest; move the money to business-intent searches.
Track every step of the booking
Opened the calendar, picked a date, picked a time, entered details, so the page can be improved where people actually drop.
10How I measured
Where every number on this page comes from.
How I measured
Where every number on this page comes from.
- Google Ads: the client’s account, read through Google’s reporting interface on November 3, 2026, for August 25 to November 2, 2026. Booked calls are the booked-call conversion: the Conversions column (177) plus the 3 it recorded before it became the primary goal on September 6. “All conversions” is never used, because since September 17 it also counts YouTube follow-on views. Weekly figures are Monday to Sunday; the week of October 26 ends November 1.
- Google Analytics: the booking page’s own property, same dates, bookings as the key event, on the live address only; visits from my test copies are left out. Returning and first-time rates are paid-search sessions.
- The video budget table: the warm YouTube campaign’s own daily rows, grouped by the dates each budget was set, which are in the account’s change history.
- The state of the account in August 2026: my audit of the conversion goals on August 21, 2026 and the account’s own history, which holds the previous agency’s campaigns from November 2023 to October 2024. Their spend and opt-in figures are given here in round terms.
- The booking system, the leads list and the alert: from the build and deployment records of September 22, 23 and 27, 2026, each proven with a real booking on the live page and cleaned up afterwards.
- The follow-ups: from the build review of October 6, 2026, when the six workflows were built as drafts in the client’s CRM with nothing published.
- Live checks: on November 3, 2026 the booking page and the second-market page both answered, the tag container is on the page, and my booking form is the one in place.
Why it matters
An ad account’s job is to buy calls. The system’s job is to make sure every one of them is counted, lands in a record the business can see, and tells Google what to look for next. Before, the owner paid for ads and could not say what they bought. Now he knows what every booked call cost, where it came from, and which video answered the doubt that stopped the person booking.
That is the point of all of it: the owner gets to work on the business, not only in it.