B2B Demand Generation vs Lead Generation: Why Cheap MQLs Starve Your Sales Team
Why low-cost MQLs rarely become closed revenue, and how to structure B2B Google Ads campaigns around buyer demand rather than form fills.
In US local services (HVAC, plumbing, pest control), the buying decision takes minutes or hours. A pipe bursts, or the AC dies at 40°C, and people call whoever they find first. The conversion isn't a basket or a form. It's a phone call that the dispatcher turns into a booked job.
Build that kind of account with e-commerce or lead-gen habits and it burns money fast. When several hundred thousand dollars go out each month, every wrong setting comes straight out of real revenue. These are the six areas where I work differently.
At first glance the three models look alike. Their measurement doesn't:
The junk is different too. E-commerce deals with returns, lead gen with fake email addresses. Here it's wrong numbers, misdials, DIY questions and renters who can't decide for the owner.
The Google Ads "Calls from ads" conversion counts calls above a minimum length you set (Google says the default is 60 seconds). That's not enough, for two reasons. Length alone doesn't make a call qualified, and this conversion doesn't see calls to the number shown on your website. So this is how I set it up:
Only the qualified call or the booked job can be a primary conversion. Every other call is secondary. Smart Bidding chases whatever you mark as primary. If every call counts, it'll bring you the cheapest calls. I've written about why lead count misleads, and that's doubly true here.
The most common mistake is putting target CPA or target ROAS on a cold or badly built account from day one. The system has nothing to learn from, so it optimises on whatever it finds. I work in stages:
Treat the timeline as a direction. A high-volume account moves faster, a small one slower. The amount of data decides when to switch.
I raise budgets in steps, by no more than 15-20% a week. That way I can see what each step brought in, and if the cost per qualified call runs away, I know which increase did it. I've written a separate piece on what happens when the system bids on bad data.
E-commerce and B2B often lean on research searches, because there the purchase takes days or months. Here the decision window shrinks to hours, so I split keywords into four tiers:
The negative lists are live on launch day, in layers:
In e-commerce the trend is to consolidate: broad match plus Performance Max. In a direct-response account, separation protects the money. I start with five campaign pillars. This is my starting budget split, and I adjust it from the account's own data:
The message has to match the search word for word. If someone types "emergency bed bug exterminator", they should see exactly that in the ad headline, on the call button and above the fold on the landing page. Exact match also catches close variants these days, so I build single-theme ad groups (STAGs) rather than one ad group per keyword.
New or scaling accounts run exact and phrase match only. I allow broad match only in a mature account, above 50 conversions a month, in a separate discovery campaign with its own budget and the full negative list.
E-commerce is national, and B2B SaaS has no borders. For a local service business, what counts is where the technician can drive to. So no loose metro or state-wide targeting, only ZIP code lists or a precise radius.
ZIP codes aren't equal. The average job value in one area differs from the next. I adjust bids by ZIP code based on job values coming back from the CRM. In the US, Google also allows household-income targeting, so I push for a higher impression share in the premium areas.
Demand isn't flat. AC repair peaks in summer, heating in autumn and winter, pest control from spring to autumn. I raise the budget 2-3 weeks before the season starts.
I don't use the Google Ads seasonality adjustment for that. Google says it's meant for short events of 1-7 days, such as a sale or a forecast heatwave, and that it works less well over periods longer than 14 days. Smart Bidding already knows the recurring season from its own data.
I don't report cost per click to a big spender. The report has four levels:
Direct response PPC is about revenue, and that takes discipline: call tracking, qualifying calls by length and CRM outcome, bidding that matures with the data, budget allocated by ZIP code and a message that matches the search. If any one of them is missing, the account can look fine in the report while the dispatcher's calendar stays empty.
If your account runs on calls and your report doesn't lead with booked jobs, let's look at it together. That's what my performance marketing service is about. Send me a short brief. The first conversation is free.
The first call is free, whatever the service. Book 60 minutes in my calendar, and the Google Meet link gets added automatically.
More posts
Why low-cost MQLs rarely become closed revenue, and how to structure B2B Google Ads campaigns around buyer demand rather than form fills.
How to design high-trust B2B landing pages that qualify serious decision-makers and filter out non-buyers without destroying your conversion rate.
How venture-backed and bootstrapped B2B SaaS companies scale paid search pipeline profitably while keeping customer payback periods under twelve months.
Free first call
We'll figure it out. Book a free 60-minute meeting in my calendar for any digital question or challenge, and we'll find the right way forward together.
Can I use cookies?
I'd like to measure what works on the site and in my ads. Everything works without them too, I just can't see where you came from. What I store