In brief: Ad platforms learn from the conversion signals you give them. If a campaign is optimising towards cheap form fills, it can get very good at finding cheap form fills without finding many buyers. I separate demand capture from demand creation, give each campaign a clear job, and feed qualified CRM outcomes back to the platforms where there’s enough signal to use them.
The quickest thing I check in a paid account is the conversion goals.
Not the ads. Not the keywords. The thing the campaign has actually been told counts as success.
I’ve opened accounts where a demo request, newsletter signup, ebook download and pricing-page visit were all sitting in the same optimisation setup. The campaigns looked efficient. Leads were cheap.
Sales didn’t think they were efficient.
That’s not really an ad problem. The bidder is working from the signals it has been given. If several actions count towards the objective, the easier actions can end up carrying much more of the learning than the one the business actually cares about.
So before I change creative or budget, I decide what job each campaign is doing and what evidence would tell me it has done it.
Demand capture and demand creation have different jobs
I use the distinction between demand capture and demand creation because it stops very different campaigns being judged on the same number.
The 95:5 heuristic from John Dawes is useful here.1 The exact split will vary by market, but the underlying point is that most potential buyers aren’t actively shopping at any given moment.
Demand capture works on the people who are.
That includes things like:
- brand search
- competitor search
- category and problem search
- some forms of retargeting
The buyer is already showing some evidence that the problem or category is active.
Demand creation works earlier.
A cold LinkedIn campaign aimed at the right accounts may be introducing a problem, a point of view or a category entry point to somebody who has no intention of booking a demo this afternoon.
I don’t expect those two campaigns to behave the same way.
For capture, I can usually get quite close to pipeline and judge the campaign on qualified outcomes.
For creation, I’m looking at whether I reached the intended accounts, whether people engaged with the material, whether branded and direct demand changes over time, and eventually whether the cohorts exposed to the work behave differently when they do enter market.
Trying to force both through cost per lead usually produces bad decisions.
Every campaign gets a job before it gets a budget
I normally map the campaigns before building them.
A simple version looks like this:
| Campaign | Audience | Job | Offer | Main success signal | What I watch |
|---|---|---|---|---|---|
| Brand search | Searching the company name | Capture | Demo / contact | Qualified demo or closest viable downstream event | SQL rate, impression share |
| Competitor search | Comparing alternatives | Capture | Comparison page → demo | Qualified demo | Cost per SQL, opportunity creation |
| Category / problem search | Searching the problem | Capture | Problem-led page → demo or trial | Demo / trial, then qualified stages | Cost per SQL, MQL→SQL |
| Retargeting | Previous site/content audiences | Capture / assist | Case study, proof, demo | Demo or qualified downstream event | Qualified pipeline, frequency |
| Cold ICP paid social | Target accounts not necessarily in market | Creation | Useful ungated content | Usually not a demo conversion | Reach in ICP, engagement, downstream trend |
The messaging comes from the same voice-of-customer work I use for positioning.
If buyers repeatedly describe the trigger as “we have a board meeting and nobody trusts the pipeline number,” that can become a search angle, an ad and a landing page.
I don’t need a brainstorming session to invent “revenue intelligence for modern teams.”
Be explicit about what the bidder should learn from
In Google Ads, conversion actions can be primary or secondary, and campaigns can use campaign-specific goals instead of the account defaults.23
Primary actions within the goals used by the campaign are eligible for bidding. Secondary actions generally remain available for observation without directly driving bidding, with some exceptions such as custom goals.3
That distinction matters.
Suppose a search campaign produces:
- 12 demo requests
- 40 newsletter signups
- 80 PDF downloads
If I intend the campaign to acquire demos, I don’t want the bidder treating all 132 actions as equivalent evidence of success.
The implementation differs on LinkedIn and Meta, but I apply the same operating rule: know which event the delivery system is trying to increase.
LinkedIn, for example, lets conversions be associated with particular ad sets and supports website, Conversions API, CRM and CSV sources.4
The exact settings screen is less important than being able to answer one question:
What behaviour am I currently paying the algorithm to find more of?
If I can’t answer that quickly, I fix the measurement setup before interpreting campaign performance.
The best conversion event is not always the deepest one
In a demo-led SaaS business, I’d rather optimise towards an SQL than a raw form fill.
But only if there are enough SQLs for the platform to learn anything useful.
If the account produces six SQLs a month, making sql_created the only bidding signal may leave the campaign with very little feedback.
So I work backwards.
What is the furthest downstream event that:
- has a meaningful relationship with revenue, and
- occurs often enough to give the campaign useful signal?
Early on, that might still be demo_request.
As volume improves and the CRM feedback loop becomes reliable, I can move closer to qualified lead, SQL, opportunity or value.
I still import the deeper events while I’m doing that. They tell me whether the upstream conversion I’m buying is actually producing anything worthwhile.
The numbers determine how far down the funnel I can sensibly go.
The offline conversion loop
For a B2B campaign, the interesting outcome often happens well after the browser session.
Somebody clicks an ad today, requests a demo next week, becomes an SQL the week after that and turns into an opportunity later.
I want those stages connected.
The basic loop is:
- Click. The advertising platform supplies whatever click or attribution identifiers are available.
- Capture. The landing page preserves the useful campaign parameters and identifiers, subject to the site’s consent setup.
- Form. Those values travel into hidden fields when the visitor submits.
- CRM. The source and identifier data persist on the lead/contact and, where the CRM model supports it, through the opportunity.
- Lifecycle. Marketing and sales move the record through the stages defined in the lifecycle system.
- Return signal. Relevant qualified outcomes are sent back to the ad platforms through their supported integrations.
- Value. Where there’s enough data to make it useful, I attach values that better reflect the relative importance of those outcomes.
The form plumbing is the bit I find missing most often.
The ad account contains a GCLID. The CRM contains an SQL. There’s simply nothing connecting the two.
I cover the first-party form and hidden-field implementation in the marketing engineering post.
Google’s lead conversion setup has changed
Google now recommends enhanced conversions for leads for advertisers setting up this kind of offline measurement.5
It supplements offline conversion data with hashed first-party information such as email or phone data collected from the lead form, and Google still recommends including GCLIDs with uploaded events where possible.5
The plumbing around the API is also changing.
From 15 June 2026, Google made the Data Manager API its primary API for offline conversion imports. New adopters using developer tokens without qualifying previous offline-conversion activity are blocked from beginning uploads through the legacy Google Ads API path, while existing adopters have transitional access as they migrate.6
Google also combined the enhanced-conversions-for-web and enhanced-conversions-for-leads settings so that, from April 2026, user-provided data can arrive through website tags, Data Manager and API connections under the same broader setup.7
The practical thing I’d check in an older account is how its offline conversions are actually arriving.
If somebody wrote a custom Google Ads API upload integration years ago, I want to know whether it’s on a supported path rather than finding out after qualified-lead imports stop arriving.
Values need to mean something
It’s tempting to solve the whole problem by assigning:
- MQL = £50
- SQL = £400
- Opportunity = £2,000
and switching on value-based bidding.
I’ll use rough values when that’s the best information available, but I want to know where they came from.
If 20% of SQLs become opportunities and an average opportunity is worth £10,000 in expected value, there’s at least some logic behind the value assigned to an SQL.
If somebody typed £400 into the setup because it looked suitably larger than £50, the bidding system is learning from invented economics.
As the data improves, I’d rather use stage conversion rates, expected pipeline value or actual revenue.
The value doesn’t have to be perfect.
It does need to preserve the rough ordering of which outcomes matter more.
A few things I check in every account
Once the campaign objectives are clear, most of the remaining work is signal hygiene.
Browser and server events are deduplicated. If the same conversion is sent from the browser and server, both channels need a shared identifier according to the platform’s implementation. Otherwise one person can become two conversions.
The platforms listen to the same underlying site event.
I’d rather have one dataLayer event for a successful demo request and let the relevant tags consume it than have separate bits of JavaScript deciding independently whether the demo happened.
That’s how you get Google reporting 60 submissions while the CRM contains 41.
Consent is actually tested. I test granted and denied states rather than assuming the consent banner is communicating with the tags correctly.
Automatic events are reviewed rather than trusted by default. Enhanced measurement and automatically detected events can be useful. I still want to know what’s being collected and whether anybody has accidentally promoted one of those events into an optimisation target.
View-through conversions are kept in context. Paid-social platforms can attribute conversions after an impression without a click. That’s useful information, but I don’t mix it blindly with click-through conversions and then call the total incremental pipeline.
The analytics and attribution post covers why I keep the platform view separate from the CRM scoreboard.
Cheap leads can be surprisingly expensive
The failure mode I care about isn’t high CPL.
It’s CPL falling while the quality underneath it falls faster.
Three things commonly create it.
Gated content becomes the goal
An ebook download tells me somebody wanted an ebook.
That may be useful for nurture. It’s not the same thing as somebody entering a buying process.
I keep content conversions available for reporting and audience building where useful. I don’t make them the primary evidence that a pipeline campaign is working.
Several actions are treated as equivalent
If the campaign can satisfy its objective with an easy conversion or a hard conversion, I shouldn’t be surprised when a lot of the easier one arrives.
This is why I care so much about the conversion setup before I care about creative optimisation.
The conversion itself is badly measured
A thank-you pageview is still one of the most common examples.
Somebody refreshes the page and becomes another conversion. Someone bookmarks it and comes back next week. A shared URL gets opened.
The campaign now has bad training data.
The event-based version lives in the form-tracking article.
What I actually use as the scoreboard
For capture campaigns, I want cost per qualified stage and eventually customer acquisition cost.
I do still look at CPL. It can tell me something useful about what’s changing further up the funnel.
I just don’t stop there.
If Campaign A produces leads at £80 and 30% become SQLs, while Campaign B produces leads at £40 and 5% become SQLs, the cheap campaign isn’t really cheaper for the outcome I care about.
The CRM makes that visible.
I’m wary of generic public CPL and CAC benchmarks for the same reason. Lead definitions, company size, deal size, sales motion and attribution method vary too much for a single number to tell me whether my own account is healthy.
The benchmark I care about first is the company’s own trend:
- cost per SQL
- cost per opportunity
- pipeline per pound spent
- CAC where enough customers have closed
- conversion between the stages that explain why those numbers moved
That gives me something I can actually improve.
Reading the platform without believing everything it says
Google, LinkedIn and Meta can all report on the role their own ads played in conversions.
They don’t have a neutral view of the entire buying journey.
The CRM has a different problem. It sees the source information that survived into the record, but it doesn’t automatically know about every ad impression, podcast, recommendation or article that influenced the buyer.
So I use the systems for different jobs.
Platform reporting helps me steer activity inside the platform.
The CRM tells me whether the people entering the funnel became qualified pipeline and revenue.
The attribution setup helps connect the two without pretending either is a complete account of why somebody bought.
That’s normally enough to make a decision.
If a campaign is producing more qualified pipeline at an acceptable cost, I can give it more room.
If the form fills look excellent and nothing downstream moves, I investigate before celebrating the CPL.
Where I start
If I inherit an account, I usually start with five things:
- Which conversion goals are the campaigns using?
- Which actions are actually eligible to influence bidding?
- What does the CRM say happened to the people behind those conversions?
- Are the click IDs and campaign fields making it through the forms?
- Are later-stage outcomes coming back to the advertising platforms?
That tells me much more than another pass through the ad copy.
The creative still matters. So does targeting. So does the offer.
But I want the machine learning from the right outcome before I ask it to find more people.
I’m engaged with client work just now, so none of this is a pitch. But if you’re building growth-stage B2B SaaS and want this kind of work when capacity opens, tell me what you’re building. I read every note.
Sources
-
Dawes, J., “Advertising Effectiveness and the 95-5 Rule,” LinkedIn B2B Institute / Ehrenberg-Bass Institute, 2021. business.linkedin.com (opens in new tab) ↩
-
Google Ads Help, “About campaign-specific conversion goals.” support.google.com (opens in new tab) ↩
-
Google Ads Help, “About primary and secondary conversion actions.” support.google.com (opens in new tab) ↩ ↩2
-
LinkedIn Marketing Solutions Help, “Create a conversion in Campaign Manager.” linkedin.com (opens in new tab) ↩
-
Google Ads Help, “About enhanced conversions for leads.” support.google.com (opens in new tab) ↩ ↩2
-
Google Ads Developer Blog, “Changes to Offline Click Conversion Import Support in the Google Ads API,” 15 May 2026. ads-developers.googleblog.com (opens in new tab) ↩
-
Google Ads Help, “Updates to your enhanced conversions settings.” support.google.com (opens in new tab) ↩