Google Ads Account Structure: Hagakure vs SKAGs in 2024

If you built your Google Ads account before 2021, it is likely built on a foundation of Single Keyword Ad Groups (SKAGs). And if you haven't changed it, you are bleeding money.
The landscape of Paid Search has shifted from a Control paradigm (Manual CPC, Exact Match, SKAGs) to a Context paradigm (Smart Bidding, Broad Match, Consolidation).
This guide is not a theory piece. It is a migration manual. We will mathematically prove why granular structures fail in 2026, explain the "Hagakure" (Consolidated) methodology used by top agencies, and provide a step-by-step roadmap to re-architect your account without killing performance.
Part 1: The Death of SKAGs (The Mathematical Failure)
What was a SKAG?
For the uninitiated, a Single Keyword Ad Group structure looked like this:
- Campaign: Red Shoes
- Ad Group:
[red nike shoes] - Keyword:
[red nike shoes] - Ad Copy: "Buy Red Nike Shoes."
Why it Worked (2015-2020)
- Quality Score: It guaranteed a 10/10 Ad Relevance.
- Control: You could bid exactly $2.50 for "red nike shoes" and $1.50 for "nike shoes red".
- Transparency: You knew exactly where every penny went.
Why it Fails (2024-2026)
Three changes killed SKAGs:
- Close Variants: Google no longer respects Exact Match.
[red nike shoes]now matches to "red sneakers nike" and "nike running shoes red." Your granular ad groups are now competing against each other (Internal Competition). - Smart Bidding Signal Density: Bid algorithms need data volume to learn. A SKAG with 3 clicks/month has zero learning capability. It remains "Learning" forever.
- RSA (Responsive Search Ads): RSAs need 3,000+ impressions/month to optimize asset combinations. SKAGs starve RSAs of data.
The Result: SKAG accounts today have higher CPCs implies (due to low Quality Score from random close variants) and lower Conversion Rates (due to dumb bidding algorithms).
Part 2: The Hagakure Method (Japanese Efficiency)
"Hagakure" roughly translates to "Hidden by Leaves." In Google Ads, it refers to a structure popularized by Google Japan.
The Core Philosophy: Maximize Data Density per Ad Group to fuel Smart Bidding.
The New Architecture
Instead of 1,000 Ad Groups, you have 10.
- Campaign: Shoes
- Ad Group: Sneakers - Generic
- Keywords:
+nike +sneakers,[running shoes],"gym trainers"(Concept-based, not syntax-based). - Ad Copy: Dynamic Keyword Insertion handles the relevance.
- URL: A single landing page that handles all variations dynamically.
The Signal Density Equation
Smart Bidding effectiveness is a function of Conversion Volume per entity ($C_v$).
$$ \text{AlgorithmIQ} \approx \log(C_v) $$
- SKAG: 2 Conversions/Month -> IQ of a worm.
- Hagakure: 50 Conversions/Month -> IQ of a PhD student.
By retrieving similar keywords into one bucket, you give the algorithm the 50 conversions it needs to predict that "User on iPhone at 2 PM" = "High Value."
Part 3: STAGs (Single Topic Ad Groups) - The Middle Ground
For most advertisers, pure Hagakure is too broad. We recommend STAGs.
Definition: Grouping keywords by Theme/Intent, not syntax.
- Theme A: "Emergency Plumber"
- Keywords:
emergency plumber,24 hour plumbing,urgent leak fix. - Why? The intent is speed. The ad copy must say "Arriving in 30 mins."
- Keywords:
- Theme B: "Plumbing Installation"
- Keywords:
install toilet,new bathroom piping,plumbing renovation. - Why? The intent is project-based. The ad copy must say "Free Quote."
- Keywords:
Rule of Thumb: If the Ad Copy necessitates a different value proposition, it needs a new Ad Group. If you can use the same Ad Copy, consolidate it.
Part 4: The Migration Roadmap (Don't Break Everything)
Moving from SKAGs to STAGs/Hagakure is risky. If you pause everything and launch new broad campaigns, your ROAS will crash for 3 weeks (The Reset).
Here is the safe migration path.
Phase 1: Audit
Use this logic to identify consolidation candidates.
- Export your "Search Terms Report" for the last 90 days.
- Look for "Duplicate Search Terms" triggering ads from different Ad Groups.
- If "red shoes" triggers Ad Group A and Ad Group B, you have internal competition.
Phase 2: The "Seed" Campaign
Do not touch your SKAGs yet.
- Create a New Campaign: "Consolidated - Generic".
- Add your top 5 broad/phrase match keywords that cover the topic.
- Set Bidding Strategy to Maximize Conversions (with a budget cap).
- Crucial: Add the SKAG keywords as Negative Keywords to this new campaign to prevent overlap initially.
Phase 3: The Slow Kill
- As the Consolidated Campaign learns and gains conversions, slowly pause the underperforming SKAGs.
- Remove the negative keywords from the Consolidated campaign to let it "absorb" the traffic.
- Watch the CPA. It usually drops by 20% due to the algorithm finding cheaper inventory.
Part 5: URL Structure & Dynamic Replacement
One valid argument for SKAGs was Landing Page Relevance.
- Keyword: "Red Shoes" -> URL:
site.com/shoes/red - Keyword: "Blue Shoes" -> URL:
site.com/shoes/blue
In a consolidated group, how do you handle this?
Solution: Final URL Suffixes & IF Functions.
Do not send everyone to site.com/shoes.
Use ValueTrack Parameters.
Final URL: site.com/shoes?color=[ignore]&match=[keyword]
Better yet, use Ad Customizers for the ad copy, and robust site filters.
Part 6: Reporting in a Consolidated World
"If I group everything, how do I know which keyword is working?"
Answer: You don't need to know. The keyword is just a trigger. The Search Term is the truth.
Stop looking at the Keyword tab. Start looking at the Search Terms tab.
If "red shoes" (search term) is converting, but "blue shoes" (search term) is wasting money, ad "blue shoes" as a Negative Keyword to the ad group. You manage efficiency via Exclusion (Negatives), not Inclusion (micro-bidding).
Part 7: Account Structure Diagrams
The "Silo" Structure (Legacy)
- Campaign: Services
- AG: Plumbing (Exact)
- AG: Plumbing (Phrase)
- AG: Plumbing (Broad)
- AG: Emergency (Exact)
- AG: Emergency (Phrase)
- ... (50 Ad groups)
The "Modern" Structure (2026)
- Campaign: Services (Target CPA: $40)
- AG: Emergency (High Urgency)
- AG: General Plumbing (Low Urgency)
- AG: Installation (High Ticket)
Why this wins: The Smart Bidding algorithm at the Campaign Level now has data from all three ad groups (Shared Budget/Strategy), allowing it to optimize budget allocation dynamically in real-time.
Part 8: Naming Conventions For Sanity
When you consolidate, naming becomes critical for filtering.
Formula:
[Network] - [Country] - [Category] - [Match Type] - [Bidding]
Examples:
GS - US - Shoes - Broad - tCPAGDN - UK - Remarketing - NA - MaxConv
Tags: Use Campaign-level labels for:
Lifecycle: EvergreenLifecycle: PromoOwner: Kiril
Part 9: FAQs
Part 10: The Google Ads Editor "Hagakure" Workflow
Migrating an account manually in the browser interface is a recipe for carpal tunnel syndrome. You need to use Google Ads Editor.
Here is the engineering workflow to effectively "de-structure" your account.
Step 1: Export & Tag
- Download Recent Changes in Editor.
- Select all active ad groups.
- Add a Label:
Legacy_SKAG. - Export to CSV.
Step 2: The Spreadsheet pivot
You need to map your 1,000 SKAGs to your 10 new Hagakure groups.
- Open the CSV.
- Create a new column:
New_Ad_Group. - Use an Excel formula to map keywords.
- Formula:
=IF(ISNUMBER(SEARCH("emergency", A2)), "Emergency", "General")
- Formula:
- You now have a clean map.
Step 3: The Re-Import
- Create the new Campaign in Editor.
- Paste the mapped ad groups and keywords.
- Crucial: Set all match types to Broad (if using Smart Bidding) or Phrase.
- Post the changes.
Part 11: Automated Audit Script (JavaScript)
You cannot manage this manually. Use this Google Ads Script to identify Ad Groups that are "Gasping for air" (Low data density).
The "Zombie Group" Killer Script:
function main() {
// Config
var IMPRESSION_THRESHOLD = 500; // 30 Days
var TIME_RANGE = 'LAST_30_DAYS';
var campaignIterator = AdsApp.campaigns()
.withCondition("Status = ENABLED")
.get();
Logger.log("--- Audit Start ---");
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
var adGroupIterator = campaign.adGroups()
.withCondition("Status = ENABLED")
.withCondition("Impressions < " + IMPRESSION_THRESHOLD)
.forDateRange(TIME_RANGE)
.get();
while (adGroupIterator.hasNext()) {
var adGroup = adGroupIterator.next();
Logger.log("ZOMBIE AD GROUP: " + campaign.getName() + " > " + adGroup.getName() +
" | Impressions: " + adGroup.getStatsFor(TIME_RANGE).getImpressions());
}
}
}
How to use:
- Copy into Tools → Scripts.
- Run Preview.
- Any Ad Group that shows up in the log is a candidate for consolidation. It is not getting enough data to optimize.
Part 12: Case Study: The E-commerce Consolidation
Client Profile:
- Vertical: Luxury Apparel.
- Structure: 150 Campaigns, 3,000 SKAGs.
- Problem: CPA was $85 (Target $50). Volatility was extreme.
The "Before" State:
- Campaign:
Search - US - NonBrand - Red Silk Dress - Ad Group:
[red silk dress] - Ad Group:
[silk dress red] - Result: 50% of ad groups had 0 clicks in last 30 days. Smart bidding was reverting to "learning" constantly.
The "Action": We deleted 145 campaigns. We kept 5.
Dresses - GeneralDresses - SilkTopsBottomsAccessories
We set Target ROAS (600%) at the campaign level.
We utilized Broad Match keywords (e.g., silk dresses) to capture long-tail variations like "buy elegant silk evening wear" which we never had legal SKAGs for.
The "After" State (90 Days Later):
- Spend: Increased 40% (Algorithm found new inventory).
- ROAS: Increased from 350% to 640%.
- CPA: Dropped to $42.
- Management Time: Reduced by 80%.
Why it worked:
Consolidating data allowed the tROAS algorithm to see that "Users searching for silk on Sunday nights on iPhones" were highly profitable, regardless of the exact syntax they typed. The SKAG structure splintered this signal; the Hagakure structure unified it.
Part 13: The "Match Type" nuance (Broad vs Phrase)
A common fear is: "If I consolidate, won't I match to junk?"
The Safety Net: You must layer Audience Exclusions and Negative Keywords.
- Negative Keyword Lists: Maintain a "Master Negative" list applied to all campaigns. This protects you from "free", "jobs", "repair" (if you sell new), etc.
- Broad Match Modifier (BMM) is dead.
- Old BMM:
+red +shoes. - New Phrase:
"red shoes"covers the old BMM behavior. - Strategy: Start with Phrase Match in your Consolidated groups. Once you hit CPA targets, open 1-2 "Experimental" Ad Groups as Broad Match to scale volume.
- Old BMM:
Part 14: Dynamic Search Ads (DSA) as a "Catch-All"
In a Hagakure structure, you often miss very specific long-tail queries. This is where DSA fits in.
Structure:
- Campaign: Consolidated Search
- AG: Standard (Keywords)
- AG: DSA (Dynamic)
- Target:
URL Contains /products/ - Bid: Lower than your standard groups.
- Target:
Function: The DSA acts as a "vacuum" at the bottom of the campaign. Any query that doesn't match your keyword themes gets picked up by the DSA.
- Pro Tip: Add your "Keywords" as "Negatives" to the DSA group to ensure pure incrementality.
Part 15: Detailed Migration Checklist
Print this out.
| Phase | Task | Status | | :--- | :--- | :--- | | Audit | Run "Zombie Group" Script | [ ] | | Audit | Identify top 3 themes by volume | [ ] | | Setup | Create "Hagakure" Campaign Shell | [ ] | | Setup | Set Budget (Shared Budget Recco) | [ ] | | Setup | Apply "Master Negative List" | [ ] | | Launch | Add Theme 1 Keywords (Phrase) | [ ] | | Launch | Set tCPA (Conservative Target) | [ ] | | Monitor | Check "Search Terms" daily for 7 days | [ ] | | Scale | Pause Legacy SKAGs for Theme 1 | [ ] | | Scale | Add Theme 2 Keywords | [ ] |
Part 16: The Physics of Internal Competition (Why SKAGs actually increase CPC)
Many advertisers believe that splitting keywords gives them "cheaper" clicks because they can lower bids on specific terms. The math proves the opposite.
The "Second Price Auction" Flaw
Google Runs a second-price auction.
$$ \text{Price} = \text{AdRank of Next Bidder} / \text{QS} + 0.01 $$
When you have [red shoes] (Group A) and "red shoes" (Group B) competing for the same user query:
- Google calculates Ad Rank for both.
- It picks the winner (say, Group A).
- But... because Group B was also eligible and highly relevant, it effectively enters the auction against yourself or muddies the water for the "Next Bidder" calculation if Google decides to suppress one.
More importantly, Quality Score is normalized by Exact Match impression volume.
- If you split your data into 10 groups, each keyword has 1/10th the data.
- Google's confidence in your CTR prediction is lower.
- Lower Confidence = Lower Quality Score.
- Lower Quality Score = Higher CPC.
Consolidating to Hagakure aggregates the data. Google is "100% Confident" you have a 5% CTR. Your QS goes from 7 to 9. Your CPC drops by 20%.
Part 17: Excel Engineering for Account Cleanup
You cannot do this cleanup with just your eyes. You need Excel. Here are the formulas I use to audit structure.
1. The "Keyword Lenth" Test
Long-tail keywords (4+ words) usually don't need their own ad group in a Hagakure structure.
- Formula:
=LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ",""))+1 - Action: Filter for anything > 4 words. Move them to Broad Match in your main group or pause them if they have low volume.
2. The "Duplicate Stem" Finder
To find keywords that are essentially the same (e.g. "plumber new york" vs "new york plumber").
- Formula: Try a fuzzy lookup add-on, or simply sort Alphabetically and spot check.
- Better approach: Use the Google Ads Editor "Find Duplicates" tool.
- Open Editor → Tools → Find Duplicates.
- Select: "Same broad match intent".
- Run.
- Pause the ones with lower QS.
Part 18: Vertical-Specific Strategy: B2B vs Ecommerce
Hagakure looks different depending on your business model.
Scenario A: Ecommerce (The "Feed" Approach)
In Ecom, you have 10,000 SKUs.
- Do NOT make an Ad Group for every SKU.
- Structure:
- Campaign:
Womens - Shoes - Ad Group:
Sandals(Broad + Phrase) - Ad Group:
Boots(Broad + Phrase) - Product Feed: Attached to the campaign.
- Campaign:
- Why: Smart Shopping / PMax takes care of the specific SKU matching. Search Ads should focus on the Category intent.
Scenario B: B2B SaaS (The "Avatar" Approach)
In B2B, the keyword implies the job title.
- Structure:
- Campaign:
Software - Bottom Funnel - Ad Group:
Features("scheduling features", "time tracking") - Ad Group:
Competitors("vs Calendly", "alternative to Asana") - Ad Group:
Pricing("cost", "enterprise license")
- Campaign:
- Why: You want to funnel users into assets that match their stage.
- Features -> Landing Page with Feature Grid.
- Competitors -> Comparison Page.
- Pricing -> Request Quote Page.
- Note: Even here, we do NOT separate "scheduling software" and "software for scheduling". That is one Ad Group.
Part 19: The "Negative Keyword" Library (Your Defense System)
In a consolidated account, your Negative Keyword List determines your profitability. You should have these Tiered Lists applied:
Tier 1: The "Universal Toxic" List
Apply to ALL campaigns.
- "free", "crack", "torrent", "job", "salary", "internship", "resume", "login", "support", "customer service".
Tier 2: The "Conflict" List
Apply to Specific campaigns to force traffic shaping.
- Example: In your
Genericcampaign, add yourBrandname as a negative. This forces brand searches to trigger correctly in yourBrandcampaign (where bids are cheap), rather than mistakenly triggering a high-bid generic broad match keyword.
Tier 3: The "Competitor" List
Decide if you want to bid on competitors.
- If Yes: Create a dedicated Competitor Campaign. Add these terms as negatives to your standard campaigns.
- If No: Add competitor names to the Universal Negative list.
Part 20: The Psychology of Intent (Why Structure Matters)
Ultimately, an account structure is not just a filing system. It is a User Journey Map.
When a user types a query, they are in one of three mental states. Your structure must respect this.
1. Navigational Intent ("I want to go to [Brand]")
- Query: "Nike website", "Nike login".
- Structure: This belongs in a Brand Campaign.
- Bidding: Target Impression Share (100%). You are just holding the door open. You do not need "Smart Bidding" to find these people. They already found you.
2. Informational Intent ("I have a problem")
- Query: "best running shoes for flat feet", "how to fix leaky pipe".
- Structure: This belongs in a Top-of-Funnel (TOF) Generic Campaign.
- Bidding: Maximize Conversions (with a low CPA target).
- Asset Group: Use educational copy. "Guide to Running Shoes."
- Hagakure Advantage: Smart bidding can identify if this user is just reading or ready to buy based on their previous behavior. SKAGs cannot.
3. Transactional Intent ("I want to buy")
- Query: "buy nike pegasus 40 size 10", "emergency plumber price".
- Structure: This belongs in your Core Service/Product Campaign.
- Bidding: Target ROAS or Aggressive tCPA.
- Asset Group: Transactional copy. "Free Shipping", "Arriving in 30 mins".
The Mistake: SKAGs treat "best running shoes" (Info) and "buy running shoes" (Trans) as just two different strings of text. Hagakure combined with Broad Match allows the algorithm to bid $0.50 for the Informational user and $5.00 for the Transactional user within the same ad group, based on the real-time signal, not just the keyword syntax.
Glossary of Key Terms
SKAG (Single Keyword Ad Group): An obsolete structure where every ad group contains exactly one keyword in Exact Match.
Hagakure: A modern structure where ad groups are consolidated based on URL/Landing Page + Theme, often containing 10-50 keywords.
STAG (Single Topic Ad Group): The usage of themed ad groups. similar to Hagakure but slightly tighter control.
Impression Density: The volume of data passing through an entity (Ad Group or Campaign) per day. High density allows Smart Bidding to function.
Close Variants:
The mechanism by which Google matches a keyword like [red shoes] to queries like red sneakers. This feature essentially rendered SKAGs useless for isolation.
Zombie Ad Group: An ad group with fewer than ~500 impressions/month. It has insufficient data to optimize and drags down account health.
DSA (Dynamic Search Ads): Ads where Google generates the headline and picks the target URL based on your website content, not keywords.

About the Author
Performance marketing specialist with 6 years of experience in Google Ads, Meta Ads, and paid media strategy. Helps B2B and Ecommerce brands scale profitably through data-driven advertising.
Need this implemented for you?
Read the guide, or let our specialist team handle it while you focus on the big picture.
Get Your Free Audit