SEO Case Study: B2B staffing achieved ROAS 2.8X in 90 days
In early April 2025, a San Diego based B2B SaaS company partnered with Goforaeo to stabilize lead quality, regain efficiency, and prove revenue impact from Google Ads without increasing budget. Client name is anonymized due to an NDA, but every number, workflow, and decision below reflects the real operating conditions of the account.
This is an explanatory walk through of what we changed, why we changed it, and how the results held up across three full months of execution.
Client context and what made this account tricky
This company sells a mid ticket SaaS product to operations and finance teams, with sales cycles that typically run 30 to 75 days and require multiple touches before a deal is marked closed won. Paid Search was expected to influence pipeline, not just form fills.
A few practical realities shaped the strategy:
- Leads were scored inside the CRM, not at the form level
- Revenue attribution had gaps because some deals were influenced by Ads but closed after long sequences
- Search demand was high intent, but also filled with job seekers, students, and competitors
- Several keywords converted often but produced low quality leads that sales would not pursue
The biggest risk was optimizing for the wrong signal. If we chased cheap conversions, the sales team would reject the leads and ROAS would never improve.
Key conversion events and tracking definition
Before we touched bidding or keywords, we aligned conversion events to match what the business actually valued. The team defined three tiers:
- Tier 1: Qualified demo request accepted by sales
- Tier 2: Sales meeting held
- Tier 3: Closed won revenue recorded in CRM and pushed back to Ads
Tier 1 was used for optimization early, then we blended Tier 2 and Tier 3 as signal quality improved.
Starting point in late March 2025
The account was spending consistently, but efficiency and confidence were declining. Here is what performance looked like during the baseline period from March 1, 2025 through March 31, 2025:
- Average monthly spend: about 42,000 dollars
- ROAS based on closed won revenue attributed to Ads: 1.6
- Cost per lead on primary demo form: 410 dollars
- Sales accepted lead rate: 18 percent
- Meeting held rate from paid leads: 9 percent
- Branded campaigns were propping up overall results, while non brand was underperforming
In short, Paid Search was driving volume, but not enough of it turned into pipeline. Sales feedback was consistent: too many leads that did not match target company size or job title.
The first diagnostic we ran
We audited search terms, auction insights, and lead quality tags in the CRM to see where spend and intent were misaligned. Three patterns stood out:
- Broad and phrase keywords were pulling informational searches that looked relevant but were not buyer intent
- Several campaigns mixed very different intents, which made automated bidding unstable
- The landing page experience was the same for every persona, even though pain points differed
This is where the 90 day plan came from: fix signal quality, isolate intent, then scale what closes.
What we aimed to improve without repeating the headline
We did not frame the work as “increase ROAS” internally. The operational targets were more specific:
- Increase sales accepted lead rate while holding spend flat
- Improve meeting held volume from non brand campaigns
- Reduce wasted spend from irrelevant search terms and low intent traffic
- Build revenue level attribution that the leadership team could trust
Once these were moving, stronger ROAS became the natural outcome.
Strategy overview
We used a three phase approach across April, May, and June 2025. Each phase built on the previous one so we were not making too many changes at the same time.
- Phase 1 in April: Measurement repair and intent separation
- Phase 2 in May: Query control, creative testing, and landing page alignment
- Phase 3 in June: Value based bidding and scaling what converts to meetings and revenue
Tools we used throughout the engagement
We kept the stack practical and centered on accuracy:
- Google Ads for campaign build and optimization
- Google Analytics 4 for session quality and engagement signals
- Google Tag Manager to standardize events and reduce tracking drift
- CRM reporting in HubSpot or Salesforce style workflows for lead stages and revenue, exact system anonymized
- Looker Studio dashboards for weekly reporting and stakeholder clarity
- Call tracking software for sales calls tied back to keyword and campaign, exact vendor anonymized
- Google Sheets for shared change logs, pacing, and test plans
Phase 1 in April 2025: Fix measurement and isolate intent
April was about reducing noise. We started on April 1, 2025, and the first 10 days were focused on auditing, rebuilding structure, and validating tracking.
We did not turn everything upside down at once. Instead, we ran parallel builds and switched traffic only after signals were consistent.
Key actions:
- Rebuilt conversion tracking so each event had a single source of truth
- Imported offline events for sales accepted, meeting held, and closed won using hashed identifiers
- Separated campaigns into clear intent groups: Brand, Competitor, High intent non brand, and Research intent
- Split audiences by geography and ICP where possible, keeping San Diego and surrounding California performance visible while still targeting nationally
What changed inside the account structure
The account originally had a few large non brand campaigns with many ad groups. We moved to smaller, intent specific groups.
We also implemented:
- Negative keyword frameworks by category, updated weekly
- Match type discipline, with exact and phrase for proven intent and limited broad usage
- A search term review cadence twice per week during the first month
April 2025 results and what they meant
By April 30, 2025, results were already moving even though spend stayed similar.
April performance compared with the March baseline:
- Spend: 41,300 dollars in April versus 42,000 in March
- Primary demo form leads: down slightly, but lead quality improved
- Cost per lead: 390 dollars in April versus 410 in March
- Sales accepted lead rate: 24 percent in April versus 18 percent in March
- Meeting held rate: 12 percent in April versus 9 percent in March
- ROAS: 2.0 in April versus 1.6 in March, measured on closed won revenue that came through within the month plus late stage revenue credited back as it closed
The important signal here was not just ROAS. It was that sales acceptance improved quickly once intent and tracking were cleaned up.
Phase 2 in May 2025: Query control, ads that pre qualify, and landing page alignment
In May, we leaned into relevance. We wanted fewer unqualified clicks and more qualified conversations.
We introduced a stricter query strategy:
- Added negatives for “free”, “template”, “job”, “salary”, “course”, “certification”, and competitor support terms
- Paused several keywords with good conversion rates but poor sales outcomes
- Expanded exact match coverage for buyer terms uncovered in search term mining
Then we focused on ad messaging that pre qualified users.
We avoided generic copy like “book a demo” everywhere. Instead, we tested messaging that filtered out non ICP traffic by calling out:
- Minimum company size
- Primary use case
- Integration requirements
- Role based benefits for operations and finance stakeholders
Landing page changes that supported the ads
We did not rebuild the whole website. We improved the pages that Ads traffic landed on:
- Added role based sections so visitors could self identify quickly
- Moved proof points higher, including relevant customer logos and short outcomes
- Reduced form friction for high intent pages but added qualifying questions that helped sales routing
- Added a secondary conversion for visitors not ready for a demo, used for remarketing only, not as a primary optimization goal
May 2025 results and what improved
By May 31, 2025, the quality signals were strong enough to begin preparing for value based bidding.
May performance highlights:
- Spend: 42,800 dollars
- Cost per lead: 340 dollars, driven by better click to lead efficiency without lowering quality
- Sales accepted lead rate: 29 percent
- Meeting held rate: 15 percent
- Non brand campaigns drove a higher share of qualified leads than in March, reducing dependence on brand
- ROAS: 3.1 based on closed won revenue attributed to Ads, with improved confidence because offline conversions were now consistently imported
This month was the turning point. We stopped paying for curiosity traffic and started paying primarily for buyer intent.
Phase 3 in June 2025: Value based bidding and scaling what closes
June is where we scaled with control. With two months of cleaner data, we introduced smarter bidding without handing the keys over blindly.
We moved from optimizing only for demo submissions toward optimizing for value signals.
Key shifts:
- Started using Maximize conversion value with value rules tied to lead stage progression
- Allocated more budget to the campaigns that produced meeting held events, not just leads
- Launched dedicated remarketing sequences for research intent visitors, keeping them out of high intent spend lanes
- Improved location bid adjustments for areas where meeting rates were consistently higher, while still maintaining national coverage
Budget and pacing discipline
Scaling was not a budget increase story. We kept spend roughly flat but reallocated within the account:
- Reduced spend on competitor campaigns that produced clicks but low meeting rates
- Increased spend on high intent non brand segments where search terms clearly reflected buying stages
- Protected brand coverage but prevented it from absorbing budget meant for growth
June 2025 results and the final 90 day outcome
By June 29, 2025, we had a full 90 day window from April 1, 2025 through June 29, 2025.
June performance:
- Spend: 43,100 dollars
- Cost per lead: 310 dollars
- Sales accepted lead rate: 33 percent
- Meeting held rate: 18 percent
- ROAS: 4.5 in June
Now the full before and after:
- ROAS increased from 1.6 in March 2025 to 4.5 in June 2025
- That is a 2.8X lift in ROAS within the 90 day execution window
- Sales accepted lead rate improved from 18 percent to 33 percent
- Meeting held rate improved from 9 percent to 18 percent
- Cost per lead dropped from 410 dollars to 310 dollars while lead quality increased
This is why we describe the result as genuine. It is not a single spike from one branded month. It is a month over month pattern supported by lead stage movement.
What specifically drove the ROAS lift
Several levers mattered, but three did most of the heavy lifting.
First, we stopped optimizing for the wrong conversion
Once the account used sales accepted and meeting held as core signals, bidding and budget decisions improved quickly.
Second, we separated intent so automation behaved
When campaigns mixed research and buyer intent, Smart Bidding chased volume. After separation, each campaign had a clear job and cleaner search term profiles.
Third, ads and landing pages pre qualified leads
By stating who the product is for and who it is not for, we reduced junk clicks and helped sales teams receive leads closer to ICP.
Supporting optimizations that made the gains stick
These were smaller, but they improved stability:
- Weekly search term mining and negative expansion
- Device performance controls, especially for high cost low meeting segments
- Ongoing RSA testing with pinned elements for compliance and clarity
- Auction insight reviews to detect when competitors pushed into core queries
- A pacing model that prevented end of month over correction
How we reported results to avoid vanity metrics
In B2B SaaS, a click or even a lead is not the outcome. We reported using a simple hierarchy:
- Leading indicators: CTR, CPC, search term relevance, landing page engagement
- Mid indicators: cost per sales accepted lead, meeting held rate
- Lagging indicators: closed won revenue and ROAS
Each weekly update included what changed, why it changed, and what it did to meeting held volume. This kept stakeholders aligned and reduced pressure to chase shallow wins.
Key takeaways for other B2B SaaS teams in San Diego and beyond
If your account is generating leads but sales says the leads are weak, the fix is rarely a single setting. It is usually a system problem.
Practical lessons from this case:
- Do not scale until you trust tracking and offline conversion imports
- Separate intent before relying heavily on automated bidding
- Use ad copy to filter, not just to attract
- Treat negative keywords as a living asset, not a one time setup
- Build reporting around pipeline movement, not just form fills
