A windows and doors company was getting cheaper leads, and fewer of them were turning into sales.
The Client and the Problem
Our client sells custom windows, doors and exterior projects. Every sale starts with an in-home consultation, and each closed deal is worth a lot, so one good lead matters more than ten cheap ones.
To grow beyond Google Search, we tested Google Performance Max, which runs ads across Search, YouTube, Gmail, Display and Discover at once. On paper it worked: leads cost about $599 each, 26% less than the $809 average on Search (a 90-day average). In the sales pipeline it did not:
- Many inquiries came from outside the client’s service area
- Few form fills turned into booked in-home consultations
- The deals that did close were smaller than the ones Search brought in
The campaigns were doing exactly what they were told: find the cheapest possible form fill. Nobody had told them what a sale looked like.
1. Send Real Sales Data Back to Google
We connected the client’s CRM to Google Ads and imported what happens after the form: issued appointments, closed deals and the actual value of each deal. Google could now see which clicks became revenue, not only which ones became form fills.
Google Ads now sees appointments and revenue, not just form fills
2. Rebuild Performance Max Around Appointments
We relaunched the campaigns and set them to bid toward issued appointments and deal value instead of form submissions and call clicks. The bidding stopped chasing the cheapest lead and started chasing the homeowner most likely to buy.
Out-of-area and invalid inquiries dropped sharply
3. Let Every Channel Work From the Same Signal
With accurate conversion data behind it, Performance Max could find ready-to-buy homeowners on every one of those channels, all learning from the same definition of a good lead.
Qualified leads from every Google channel, not just Search
The Results
Cost per lead and return on ad spend by phase. Each Performance Max test is a 30-day window; the Search figure is a 90-day average:
| Phase | Cost per lead | Return on ad spend | Lead quality |
|---|---|---|---|
| Google Search baseline (90-day average) | $809 | 2.5x | Standard |
| First Performance Max test, optimized for form fills | About $599 | 1.05x | Low quality, often out of area |
| Relaunched Performance Max, optimized for appointments and revenue | About $750 | 3.08x | Highly qualified |
What changed once real sales data was in the account:
| Before | After | |
|---|---|---|
| What the bidding aimed for | Form fills and ad calls | Issued appointments and revenue |
| Where leads came from | Often outside the service area | Inside the service area |
| Average deal value | Below Search | Higher |
Key Takeaway
For a business that sells big-ticket projects, a cheap lead is not the goal; a sale is. The relaunch paid about 25% more per lead than the first test ($750 against $599) and earned nearly three times the return, because Google was finally bidding on the leads that turn into sales:
- 3.08x return on ad spend, up from 1.05x on the first test and ahead of 2.5x on Search
- Cost per lead still below Search: about $750 against $809
- Higher average deal value and far fewer out-of-area inquiries
More on how we work as a home services marketing agency.
Are your ads optimizing for leads, or for sales?