A 164-campaign account, rebuilt to 49.
A national homebuilder was running paid search across 17 markets in a structure that had grown one campaign at a time. I mapped every campaign, designed a consolidated architecture around search intent, and built the bidding test to prove it before spend moved.
Years of additions, minimal cleanup.
The account covered 17 regional markets for a production homebuilder. Over several years it had grown into 164 separate search campaigns, most of them added one at a time to handle whatever was in front of someone that week.
Match types had been split into their own campaigns. A single market might run separate Exact, Broad, and modified-broad campaigns for the same keywords. Individual communities had been spun up as standalone campaigns rather than living inside the market they belong to. Naming conventions had shifted over time, so two campaigns doing the same job could carry different names. Bid strategies were scattered across portfolios, including legacy strategies still named after an import job from years earlier.
This is how most large accounts end up when edits get made under deadline and nobody owns the overall structure. The cost does not show up right away. It shows up later, in performance and in the hours the account takes to manage.
Fragmentation starves the bidding algorithm and the team.
Splitting match types and communities into their own campaigns was once standard practice. The platform has changed since then, and the split now costs the account in a few specific ways.
- Smart Bidding learns slower. Value-based and target-CPA bidding need pooled conversion signal. When the same intent is split across three match-type campaigns, the algorithm sees three thin data sets instead of one usable one. Learning periods stretch and reset more often.
- Match types no longer earn their own campaigns. Modified broad was retired by Google in 2021, and close-variant matching means Exact and Phrase already overlap heavily. Maintaining a campaign per match type preserves a distinction the platform stopped enforcing.
- Community sprawl fragments small budgets. A standalone campaign for one community competes with its own market for budget and pulls spend below the volume any single campaign needs to optimize.
- Inconsistent naming blocks automation. Scripts, automated reporting, and bulk edits all depend on predictable names. Drifted naming means every report needs hand-cleaning.
- Management time scales with campaign count. 164 campaigns is 164 things to budget, pace, QA, and explain. The overhead is real and it is recurring.
One campaign per market, per intent. Match types become ad groups.
The new architecture collapses the account along the line that actually matters to a bidding algorithm and to a buyer: search intent. Each market runs a small, fixed set of campaigns, one per intent bucket. Match types and individual communities move down a level into ad groups, where they organize keywords without splitting the conversion data.
Brand core, brand-plus-region, community terms, and per-community ad groups, consolidated into one branded campaign per market.
Geo-modified, high-intent search terms. This is where most of the spend goes.
Conquesting against rival builders, isolated so its different economics do not distort other bidding.
Dynamic search to catch demand the keyword lists miss, and to surface new terms worth promoting.
Audience-specific demand (for example 55-plus communities) kept separate where the buyer and the message differ.
Every campaign follows {Market}_{Intent}_Search, and bid strategies align one-to-one with the intent bucket.
Split into a separate campaign only what needs a separate budget or a separate bid strategy. Everything else is an ad group.
One representative market: twelve campaigns become three.
This market carried the full set of problems: match-type splits, two communities run as their own brand campaigns, and a community-specific nonbrand campaign. Here is the before and after, anonymized.
| Legacy campaign | New campaign | Ad group it becomes |
|---|---|---|
| Branded intent | ||
| Mkt04_Brand_Search |
Mkt04_Brand_ |
Brand core |
| Mkt04_Brand Region_Exact_Search | Brand + Region/City | |
| Mkt04_Brand Region_Search | Brand + Region/City | |
| Mkt04_Brand Community_Search | Community terms | |
| Mkt04 Community A_Brand_Search | Community: A | |
| Mkt04 Community B_Brand_Search | Community: B | |
| Dynamic search | ||
| Mkt04_DSA_Search | Mkt04_DSA_Search | DSA targets |
| Nonbrand intent | ||
| Mkt04_GeoModified Metro_Exact_Search | Mkt04_NonBrand_Search | Geo-mod intent |
| Mkt04_GeoModified Metro_Broad_Search | Geo-mod intent | |
| Mkt04_GeoModified_Exact_Search | Geo-mod intent | |
| Mkt04_GeoModified_Broad_Search | Geo-mod intent | |
| Mkt04 Community B_GeoModified_Search | Geo-mod intent: B | |
Nothing was dropped. The same keywords and communities are still running, reorganized so the bidding algorithm reads one pooled signal per intent rather than several thin ones, and so every market is built the same way.
The structure is built for how the platform actually bids in 2026.
Before Fragmented
- Conversion signal split across match-type campaigns
- Communities competing with their own market for budget
- Naming that breaks scripts and reporting
- Bid strategies scattered, some legacy and mislabeled
- 164 campaigns to pace, QA, and explain
- Slow, frequently resetting learning periods
After Consolidated
- One pooled signal per market, per intent
- Communities organized as ad groups, budget intact
- One naming convention across all 17 markets
- Bid strategy aligned one-to-one with intent bucket
- 49 campaigns, every market built the same way
- Faster, more stable Smart Bidding optimization
None of these moves are cosmetic. Each one maps to how the auction and Smart Bidding behave now. Pooling the signal shortens learning periods. Matching a bid strategy to each intent lets brand, nonbrand, and competitor carry the different targets they should. Consistent naming is what makes scripted reporting and bulk edits possible at all. And with fewer campaigns, budget lands where there is enough volume to optimize against.
De-risked rollout, with a bidding test designed to prove it.
A change this large needs a way to tell whether it actually worked. The rollout was built so that question could be answered market by market, before committing the whole account.
Map every campaign first
All 164 legacy campaigns were mapped to their new campaign and ad group, with match types and keyword inventory accounted for. Every campaign had a documented destination before anything was touched.
Set value-based targets per market
Each market got a target return goal derived from its own economics: estimated value per qualified lead, conversion-tracking coverage, and a planned shift in target cost per acquisition. The targets were set per market, since the economics in one metro look nothing like another.
Run a controlled bidding test
Brand and nonbrand were tested against the new return targets so the lift from structure could be read separately from the lift from bidding, before a full rollout.
Roll out market by market
The new architecture deploys per market behind the test results, so any single market can be paused or adjusted without risking the whole account.
A plan detailed enough to build from.
The output was the full plan, detailed down to the campaign and ad group:
- A full old-to-new migration map for all 164 campaigns, with the target campaign, ad group, and keyword treatment for each.
- The target architecture across all 17 markets: 49 campaigns, 92 ad groups, one consistent naming convention, and a bid strategy aligned to each intent bucket.
- The measurement design: per-market return targets and a bidding test structured to isolate the effect of the restructure.
The work shown here is the proposal and its rationale. Numbers are structural, drawn from the actual account. No post-launch performance figures are claimed.
I find the structure the account should have had, and the plan to get there safely.
Most large paid search accounts are carrying years of drift like this. The fix is methodical work: map every campaign by hand, design a structure the platform rewards today, then prove it with a controlled test before any budget moves.
Most accounts that have grown past the point of being easy to explain need exactly this: a full structural rebuild, proven before any budget moves.