Case study 04
A junk removal and dumpster rental company in the Greater Toronto Area. In April, four different systems reported how many leads they’d received. The answers ranged from 15 to 207. Nobody could say which was right.
Part one
Not the rankings. The rankings were fine. Nobody knew what they were worth.
The SEO on this account was working. What wasn't working was anyone's ability to prove it, because every system in the business gave a different answer to the same question: how many leads came in last month?
This matters more than it sounds. If you can’t count leads, you can’t tell which service line is worth investing in, you can’t judge whether a campaign paid for itself, and you can’t tell an agency whether they’re earning their fee. The client was being asked to keep spending on faith.
I should be straight about this. At the time, my analytics knowledge was decent but not deep — I could read GA4, I hadn't built in it. This account needed someone who could take apart a tag manager container and say exactly why two systems disagreed.
So I learned it properly, on the account, while the account was running. Some of what follows is me working it out. I've left that in because the working out is the part that mattered.
Part two
Establish a baseline before escalating to anyone.
The tempting move was to go to the booking platform's support team and to the client and start asking why their numbers were wrong. I held that back. If you escalate before you understand the system, you spend your credibility on a question you can't defend.
So the first decision was simply an ordering one: establish a crystal-clear measurement baseline first, then escalate. That took one workshop and turned up three separate causes.
The site had two Google Tag Manager containers. One was legacy and receiving no data at all. The other was live but flagged for container quality issues and had tags missing outright. Depending on which one you looked at, you’d draw opposite conclusions about what was being tracked.
GA4’s enhanced measurement captures form start and form submit natively in the data stream. They never appear as tag manager triggers. So anyone auditing GTM alone would conclude those events didn’t exist, while GA4 quietly counted them.
That single fact explains a large part of the gap between the 207 and everything below it. GA4 was counting people who began filling in a form.
This was the real one. The booking platform runs its checkout on a subdomain and sends customers to a thank-you page when they finish. The website’s Contact Us form sent people to the same thank-you page. It had been that way since 2019.
I filled in the contact form myself and followed where it went, which is how the shared thank-you page got confirmed rather than assumed. I did not complete a paid booking to test the other flow, because it would have meant putting a real transaction through the client’s system to answer a question their platform provider could answer for free. We asked them instead.
And I brought in someone who knew GA4 better than I did to validate the trigger configuration before we trusted it. Knowing the edge of your own competence is cheaper than discovering it in a client report three months later.
Part three
Then I made my own headline number smaller.
The immediate fix was a decision about definitions, not code. Treat a visit to the thank-you page as the event, build a proper tag manager trigger for it, and confirm with the booking platform exactly which submissions route there. One agreed definition, one source of truth.
Alongside it, the ordinary structural work: 301 redirect chains cleaned up, 404s resolved, legacy location URLs pointed at single live destinations, and a service phrase that had been repeated across the site turned into a proper internal link to the service area page.
Once tracking worked, the May report showed 130 leads from organic, up 622% year over year. Good number. Except it counted form starts alongside completed actions, and a form start is somebody who typed their name and left.
So I narrowed it. By July the report counted two things only: completed bookings and phone number clicks. Real intent, nothing else.
Toronto · one month of movement
| Query | 1 Apr | 30 Apr | Change |
|---|---|---|---|
| dumpster bin rental toronto | 8 | 1 | +7 |
| industrial waste bin rentals | 8 | 1 | +7 |
| junk dumpster rental | 2 | 1 | +1 |
| construction trash containers for rent | 19 | 3 | +16 |
| dumpster rental near me | 10 | 2 | +8 |
| cheap dumpster rental near me | 11 | 3 | +8 |
| junk bin rental toronto | 7 | 3 | +4 |
By July they were holding position two or three on nearly every commercial dumpster term in the market, including trash can rental at 1,900 searches a month, dumpster rental near me at 2,400 and garbage rentals at 2,400. The keyword footprint had also spread well past the three target cities into Burlington, Milton, Richmond Hill, Scarborough and Niagara without those being targeted.
Nobody is going to tell you your measurement is broken. The client had four numbers and had quietly accepted that as normal. It took someone asking the boring question — which of these is right, and why — for anyone to look.
And I'd rather learn something in public than deliver around a gap. I didn't have GA4 at the depth this account needed. Saying that, learning it, and bringing in a second pair of eyes to check my work cost me nothing. Guessing would have cost the client six more months of numbers they couldn't use.
Sources. Figures from the client's monthly search performance reports, GA4, SEMrush and Google Business Profile, plus recorded working sessions. Nothing modelled, nothing estimated.
Client name, personnel and software vendors withheld. Happy to talk through the reasoning in more detail.