90-day B2B SaaS case study: +18% incremental lead volume on the total account after Microsoft Ads addition, Microsoft ROAS at 280% at D90 vs Google Ads at 320% on the same ICP segment, strong incremental contribution on LinkedIn targeting (2025-2026 Google Ads data, anonymized data). But above all, 8 reproducible lessons that any mid-market B2B SaaS can apply.
This study documents the addition of Microsoft Ads on the account of an anonymized US B2B SaaS SMB — let's call it "mid-market HRIS publisher" — with $4.4M ARR, a 30-person team, $9,200 average ACV/year, and an ICP centered on IT directors / HR directors at 200-2,000 employee mid-market enterprises. At D0, the client was on a Google Ads scaling plateau after 18 months of growth — classic situation on this profile. All figures presented are factual and smoothed for anonymization (variations of ±5% factor to prevent re-identification of the real client). For the Microsoft Ads B2B SaaS framework strategy, see our Microsoft Ads B2B SaaS strategy guide. To score the health of your acquisition (above 3 = healthy SaaS, below 1 = unprofitable), our LTV:CAC calculator returns the ratio + interpretation.
The context: mature Google Ads account, scaling plateau
The client (anonymized) is a US B2B SaaS publisher specialized in HR management (simplified HRIS) for mid-market enterprises, founded in 2018, with $4.4M ARR by end of 2025 and an 8-person sales team (4 SDRs, 3 AEs, 1 Sales Director). The ICP is strictly defined: HR Directors, CFOs or CIOs at 200-2,000 employee enterprises, mainly tertiary-services sectors (excluding retail and heavy industry). The average annual ticket (ACV) is $9,200, with a 24-month LTV around $20,500 (annual churn 12%).
Google Ads account status at D0:
- Monthly Google Ads budget: $19,800 for 12 months.
- Mix: 50% Search non-brand, 15% Search brand, 25% PMax with Customer Match, 10% Display retargeting.
- Monthly deal conversions: 32 to 38 (median 35).
- Average deal CAC: $2,030.
- LTV:CAC: 10.3 (excellent, signal of margin to invest).
- 90-day cumulative deal ROAS: 320% (healthy for B2B SaaS with this profile).
- Tracking: Enhanced Conversions active, weekly offline deal upload operational for 8 months.
- Customer Match: 1,200-contact ICP list, +25% bid modifier on Search.
The plateau identified at D0:
For 4 consecutive months, the Google Ads account was stagnating at ~35 deals/month despite scaling attempts (+15% budget per month over 3 months). Alert indicators:
- Top Impression Share saturation: 88% on core keywords (mid-market HRIS software, mid-market payroll tool). Pushing bids increased CPC without gaining volume.
- Cost per deal drifting: +12% over the last 4 months ($1,810 → $2,030).
- Non-brand Search volume nearly stable: despite +30% allocated budget, only +6% conversions.
- PMax over-attributing: internal holdout test had shown real incrementality of ~62% of conversions claimed by PMax.
Diagnosis: the account had reached saturation of Google demand on the ICP. We had to either accept the plateau, or open a new channel. Sales leadership was targeting +30% pipeline within 6 months — non-negotiable. Hence the decision to test Microsoft Ads. The methodology to audit Google Ads scaling plateaus is detailed in our Google Ads audit checklist, and the breakdown of ROAS/CPA/CPC KPIs in our ROAS CPA CPC guide.
Why Microsoft Ads was tested: 4 account signals
The Microsoft Ads test wasn't a whim. Four signals from the client account specifically guided this decision:
Signal 1 — Organic traffic composition. GA4 analysis over the previous 6 months showed that 11% of organic traffic came from Bing/Edge — well above the national average of 4-7% according to StatCounter. This pattern signals an over-represented corporate audience, exactly the signature of a mid-market IT director / CFO / HR ICP. If the target audience is already naturally present on Bing organically, it's also there in paid search.
Signal 2 — Strong organic LinkedIn performance. The publisher's LinkedIn Company account showed high engagement rates on IT/HR director-targeted posts. Organic LinkedIn content was converting well — so the ICP was active on this platform. Microsoft Ads' LinkedIn integration (Job Title, Company, Industry) became an obvious potential lever.
Signal 3 — Google saturation on head terms. Top Impression Share at 88% on main queries. Continuing to push Google produced marginal waste. Diversifying the mix between platforms was more profitable than over-investing on the same one.
Signal 4 — Mature tracking allowing clean measurement. The account had Enhanced Conversions active, weekly offline deal upload, Customer Match built. The same measurement rigor could be transposed to Microsoft Ads by cloning the stack — which allowed measuring real incrementality instead of operating blind. For the Microsoft Audience Network panorama that completes the analysis, see our Microsoft Audience Network guide.
Initial temptation: add native LinkedIn Ads instead of Microsoft Ads. Cost: 4 to 6x more expensive in CPC, and tracking setup complexity twice as great. The right arbitrage was to first test Microsoft Ads (low CPC, included LinkedIn integration, simpler setup) and keep native LinkedIn Ads for Phase 2 if Microsoft validated. This sequence saved 3-4 months of cash burn and 18-22% of CAC on the ICP segment.
Final decision: Microsoft Ads test with initial budget $2,000/month, progressive ramp based on performance, 90-day evaluation window, main KPI: incremental deal conversions + Microsoft deal CAC.
Setup: 7 days for migration, UET tracking, ICP structure
The setup phase spanned 7 calendar days, in parallel with ongoing Google Ads operations. No disruption on the existing Google account — absolute rule, you don't touch the main engine while building a secondary one.
Day 1 — Microsoft Ads account creation and Google structure import.
- Microsoft Ads account creation with client-compatible MCC structure. Google Import procedure documented on help.ads.microsoft.com.
- Native Google Ads → Microsoft Ads import via Google Import: campaigns, ad groups, keywords, negatives, audiences. Preserved at 92-95% fidelity.
- Immediate deactivation of imported campaigns: nothing launches until tracking is validated. See our Google Ads to Microsoft Ads import guide for the detail of preserved fields and defaults to fix after import.
Day 2-3 — UET pixel setup and MSCLKID in CRM.
- UET pixel installation on all pages (via GTM, existing container).
- UET Enhanced Conversions activation with SHA-256 email hashing.
- Creation of an
msclkidproperty on Contact and Deal objects in the CRM (HubSpot in this case). - URLSearchParams capture script + 90-day cookie + form hidden field injection — exactly the same scheme as for Google's GCLID.
- End-to-end test: test click from Microsoft Ads → form filled → CRM records MSCLKID. Validated.
Day 4 — ICP-first restructuring of campaigns.
The Google import had copied the original structure (by product/feature). On Microsoft, everything was restructured by ICP — it's the key to subsequent LinkedIn targeting:
- Campaign 1: "Mid-market IT Directors" — intent keywords around IT/HR solutions for IT directors.
- Campaign 2: "Mid-market HR" — intent keywords around HRIS/payroll/leave.
- Campaign 3: "Mid-market CFO" — intent keywords around HR budget management/reporting.
- Campaign 4: "Brand" — brand name protection (10% budget).
- Campaign 5: "Competitors" — alternatives to the 5 main competitors of the vertical.
Each campaign with its dedicated budget, Phrase and Exact match types, specific negatives.
Day 5 — Microsoft Customer Match construction.
- Export of 1,200 ICP contacts from HubSpot (existing customers + ABM pipeline).
- SHA-256 hashing client-side, never in clear. Microsoft official documentation.
- Upload to Microsoft Ads: 380 confirmed matches (32% coverage, consistent with US average 35-55%).
- Activation: +25% bid modifier on all Microsoft Search campaigns (not in exclusive audience). For the end-to-end CRM offline conversion pipeline, our CRM offline conversions Google Ads guide details the patterns that transfer identically to Microsoft.
Day 6-7 — Smart Bidding configuration and offline conversion pipeline.
- Start in Manual CPC for the first 30 days to gather clean signal — no Smart Bidding until 30+ historical conversions on Microsoft.
- Offline conversion pipeline: HubSpot script → weekly CSV → upload to Microsoft Ads UI every Friday.
- Looker Studio dashboard setup: Microsoft Ads connector + cross tables CAC, ROAS, lead volume per ICP campaign.
Official launch D0: $2,000 monthly budget, 5 Microsoft Search Manual CPC campaigns. For the technical detail of UET setup on long cycle, see our UET conversion tracking guide.
D0 - D30: first campaigns, first learnings
Month 1 was an observation phase. No scaling, no aggressive optimization — just signal accumulation over 4 weeks before starting to arbitrate.
Microsoft Ads metrics D30:
- Impressions: 142,000 (vs 1.8M on Google over the same period — 8% of volume).
- Clicks: 4,800 (average CPC $0.42 — 38% lower than Google equivalent).
- MQL conversions (demo + trial forms): 312.
- Signed deal conversions (offline upload): 4.
- Microsoft deal CAC on M1 cohort: very noisy — not exploitable alone.
The 4 learnings of month 1:
-
MQL volume is high, MQL→deal ratio is lower than Google. 312 MQL for only 4 deals at D30, i.e. 1.3% ratio — much lower than Google (~3% historical). But that's expected: the cycle is longer on Microsoft the first weeks, the algo hasn't learned yet. Important: don't panic on the ratio at 30d.
-
The "competitor alternative" keywords over-perform. The "Competitors" campaign generates 22% of MQL with only 12% of budget. Demo conversion at 8.4% (vs 4.1% on generic keywords). Pattern: on Bing, the corporate audience searching for a competitor is extremely qualified — less noise than on Google.
-
Brand keywords convert at an exceptional rate. Brand campaign at $0.57 CPC, demo conversion at 28% — top performance of the account across all channels. But volume limited by the client's awareness (no reason to scale this segment beyond natural).
-
Device split confirms the corporate audience. 84% desktop, 14% tablet, 2% mobile. Vs Google on the same account: 58% desktop. The Microsoft target profile is right where expected.
Decisions made D30:
- Maintain Manual CPC for another 30 days — deal conversion volume still too low (4) to switch to Smart Bidding.
- Increase competitor campaign budget by +40% (reallocation from underperforming non-brand Search).
- Prepare LinkedIn integration activation for D45 (see next section).
- Don't touch the rest — observe for another 30 days.
Total account metrics (Google + Microsoft) at D30:
- Monthly deal conversions: 38 (vs 35 baseline pre-Microsoft) — modest +9% incremental lead volume.
- Blended deal CAC: $2,065 (vs $2,030 baseline) — +1.6%. Acceptable, normal during ramp.
D31 - D60: optimization and adding LinkedIn integration
Month 2 marked the turning point. With 30 days of accumulated signal, we could start optimizing in a targeted way — and especially activate the LinkedIn integration differentiator that changed the performance profile.
D35 — Partial Smart Bidding switch.
- "Competitors" and "Brand" campaigns switched to Max Conversions (sufficient volume + stable signal).
- "Mid-market IT Directors" and "Mid-market HR" campaigns kept on Manual CPC for an additional 14 days (insufficient volume ramp).
- Target CPA not yet activated — wait for 30+ deals offline uploaded monthly.
D45 — LinkedIn integration activation (the turning point).
This is the major inflection of the experiment. LinkedIn Profile Targeting configuration in Microsoft Ads:
- Job Title: "Chief Information Officer", "IT Director", "CIO", "Head of IT", "VP IT" → +30% bid modifier.
- Job Title: "Chief Human Resources Officer", "CHRO", "Head of HR", "HR Director", "VP People" → +30% bid modifier.
- Industry: exclusion of "Computer Software" and "Internet" (the ICP isn't tech, it's tertiary).
- Company size: targeting 200-2,000 employee companies via LinkedIn attribute.
D45-D60 results (15 days after LinkedIn activation):
- Average CPC on ICP segment: +14% (mechanically, we bid more).
- Demo conversion rate on ICP segment: +85% (from 4.2% to 7.8%).
- CAC on ICP segment: -38% (from ~$2,300 to ~$1,425).
- MQL volume stable at -3%, but significantly higher MQL quality.
It was the decisive lever. Without LinkedIn integration, Microsoft Ads would probably have plateaued at a blended CAC around $1,975-$2,200 — comparable to Google, without marginal advantage. With LinkedIn integration, CAC drops into the $1,300-$1,540 zone on the ICP segment — that's the structural competitive advantage that justifies the channel.
D61 - D90: scaling, final ROAS, contributions to the mix
Month 3 was dedicated to progressive scaling and rigorous measurement of real incrementality. It's the most methodologically important phase — the one that allows deciding the channel's future without over-attribution bias.
D61-D75 — Progressive scaling.
- Microsoft Ads budget went from $3,000 (month 2) to $4,200 (month 3).
- Complete Smart Bidding switch on all campaigns (deal conversion volume reached 12+ per month).
- Target CPA activation on "Competitors" and "Mid-market IT Directors" campaigns (targets at $1,320 and $1,540 respectively).
- Addition of 2 new expansion ad groups on the "Mid-market IT Directors" campaign (long-tail keywords identified in M2).
- Cleanup of underperforming keywords: -22 keywords with 0 deal conversion over 60d and CTR below 1%.
D75 — Geographic holdout test.
Rigorous method applied: Microsoft Ads paused in a representative state for 14 days (test area 12% of usual volume). Google Search maintained everywhere.
Holdout results:
- Test area deal conversions (Microsoft PMax+Search paused): -16% over 14 days.
- Control areas deal conversions: stable at -2% (within statistical noise).
- Net incrementality differential: 14 points = approximately 78% of Microsoft-claimed conversions are incremental (22% were cannibalization on Google or self-cannibalization).
The 22% cannibalization is consistent with observed benchmarks. No red alert — just a correction factor to apply for future budget arbitrage.
Final D90 metrics:
Reading the results:
- +18% incremental lead volume on the total account — above the initial target (+10% targeted).
- Blended CAC -6%: Microsoft Ads pulls average CAC down thanks to lower ICP CAC via LinkedIn targeting.
- Microsoft ROAS 280% vs Google 320%: Microsoft converges to a comparable but slightly lower ROAS, which is expected on the first year of the channel.
- Google preserved: no visible cannibalization on the Google account. Google budget remained stable, performance too.
- Pipeline +25%: combined effect of volume + quality (shorter sales cycle on ICP leads coming from Microsoft LinkedIn targeting).
For the methodological detail of incrementality on B2B SaaS side, see our 2026 Customer Match first-party data guide and our Google Ads B2B SaaS strategy for the complete methodology.
What worked, what didn't, what we'd do again
Honest review at D90, what would be the subject of a team retrospective:
What worked (to reproduce):
- Tracking setup in parallel to Google without touching the main engine. No disruption to the Google account during the 7 days of Microsoft setup. Operational discipline.
- Manual CPC start the first 30 days. No blind Smart Bidding. Clean signal collection before automation.
- ICP-first restructuring of campaigns. Not a copy-paste of the Google structure. Prepared the ground for LinkedIn integration.
- LinkedIn integration in M2 (not too early, not too late). The account had 30 days of signal before activating this powerful lever.
- Geo holdout test at D75. Rigorous incrementality measurement before final scaling. Prevents over-attribution biases.
What didn't work (to avoid):
- Initial temptation to activate everything in Auto Bidding at D7. Fortunately blocked — would have cost 4-6 weeks of failed learning phase.
- First incomplete set of negatives. Let through $220-330 of waste on "comparison shopping" traffic during the first 14 days. More rigorous negatives audit from the start would have saved this budget.
- Initial underestimation of MQL→deal time on Microsoft. Noisy first month, sales team that wanted to abandon at D21. Discipline on the 60-90d window saved the project.
What we'd do differently:
- Activate LinkedIn integration earlier (D30 instead of D45) — month 2 would have been more performant.
- Start with a higher initial budget ($2,750 instead of $2,000) — reaching 30 conversions/month would have been faster.
- Prepare a cumulative deal ROAS dashboard from D0, not D45. Would have facilitated monthly arbitrages.
Planned continuation months 4-6:
- Microsoft PMax activation on the identified best-performing segment ("Competitors" + "Mid-market IT Directors" campaigns).
- Microsoft Audience Network test with explicit Demand Gen objective (IT director white paper).
- Microsoft Ads budget ramp toward $6,000/month (reach 30% of total paid mix).
- Systematic quarterly holdout test to manage budget arbitrage.
8 transferable key lessons beyond the case:
- Verify the share of Bing/Edge organic traffic before investing Microsoft Ads (ICP relevance signal).
- Set up UET and MSCLKID in CRM from D1 — without it, nothing works on long cycle.
- Start in Manual CPC or Max Conversions capped, never in PMax day 1 on a new Microsoft account.
- Restructure campaigns by ICP, not by product — prepares the ground for LinkedIn targeting.
- Activate LinkedIn integration in month 2 (major B2B SaaS differentiator).
- Maintain Brand Search separate with dedicated unshared budget.
- Geographic holdout test 4 weeks before any scaling beyond 30% of initial budget.
- Only judge performance at D60 minimum on long cycle — absolute patience.
For B2B SaaS accounts that want to validate Microsoft Ads potential on their ICP before committing, launch a free SteerAds audit — it specifically evaluates current traffic composition and Microsoft sectoral benchmarks. For the detailed cross-channel allocation methodology, read the Microsoft Ads B2B SaaS strategy. For the quantified ROAS Microsoft vs Google comparison on panel data, see our Microsoft vs Google Ads ROAS study. And for the 30-day Microsoft Ads launch checklist, our 30-day Microsoft Ads checklist details the actions per week. Official documentation remains on about.ads.microsoft.com and help.ads.microsoft.com.
Sources
Official sources consulted for this guide:
FAQ
Is the profile of this B2B SaaS SMB representative?
Representative of mid-market B2B SaaS companies that plateau on Google Ads, yes. $4.4M ARR, 30-person team, $9,200 average ACV/year, ICP mid-market IT directors at 200-2,000 employee enterprises, 70-day median sales cycle — it's a profile we encounter several times per quarter in audits. The pattern of 'Google Ads plateau after 18 months of scaling' is what brings them to seek complementary channels. The majority first try native LinkedIn Ads (expensive), then Microsoft Ads (underestimated) — when they don't stop experimenting due to lack of clean management. The method described here is what allowed us to capture Microsoft potential without breaking the existing Google account.
Why 90 days and not 30 or 180?
90 days is the minimum coherent with mid-market B2B SaaS sales cycle. With a 70-day median cycle, the first closed-won deal conversions only come back in months 2-3 after launch. At 30 days, we only have MQL and SQL — incomplete signal. At 180 days, we have real profitability but we've paid 3 additional months of scaling without intermediate adjustment. The 90-day window allows us to close a measurable cohort, validate the pattern, and decide on scaling beyond. This is what we systematically recommend in B2B SaaS with 60-100 day cycles.
Why not activate Microsoft PMax right away?
Because the account didn't have the required Microsoft maturity. At D0, the client had never touched Microsoft Ads — so 0 historical conversions on the channel. Activating Microsoft PMax without historical signal would have blocked the algo in learning phase for 4 to 8 weeks, with no exit guarantee. The clean method: start with Microsoft Search Auto Bidding (Max Conversions capped), reach 30+ stable conversions/month over 60-90 days, and only then consider Microsoft PMax to scale. The client switched to Microsoft PMax in month 5 — out of scope for this case study but a common pattern.
How much did the experiment cost over 90 days?
Microsoft Ads budget spent over 90 days: about $9,800 — progressive ramp from $2,000 in month 1 to $4,200 in month 3. In-house setup and tracking over 7 days FTE-equivalent, equating to $4,900 of consulting time if outsourced. Total cost about $14,700. Return: 86 qualified demos generated, including 12 deals signed by D90, average ACV $9,200, i.e. $110,400 of additional ARR signed. Apparent ROAS 7.5x but with last-click attribution that overestimates Microsoft. With data-driven attribution, real estimated contribution at 5.8x ROAS — more honest.
Was the LinkedIn integration really decisive?
Yes, on this specific ICP profile (mid-market IT directors at 200-2,000 employee enterprises). Activating LinkedIn Job Title targeting at D45 dropped CAC on the ICP segment by 38% in 30 days — it was the most powerful lever identified throughout the experiment. Without LinkedIn integration, Microsoft Ads would probably have plateaued at 200-220% ROAS — still interesting but insufficient to justify 30% of the paid mix. With LinkedIn integration, Microsoft ROAS held 280% on the last 30 days, which fundamentally changes budget arbitrage. That's why we insist on this differentiator in all our B2B SaaS recommendations.