How we tripled qualified MQLs for a Series B product analytics company.
6-month engagement (ongoing)·Google Ads + LinkedIn Ads
A Series B product analytics company was running $42K/month on Google Ads through a generalist agency and getting stable-looking numbers that didn’t tie to pipeline. We rebuilt their measurement, restructured the account around buyer intent, and added LinkedIn as a downstream retargeting layer. In six months, qualified MQLs tripled, cost per MQL dropped 34%, and pipeline created grew 3.2x.
+220%
Qualified MQLs
in 6 months
−34%
Cost per MQL
from $493 to $325
3.2x
Pipeline lift
$367K → $1.17M / mo
They moved faster on our paid program in three weeks than our previous agency did in a year.
What we walked into
The previous agency had been running the account for 14 months. The dashboard told a clean story: lead volume was stable, CPA was acceptable, brand search was strong. The CRM told a different story.
Five findings from the first-week audit:
Conversion events were firing on form views, not form submits.
Roughly 30% of "MQLs" in Google Ads were people who'd loaded the demo page and bounced. The previous agency had been optimizing toward a metric that didn't tie to anything real.
No offline conversion import from HubSpot.
Google had no idea which leads turned into SQLs, opportunities, or closed-won deals. Smart Bidding was flying blind on lead quality.
One campaign called "Search — All."
A single broad-match campaign mixed brand defense, competitor terms, category keywords, and problem-aware queries. The sales team had been flagging roughly 72% of inbound leads as unqualified, and the campaign had no structural way to separate the qualified intent from the noise.
Every ad pointed to the homepage.
No campaign-specific landing pages. Message-match between ad copy and landing page was effectively zero.
LinkedIn was a separate planet.
Run by a different person, with no shared retargeting audiences, no shared creative system, and no shared view of the customer journey. Google Ads visitors who didn't convert first-touch were never seen again.
The previous agency wasn’t lying about their numbers. They were measuring the wrong things.
What we did
Tracking has to be honest before scaling is responsible.
Rebuild measurement before touching spend
Tracking has to be honest before scaling is responsible. The first three weeks of the engagement were diagnostic and infrastructural, not media.
- Migrated to server-side GTM via Stape for first-party tracking that survives third-party cookie deprecation.
- Implemented HubSpot Offline Conversion Importsso Google’s Smart Bidding learns from SQL-stage and closed-won data, not just form fills.
- Added Enhanced Conversions for Leads (hashed email and phone passed back to Google) to recover attribution lost to iOS and Safari ITP.
- Rebuilt the GA4 event model around five conversion actions, each weighted by pipeline stage (Demo Request > Free Trial Start > Content Download > Pricing Page View > Email Capture).
Restructure around intent buckets
Instead of one campaign trying to do everything, we split the account into four intent buckets with separate bid strategies, landing pages, and creative.
| Bucket | Examples | Bid Strategy | Landing Page | % Spend |
|---|---|---|---|---|
| Brand defense | “[brand]”, “[brand] login”, “[brand] pricing” | Max Conversions, capped CPC | /demo (branded) | 8% |
| Competitor conquest | “[competitor] alternative”, “[competitor] vs [competitor]”, “[competitor] pricing” | tCPA $400 | /compare/[competitor] | 22% |
| High-intent category | “product analytics platform”, “user behavior tracking software” | tCPA $450 | /platform (intent-matched) | 48% |
| Problem-aware | “how to reduce feature churn”, “measure user activation rate” | Max Conversions (learning) | /resources/[topic] | 22% |
- Built exhaustive negative keyword lists shared across campaigns so no bucket bled into another.
- Wrote intent-matched RSAs per ad group — not one generic ad copy recycled everywhere.
- Moved high-intent category from broad to phrase + exact match only, layering broad match only in the problem-aware bucket where Google needed room to explore.
Brand campaigns were segmented so they could not cannibalize organic traffic. They fire only when competitors are bidding on the brand or when query intent suggests research-stage exploration.
LinkedIn as a downstream layer, not a prospecting channel
Most B2B teams treat LinkedIn as a top-of-funnel prospecting channel. We used it as a mid-funnel retargeting layer for visitors who’d already shown intent on Google.
- Built matched audiences from Google Ads converters and high-intent page visitors, synced into LinkedIn Campaign Manager.
- Ran social proof creative (customer logos, outcome stats, analyst quotes) — not product feature ads.
- Layered company-size and title filters so retargeting only hit decision-makers at ICP-fit accounts, not every visitor.
- Capped LinkedIn spend at 15% of total paid budget — enough to close the gap, not enough to drag blended CPA up.
LinkedIn never carried the prospecting load. Its job was closing the gap on Google-sourced visitors who needed more touches.
Weekly test cadence
Structure and measurement are table stakes. The ongoing lift comes from disciplined testing at a fixed cadence.
- Weekly:
- New ad variants on top-spending ad groups. Hook tests, value-prop tests, CTA tests. Always one variable at a time.
- Biweekly:
- Landing page variant tests — headline, social proof placement, form length. Unbounce for speed; no dev dependency.
- Monthly:
- Audience and bid-strategy reviews. Move budget toward buckets that are generating pipeline, not just MQLs.
- Quarterly:
- Full account audit against CRM data. Close-rate analysis by campaign, keyword theme, and audience. Rebuild underperformers from scratch.
Winners scaled the week they were called. Losers killed within 7 days. No “let it run another week to be sure” — that’s how budget bleeds.
The math
| Metric | Baseline | Month 6 | Δ |
|---|---|---|---|
| Google Ads spend | $42K/mo | $88K/mo | +110% |
| MQLs | 85/mo | 272/mo | +220% |
| Cost per MQL | $493 | $325 | −34% |
| MQL → SQL rate | 18% | 22% | +4 pts |
| SQLs | 15/mo | 60/mo | +300% |
| Average ACV | ~$24K | ~$19.5K | −19% |
| Pipeline created | $367K/mo | $1.17M/mo | 3.2x |
On the ACV compression: This is honest. Better intent targeting brought in a wider band of qualified buyers, including mid-market segments slightly below the original ICP ceiling. Net pipeline is up 3.2x even after that compression, and the company has since chosen to keep targeting the broader segment.
What we’d flag to anyone reading this
This worked because three things were already true. They aren’t always.
The PLG funnel was already working.
Demo requests didn't go into a black hole. SDRs followed up within 90 minutes. If the sales motion downstream of paid is broken, no amount of restructuring upstream fixes it. We've been honest about that in pitches.
There was existing category search demand.
Google Ads channels demand; it doesn't manufacture it. This playbook works for categories where buyers are searching. It does not work for net-new categories where nobody is searching yet.
The client agreed to import CRM data.
Without HubSpot → Google offline conversion sync, Smart Bidding can't learn what a good lead looks like. On accounts where the client refuses or delays this, we typically see 30–40% of the lift we delivered here, and we say so upfront.
Engagement details
- Team on the account
- 1 strategist, 1 paid search specialist, 1 paid social specialist, 0.5 creative lead
- Tool stack
- Google Ads, LinkedIn Campaign Manager, HubSpot, Stape (server-side GTM), Unbounce, GA4, Looker Studio
- Reporting cadence
- Weekly performance summary, monthly executive review, quarterly QBR
- Contract structure
- Month-to-month after first 90 days
Ready for the same teardown on your account?
We’ll audit your paid program and show you the leaks before you commit to anything.