Skip to main content

Analytigrow

US residential cleaning company

Five years of fixing a cleaning company's tracking, one booking flow at a time

Platform

WordPress booking system plus Google Ads

Work

GA4, GTM, server-side via Stape, Looker Studio

Engagement

Ongoing since 2021

Booking flow from form to confirmation callback, dataLayer push with booking ID and Google Ads booking conversion

The situation

The company runs residential cleaning across a US metro area and gets most of its new customers through Google Ads. When I started, Google Ads was reporting conversions that nobody in the business could tie to actual bookings. The owner was spending on campaigns because the numbers looked fine, not because the jobs were coming in.

GA4 had been set up by the previous web developer. Ecommerce reports were empty. The booking tool sat in an iframe and the thank-you page was the same URL as the form page with a query string.

What I found

›

The Google Ads conversion was a page view on the booking form, so every visitor who opened the form was counted as a lead whether they booked or not.

›

The quote form sent four separate events on a single submit, one from the form plugin, one from a GTM trigger, and two from a legacy tag in the theme header.

›

No transaction or booking ID was passed anywhere, so there was no way to match a GA4 conversion to a job in the CRM.

›

The site had no consent handling at all, which was fine for its US audience but needed a note for the future.

What I changed

01

Built a dataLayer push from the booking tool’s confirmation callback, carrying booking ID, service type, estimated value and zip code.

02

Replaced the Google Ads page-view conversion with a dedicated booking conversion fired from that push, with the booking ID as the transaction ID.

03

Stripped the legacy tags from the theme and consolidated the form tracking to one GTM event.

04

Two years in, moved the whole setup to server-side GTM on Stape when the ad blocker share on their audience crossed 20%.

05

Set up a Looker Studio report the owner reads monthly, pulling GA4, Google Ads and the booking export side by side.

What the numbers looked like after

Cost per booking

down by roughly a third over the following quarter

Conversion match

Google Ads bookings within 5% of the CRM, month on month

Recovered events

about 22% more bookings visible to Google Ads after the server-side move

Reporting

one monthly report instead of three dashboards nobody opened

Before: one quote form submit producing four events and a page-view conversion
After: one booking conversion, Google Ads within 5% of the CRM and about 22% more bookings visible

[Client quote placeholder. The owner has agreed to provide one; it will go here with name and role.]

Find out what's actually broken.

A tracking audit tells you exactly which events are wrong, why, and what it takes to fix them. No pitch deck, just the findings.