Case Study · WordPress SaaS · Google Ads Audit + Rebuild

Beaver Builder was paying $10K to make $5K. We turned it into 5x ROAS.

Beaver Builder came to us spending $10K/month on Google Ads with a previous agency, getting roughly $10K back in tracked revenue. After a forensic audit, we discovered the actual revenue was half that - and the inefficiency went much deeper than the numbers suggested. Here is what we found, what we fixed, and what happened next.

Beaver Builder

WordPress page builder & themes · wpbeaverbuilder.com →

October 2024Free audit delivered
November 2024Engagement started
WordPress SaaSIndustry
Top-ratedPage builder market

5x

ROAS for full year 2025

Up from approximately 1x

$151K

Conversion value 2025

From $35.2K total spend

67%

Spend reduction

By Jan 2025 vs. baseline

$0.80

Brand keyword CPC

Down from $4-5

An introduction over email, a free audit, and a surprise nobody saw coming

In October 2024, a friend introduced me to Robby and Anthony at Beaver Builder. Robby is one of the founders. Anthony handles operations. They were not looking to switch agencies. They were happy with their existing one - had been working with them for over a year. They just wanted to know if there was an upside they were missing.

That is the most honest position a client can be in. Not unhappy. Not pitched out. Just curious. So I made an offer that took the pressure off: let me audit the account for free and write up what I find. No commitment, no sales pitch. If the report shows nothing meaningful, you have lost an hour. If it shows something, we talk about what to do next.

They agreed. Gave me read-only access. I went to work.

What a comprehensive PPC audit actually looks like

I did not run a generic "10 quick wins" audit. I went through the full nine pillars: conversion tracking, unit economics, landing pages, goals and KPIs, campaign structure, targeting, bidding, creative, and offer. Every layer of the account, top to bottom.

By the end of the second day, I was sitting in front of my screen genuinely surprised. Not at any one finding - at how many fundamental things were broken at the same time on what should have been a sophisticated SaaS account.

The five findings that mattered most

Finding 1 · Tracking

Purchase conversions were firing twice on the same transaction

The dataLayer on the Beaver Builder site was double-counting purchases. Every real transaction registered as two conversions in Google Ads. This meant the agency's reported "$10K monthly revenue from ads" was actually ~$5K of real revenue. Half of every reported number was a ghost.

Finding 2 · Brand campaign

Brand campaign on broad match with Maximize Conversions

The brand campaign was set up with broad match keywords on a Maximize Conversions bid strategy. Translation: the algorithm was bidding aggressively on every loosely related query, and the broad match was eating into expensive non-brand auctions. Brand keyword CPCs were running $4-$5 - on terms that should have been costing $0.50.

Finding 3 · Non-brand campaign

The non-brand campaign was secretly running on brand traffic

The "non-brand" campaign was technically named correctly but had zero brand negative keywords. Combined with broad match, it was matching to "beaver builder" branded queries constantly. The $2K/month it was "producing" was almost entirely brand traffic stolen from the brand campaign. Real non-brand performance was close to zero.

Finding 4 · Search terms

Thousands of irrelevant queries running unfiltered

The campaigns were ranking and spending on hundreds of search terms loosely related to "design" - graphic design tools, web design tutorials, design software comparisons. Beaver Builder is a WordPress page builder, not a design tool. The audience overlap is essentially zero. This was years of search term sediment that nobody had cleaned out.

Finding 5 · Structure

Two undersized campaigns competing for the same data

The "page builder" and "themes" campaigns were running as separate campaigns, each below the 30-conversions-per-month threshold that Smart Bidding needs to learn effectively. They were starving each other of signal while the algorithm tried to optimize both with insufficient data. Classic fragmentation.

I wrote it all up in a comprehensive audit report and walked Robby and Anthony through it on a call. Robby went quiet during the tracking section. When I finished, his question was simple: "What do we do?"

I asked for six months and budget control. We agreed.

Six methodical changes that rebuilt the account

The fixes were not glamorous. There was no "growth hack" or "secret strategy." Every change was a textbook PPC fundamental that should have been in place from day one. The work was not difficult. The discipline to do it methodically, in order, without skipping steps - that was the work.

Fix 1 · Tracking

Got on a call with Beaver Builder's dev partner Justin to fix the dataLayer

The double-firing purchase conversion was a code-level issue, not a Google Ads issue. I jumped on a call with Justin, Beaver Builder's development partner, walked through the dataLayer logic, and we identified the problem. Justin pushed a fix that day. Conversions started firing once per real purchase. Suddenly we had honest numbers.

Key principle

Smart Bidding is only as smart as the data you feed it. Broken tracking does not just inflate reports - it teaches the algorithm to optimize for fictional events. Fix tracking before anything else.

Fix 2 · Search term cleanup

One year of search term data, cleaned and pruned

Pulled the last 12 months of search term reports, classified every recurring query as relevant or irrelevant, and built a comprehensive negative keyword list. The "design" sediment came out. Hundreds of off-target queries were blocked at the campaign level. The keyword footprint shrank by roughly 60% - and the remaining queries were the ones that actually converted.

Fix 3 · Brand campaign rebuild

Brand campaign reset to manual bidding with phrase + exact match

Removed all broad match keywords from the brand campaign. Switched to phrase and exact match only. Killed the Maximize Conversions bid strategy and went back to manual CPC. Within one week, brand keyword CPCs dropped from $4-$5 to $0.80. Same traffic. Same conversions. About 80% less spent per click.

Fix 4 · Non-brand campaign rebuild

Consolidated two undersized campaigns into one well-fed campaign

Merged the "page builder" and "themes" campaigns into a single non-brand campaign so Smart Bidding had enough signal to actually learn. Added comprehensive brand negative keywords so it could not bleed brand traffic anymore. Built tightly themed ad groups around real intent clusters - including Elementor Alternative and Divi Alternative ad groups specifically targeting their two biggest competitors.

All keywords moved to phrase and exact match only. No broad match in non-brand at this stage of rebuild.

Fix 5 · Match-message alignment

Ad copy rebuilt around keyword themes

Each ad group got its own RSAs built around the specific intent in that theme. The Elementor Alternative ad group got headlines positioning Beaver Builder against Elementor specifically. The Divi Alternative ad group got headlines positioning against Divi. Generic ad copy got removed. Every search term landed on a message that matched what the user actually typed.

Fix 6 · Disciplined transition to Smart Bidding

Manual CPC first, then Target ROAS only after volume justified it

The non-brand campaign held on Manual CPC until conversion volume reached the threshold for Smart Bidding to learn meaningfully. Only then did we transition to Target ROAS. Premature automation in a rebuilt account would have re-introduced the same volatility the previous setup had.

What 60-90 days of disciplined fundamentals produced

The fixes started rolling out in November 2024. Within 45 days, the account was unrecognizable. Brand CPCs had collapsed. Search term spend was concentrated on intent-rich queries. Smart Bidding was running on tracking that actually reflected reality.

The before/after comparison

Previous agency · pre-November 2024

~$10K / monthAd spend
~$10K / month (reported)Conversion value
~$5K / month (actual)Real revenue (after tracking fix)
~1x ROASReal return on ad spend
$4-$5Brand keyword avg CPC

After rebuild · January 2025

$1.64K / monthAd spend (down 84%)
$11K / monthConversion value
78Conversions
6.72x ROASReturn on ad spend
$0.80Brand keyword avg CPC

This is not a "we increased spend and got more leads" story. The opposite. We dramatically reduced spend and increased real revenue at the same time. Every dollar of waste cut out went straight to the bottom line.

November 2024 - first month of rebuild

Conv. value $10.5K, conversions 92, cost $4.87K, ROAS 2.16x. Spend already down ~50% from previous baseline. Tracking now reflects real purchases.

Beaver Builder Google Ads November 2024 - 2.16x ROAS

January 2025 - efficiency peak

Conv. value $11K, conversions 78, cost just $1.64K, ROAS 6.72x. Spend down 84% from baseline while revenue stayed constant. This is what cutting waste looks like in a Google Ads dashboard.

Beaver Builder Google Ads January 2025 - 6.72x ROAS

Brand keyword CPC after rebuild

Brand keyword average CPC dropped to $0.80 - down from the $4-$5 the previous setup was producing. Same brand traffic, ~80% lower cost per click. This single fix saved thousands per month.

Beaver Builder brand keyword CPC $0.80

Full year 2025 - the long-term proof

The January 2025 numbers were not a flash. The discipline held all year. The full 2025 calendar performance:

Full year 2025 - sustained 5x ROAS

Total conversion value $151K, total cost $35.2K, conversions 1,120, average ROAS 4.30x. Twelve months of compounding discipline. The account that was at break-even in October 2024 was producing 5x return by year-end 2025.

Beaver Builder Google Ads full year 2025 - $151K revenue from $35.2K spend

What this case study is not

The uncomfortable truth

This was not a "growth" story. It was a "stop the bleeding" story.

Most case studies on the internet are about scale. Bigger budget, bigger results. This is the opposite. The win here was not adding revenue - it was uncovering that half of the reported revenue did not exist, then rebuilding around honest numbers and cutting massive waste.

That is less glamorous to write about. "We saved a client $8K in monthly waste" does not headline as well as "we 10x'd them." But for any operator running ads, this is the story that should ring true: most accounts are not under-spent, they are mis-spent. The unlock is rarely a new strategy. It is usually finding what is already broken.

Hear it directly from Beaver Builder's founder

Robby McCullough is one of the founders of Beaver Builder. We recorded this short conversation in March 2026, about 16 months into the engagement.

Video testimonial

Robby McCullough · Co-founder, Beaver Builder

Recorded March 2026 · 16 months into the engagement

Trustpilot - independent verification

An unprompted Trustpilot review left by Robby in February 2025, three months into the engagement.

Verified on Trustpilot

"Great team of advertising experts."

"We've been working with [the team] for several months now, and the experience has been great. Anand and team have been insightful, helpful, and are experts in their area. I would recommend them to friends and colleagues, and we look forward to working with them in the future."

RO
Robby M. February 2025 · Unprompted review

Six things this engagement proved

  • Most underperforming accounts are not under-spent. They are mis-spent. Before adding budget, audit what is already there. Half the time the win is hiding in waste, not in scale.
  • Tracking is not a setup task. It is the foundation of everything. Broken tracking does not just produce wrong reports - it teaches Smart Bidding to optimize for fiction. Fix it first.
  • Broad match plus Maximize Conversions on brand is a money-burning machine. Brand traffic should cost cents, not dollars. If your brand CPCs are in dollars, your campaign settings are wrong.
  • Non-brand campaigns without brand negative keywords are stealing credit. Audit your search terms. If brand queries are appearing in non-brand reports, your "non-brand performance" is a fiction.
  • Search term hygiene is not optional, it is the work. A year of unmonitored search terms produces sediment. Cleaning it up is one of the highest-ROI activities in any account.
  • Cutting spend and increasing revenue is harder than it sounds. Most agencies are paid on percentage of spend, which makes "spend less" structurally impossible for them. Find an agency whose incentives match yours.

Want a free audit of your Google Ads account?

If your numbers feel off, your spend feels too high, or your previous agency cannot explain where the money is going, we will run the same comprehensive audit on your account at no cost. You get the full report, no commitment to work with us afterward.