
Google Ads
- 70 installs
- 93 repo stars
- Updated May 14, 2026
- thatrebeccarae/claude-marketing
Helps with ai & agent building tasks.
About
google-ads is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- google-ads
- AI & Agent Building
- AI-coding skill
Google Ads by the numbers
- 70 all-time installs (skills.sh)
- +9 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #5,726 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/thatrebeccarae/claude-marketing --skill google-adsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 70 |
|---|---|
| repo stars | ★ 93 |
| Last updated | May 14, 2026 |
| Repository | thatrebeccarae/claude-marketing ↗ |
What it does
Helps with ai & agent building tasks.
Files
Google Ads
Expert-level guidance for Google Ads — auditing, building, and optimizing search, shopping, display, video, Performance Max, and demand gen campaigns.
Install
git clone https://github.com/thatrebeccarae/claude-marketing.git && cp -r claude-marketing/skills/google-ads ~/.claude/skills/Core Capabilities
Campaign Auditing & Optimization
- Full account audit covering structure, settings, bidding, keywords, ads, and tracking
- Quality Score optimization (expected CTR, ad relevance, landing page experience)
- Search term analysis and negative keyword management
- Budget allocation and pacing optimization
- Wasted spend identification and elimination
Campaign Types
- Search — Text ads on Google Search and Search Partners
- Shopping — Product Listing Ads from Google Merchant Center
- Performance Max — AI-driven cross-channel (Search, Shopping, Display, YouTube, Discover, Gmail, Maps)
- Display — Banner/responsive ads across Google Display Network (3M+ sites)
- Video — YouTube ads (in-stream, bumper, discovery, shorts)
- Demand Gen — Visual-first ads on YouTube, Discover, Gmail
- App — App install and engagement campaigns
Bidding Strategies
- Manual CPC / Enhanced CPC — Direct control, good for learning phases
- Target CPA — Optimize for cost per conversion
- Target ROAS — Optimize for return on ad spend
- Maximize Conversions / Maximize Conversion Value — Spend full budget optimally
- Target Impression Share — Competitive visibility
- Portfolio bid strategies for cross-campaign optimization
Audience Strategy
- First-party data: Customer Match, website visitors, app users
- Google audiences: In-market, affinity, detailed demographics, life events
- Custom audiences (by keywords, URLs, apps)
- Remarketing lists for Search Ads (RLSA)
- Optimized targeting vs observation mode
- Audience signals for Performance Max
Tracking & Measurement
- Google Tag (gtag.js) / Google Tag Manager implementation
- Conversion actions: website, phone calls, app, import, store visits
- Enhanced conversions (first-party data matching)
- Offline conversion import (GCLID / enhanced conversions for leads)
- Google Ads Data Hub and GA4 integration
- Attribution models: data-driven (default), last-click, cross-channel
Key Benchmarks
| Metric | Good | Great | Warning |
|---|---|---|---|
| Search CTR | 4-6% | 8%+ | <3% |
| Search CPC | Industry dependent | Below industry avg | Rising trend |
| Search Conv Rate | 3-5% | 7%+ | <2% |
| Quality Score | 7-8 | 9-10 | <6 |
| Impression Share (Brand) | 90%+ | 95%+ | <80% |
| Impression Share (Non-Brand) | 40-60% | 70%+ | <30% |
| PMax ROAS | 3-4x | 6x+ | <2x |
| Display CTR | 0.5-1% | 1.5%+ | <0.3% |
| YouTube View Rate | 15-25% | 30%+ | <10% |
Account Structure Best Practices
Account
├── Brand Search (Exact + Phrase match)
│ ├── Pure Brand
│ └── Brand + Product/Service modifiers
├── Non-Brand Search (by theme/intent)
│ ├── High-Intent / Bottom-Funnel keywords
│ ├── Mid-Funnel / Consideration keywords
│ └── Category / Broad keywords
├── Competitor Search (optional)
│ └── Competitor brand terms
├── Shopping (Standard)
│ ├── Top Performers (high priority)
│ ├── Category groups (medium priority)
│ └── Catch-All (low priority)
├── Performance Max
│ ├── Asset Groups by product category or audience theme
│ └── Audience signals per group
├── Display (if separate from PMax)
│ ├── Remarketing
│ └── Prospecting (in-market / custom)
├── YouTube / Video
│ ├── Brand awareness (bumper, in-stream)
│ └── Action / conversions (in-feed, in-stream)
└── Demand Gen
└── Visual-first prospectingWorkflow: Full Account Audit
When asked to audit a Google Ads account:
1. Conversion Tracking — Verify Google Tag, conversion actions, enhanced conversions, attribution model 2. Account Structure — Campaign organization, naming conventions, settings consistency 3. Budget & Bidding — Allocation across campaigns, bid strategy alignment with goals, target efficiency 4. Keyword Strategy — Match types, Quality Scores, search term relevance, negative keyword lists 5. Ad Copy — RSA asset quality (headlines, descriptions), pin usage, ad strength, extensions 6. Shopping / Merchant Center — Feed quality, disapprovals, competitive metrics, listing groups 7. Performance Max — Asset group quality, audience signals, URL expansion settings, cannibalizing Search 8. Audiences — First-party lists, remarketing, Customer Match, observation vs targeting 9. Landing Pages — Load speed, message match, conversion rate by landing page 10. Competitive Landscape — Auction insights, impression share losses (budget vs rank) 11. Recommendations — Prioritized by expected revenue impact with effort estimate
Performance Max Guidance
PMax-specific audit checklist:
- Asset group organization (themes, not catch-all)
- All asset types provided (text, image, video, logo)
- Audience signals configured (not left empty)
- URL expansion settings reviewed (exclude irrelevant pages)
- Search themes added for intent signals
- Brand exclusions applied
- Not cannibalizing high-performing standard Shopping/Search campaigns
- Conversion goals aligned (avoid mixing lead gen and ecommerce)
How to Use This Skill
Ask me questions like:
- "Audit my Google Ads account and find wasted spend"
- "My Quality Scores are low — help me diagnose and fix"
- "Design a Performance Max campaign structure for my ecommerce store"
- "Should I use Target CPA or Target ROAS?"
- "Help me build a negative keyword strategy"
- "My CPA is increasing — what should I investigate?"
- "Plan a YouTube advertising strategy for brand awareness"
- "Review my Google Merchant Center feed for issues"
For detailed Google Ads API reference, script templates, and advanced configurations, see REFERENCE.md.
Hard Rules
These constraints must never be violated in recommendations:
1. Never recommend Broad Match without Smart Bidding. Broad Match + Manual CPC = uncontrolled spend. 2. 3x Kill Rule: Flag any campaign/ad group with CPA >3x target for immediate pause or restructuring. 3. Enhanced Conversions must be recommended if not already active. Foundation for data quality. 4. Consent Mode v2 required for any account serving EU/EEA traffic. 5. Negative keyword lists required — minimum 3 themed lists (Competitor, Jobs, Free, Irrelevant). 6. Never recommend edits during active learning phase — wait for learning to complete or reset intentionally. 7. Brand and non-brand must be separated into distinct campaigns with independent budgets and bidding. 8. PMax must have brand exclusions when a brand Search campaign exists.
Scored Audit
When performing an account audit, load skills/shared/scoring-system.md for the weighted scoring algorithm and CHECKS.md for the 74-check Google Ads audit checklist. Produce a health score (0-100, grade A-F) with Quick Wins and a prioritized action plan.
# Google Ads API Configuration
# ============================
# This file is a template. Copy it to .env and fill in your values.
# NEVER commit .env to version control.
# Google Ads Customer ID (10-digit number, no dashes)
# Find in Google Ads: top-right corner of the UI
GOOGLE_ADS_CUSTOMER_ID=1234567890
# Google Ads Developer Token
# Apply at: https://developers.google.com/google-ads/api/docs/get-started/dev-token
GOOGLE_ADS_DEVELOPER_TOKEN=your-developer-token-here
# Path to Google OAuth2 credentials JSON file
# Google Cloud Console > APIs & Services > Credentials > OAuth 2.0 Client
GOOGLE_APPLICATION_CREDENTIALS=/path/to/oauth-credentials.json
# Google Ads Login Customer ID (MCC ID, if using a manager account)
# Leave blank if accessing a single account directly
GOOGLE_ADS_LOGIN_CUSTOMER_ID=
# How to set up:
# 1. Go to Google Cloud Console (console.cloud.google.com)
# 2. Create a project (or select existing)
# 3. Enable the Google Ads API
# 4. Create OAuth 2.0 credentials (Desktop app type)
# 5. Download the credentials JSON file
# 6. Apply for a developer token at the Google Ads API Center
# 7. Copy this file to .env and fill in your values
#
# NEVER commit .env or credentials JSON to version control!
Google Ads Audit Checklist
<!-- Total Checks: 74 | Categories: 6 | See skills/shared/scoring-system.md for weights and algorithm -->
Quick Reference
| Category | Weight | Checks |
|---|---|---|
| Conversion Tracking | 25% | G-CT1 through G-CT11 (11 checks) |
| Wasted Spend / Negatives | 20% | G-WS1 through G-WS8 (8 checks) |
| Account Structure | 15% | G-ST1 through G-ST12 (12 checks) |
| Keywords & Quality Score | 15% | G-KW1 through G-KW8 (8 checks) |
| Ads & Assets | 15% | G-AD1 through G-AD17 (17 checks) |
| Settings & Targeting | 10% | G-SE1 through G-SE18 (18 checks) |
---
Conversion Tracking (Weight: 25%)
G-CT1: Primary Conversion Action Exists [Critical, 5.0]
- Check: At least 1 Primary Conversion Action configured and receiving data
- Pass: Primary action exists and received conversions in last 30 days
- Warning: Primary action exists but 0 conversions in last 30 days
- Fail: No Primary Conversion Action configured
- Quick Win: Yes (5 min)
G-CT2: Enhanced Conversions Active [Critical, 5.0]
- Check: Enhanced conversions enabled for primary conversion actions
- Pass: Enhanced conversions active and verified
- Warning: Enabled but not verified (data quality unknown)
- Fail: Not enabled
- Quick Win: Yes (5 min)
G-CT3: Server-Side Tracking [High, 2.5]
- Check: Server-side GTM or Google Ads API conversion import is active
- Pass: Server-side tracking deployed and verified
- Warning: Planned but not yet deployed
- Fail: No server-side tracking (browser-only)
- Quick Win: No
G-CT4: Consent Mode v2 (EU/EEA) [Critical, 5.0]
- Check: Consent Mode v2 implemented for accounts serving EU/EEA traffic
- Pass: Advanced Consent Mode active with proper CMP integration
- Warning: Basic Consent Mode only
- Fail: Not implemented despite EU/EEA targeting
- N/A: Account does not target EU/EEA
- Quick Win: No
G-CT5: Conversion Window Matches Sales Cycle [Medium, 1.5]
- Check: Conversion window is appropriate for the business model
- Pass: Window matches sales cycle (7d ecommerce, 30-90d B2B, 30d lead gen)
- Warning: Default 30d without validation against actual sales cycle
- Fail: Window clearly mismatched (e.g., 7d window on 90d B2B sales cycle)
- Quick Win: Yes (2 min)
G-CT6: Macro vs Micro Conversion Separation [High, 2.5]
- Check: Only macro conversions (Purchase, Lead, Signup) set as Primary for bidding
- Pass: Primary actions are macro conversions only; micro events are Secondary
- Warning: Some micro events (AddToCart, PageView) set as Primary
- Fail: All events including micro conversions set as Primary (pollutes bidding)
- Quick Win: Yes (5 min)
G-CT7: Attribution Model [Medium, 1.5]
- Check: Data-driven attribution (DDA) is selected
- Pass: DDA active
- Warning: Last Click selected intentionally (documented reason)
- Fail: Legacy rule-based model still active (deprecated Sep 2025)
- Quick Win: Yes (2 min)
G-CT8: Conversion Value Assignment [High, 2.5]
- Check: Conversion values are assigned for bid optimization
- Pass: Dynamic values for ecommerce; value rules configured for lead gen
- Warning: Static values assigned (better than nothing)
- Fail: No conversion values assigned
- Quick Win: No
G-CT9: No Duplicate Conversion Counting [Critical, 5.0]
- Check: GA4 import and native Google Ads tag are not counting the same conversion
- Pass: No duplicate counting between GA4 and Google Ads
- Warning: —
- Fail: Both GA4 import and native tag counting same conversion action
- Quick Win: Yes (10 min)
G-CT10: GA4 Linked and Flowing [High, 2.5]
- Check: GA4 property linked to Google Ads with data flowing correctly
- Pass: Linked, audiences shared, data consistent
- Warning: Linked but data discrepancies present
- Fail: Not linked
- Quick Win: Yes (5 min)
G-CT11: Google Tag Firing Correctly [Critical, 5.0]
- Check: gtag.js or GTM container firing on all relevant pages
- Pass: Tag firing correctly on all pages
- Warning: Firing on most pages (>90%) but missing some
- Fail: Tag missing or broken on key conversion pages
- Quick Win: No
---
Wasted Spend / Negatives (Weight: 20%)
G-WS1: Search Term Review Recency [Critical, 5.0]
- Check: Search terms have been reviewed recently
- Pass: Reviewed within last 14 days
- Warning: Reviewed within last 30 days
- Fail: Not reviewed in >30 days
- Quick Win: Yes (15 min)
G-WS2: Negative Keyword Lists Exist [Critical, 5.0]
- Check: Themed negative keyword lists are configured
- Pass: ≥3 themed lists (e.g., Competitor, Jobs/Careers, Free/Cheap, Irrelevant)
- Warning: 1-2 lists exist
- Fail: No negative keyword lists
- Quick Win: Yes (10 min)
G-WS3: Account-Level Negatives Applied [High, 2.5]
- Check: Negative keyword lists are applied broadly
- Pass: Lists applied at account level or to all relevant campaigns
- Warning: Applied to some campaigns only
- Fail: Lists exist but not applied
- Quick Win: Yes (5 min)
G-WS4: Irrelevant Search Term Spend [Critical, 5.0]
- Check: Percentage of spend going to irrelevant search terms
- Pass: <5% of spend on irrelevant terms (last 30 days)
- Warning: 5-15% on irrelevant terms
- Fail: >15% on irrelevant terms
- Quick Win: No (requires ongoing management)
G-WS5: Broad Match + Smart Bidding Pairing [Critical, 5.0]
- Check: No Broad Match keywords running on Manual CPC
- Pass: All Broad Match keywords use Smart Bidding (Target CPA, Target ROAS, Max Conversions)
- Warning: —
- Fail: Broad Match + Manual CPC active (uncontrolled spend)
- Quick Win: Yes (5 min — switch to Smart Bidding or Exact Match)
G-WS6: Close Variant Pollution [High, 2.5]
- Check: Exact/Phrase match keywords not triggering irrelevant close variants
- Pass: Close variant matches are relevant (>90% relevant)
- Warning: Minor close variant issues (10-20% irrelevant)
- Fail: Significant irrelevant close variant spend (>20%)
- Quick Win: No
G-WS7: Search Term Visibility [Medium, 1.5]
- Check: Percentage of search term spend that is visible (not hidden by Google)
- Pass: >60% of search term spend is visible
- Warning: 40-60% visible
- Fail: <40% visible (limited optimization ability)
- Quick Win: No
G-WS8: Zero-Conversion Keywords [High, 2.5]
- Check: Keywords with high click volume but zero conversions
- Pass: No keywords with >100 clicks and 0 conversions
- Warning: 1-3 such keywords
- Fail: >3 keywords with >100 clicks and 0 conversions
- Quick Win: Yes (pause or restructure — 10 min)
---
Account Structure (Weight: 15%)
G-ST1: Campaign Naming Convention [Medium, 1.5]
- Check: Consistent naming pattern across campaigns
- Pass: Consistent pattern (e.g., [Brand]_[Type]_[Geo]_[Target])
- Warning: Partially consistent
- Fail: No naming convention
- Quick Win: No
G-ST2: Ad Group Naming Convention [Medium, 1.5]
- Check: Ad group names follow campaign naming pattern
- Pass: Consistent with campaign naming
- Warning: Partially consistent
- Fail: No naming convention
- Quick Win: No
G-ST3: Single Theme Ad Groups [High, 2.5]
- Check: Each ad group targets one keyword theme
- Pass: ≤10 keywords per ad group, all same theme
- Warning: 11-20 keywords with consistent theme
- Fail: 20+ unrelated keywords (theme drift)
- Quick Win: No
G-ST4: Campaign Count Per Objective [High, 2.5]
- Check: Campaign proliferation is controlled
- Pass: ≤5 campaigns per funnel stage/objective
- Warning: 6-8 campaigns per objective
- Fail: >8 campaigns per objective (fragmented data, slow learning)
- Quick Win: No
G-ST5: Brand vs Non-Brand Separation [Critical, 5.0]
- Check: Brand and non-brand keywords in separate campaigns
- Pass: Fully separated with independent budgets and bidding
- Warning: —
- Fail: Brand and non-brand mixed in same campaign
- Quick Win: Yes (10 min to create new campaign and move keywords)
G-ST6: PMax Present for Eligible Accounts [Medium, 1.5]
- Check: Performance Max tested for accounts with conversion history
- Pass: PMax active with proper asset groups
- Warning: PMax tested but paused
- Fail: No PMax tested despite eligibility (ecom with feed, or 50+ conversions/month)
- Quick Win: No
G-ST7: Search + PMax Brand Overlap [High, 2.5]
- Check: Brand exclusions configured in PMax when brand Search campaign exists
- Pass: Brand exclusions active in PMax
- Warning: Partial brand exclusions
- Fail: No brand exclusions in PMax alongside brand Search (cannibalization)
- Quick Win: Yes (5 min)
G-ST8: Budget Allocation Matches Priority [High, 2.5]
- Check: Top-performing campaigns are not budget-constrained
- Pass: Top performers not limited by budget
- Warning: Minor budget constraints on top performers
- Fail: Top performers severely budget-limited while low performers have excess budget
- Quick Win: Yes (5 min — reallocate)
G-ST9: Campaign Daily Budget Pacing [Medium, 1.5]
- Check: Campaigns not exhausting budget too early in the day
- Pass: No campaigns hitting cap before 6 PM
- Warning: 1-2 campaigns hitting cap early
- Fail: Multiple campaigns capped before noon
- Quick Win: Yes (5 min)
G-ST10: Ad Schedule Configured [Low, 0.5]
- Check: Ad scheduling set for businesses with operating hours
- Pass: Schedule configured matching business hours
- Warning: —
- Fail: No schedule despite clear business hours (e.g., local service)
- N/A: 24/7 businesses
- Quick Win: Yes (5 min)
G-ST11: Geographic Targeting Method [High, 2.5]
- Check: Location targeting uses "People in" not "People in or interested in"
- Pass: "People in" selected for local/regional businesses
- Warning: —
- Fail: "People in or interested in" for local business (wasted spend on out-of-area)
- Quick Win: Yes (2 min)
G-ST12: Network Settings [High, 2.5]
- Check: Search Partner and Display Network settings are intentional
- Pass: Search Partners and Display Network disabled for Search campaigns (unless intentional)
- Warning: Search Partners ON but monitored
- Fail: Display Network ON for Search campaign (unintentional)
- Quick Win: Yes (2 min)
---
Keywords & Quality Score (Weight: 15%)
G-KW1: Account-Wide Average Quality Score [High, 2.5]
- Check: Impression-weighted average Quality Score across account
- Pass: Average QS ≥7
- Warning: QS 5-6
- Fail: QS ≤4
- Quick Win: No
G-KW2: Critical Low QS Keywords [Critical, 5.0]
- Check: Percentage of keywords with QS ≤3
- Pass: <10% of keywords with QS ≤3
- Warning: 10-25% with QS ≤3
- Fail: >25% with QS ≤3
- Quick Win: No
G-KW3: Expected CTR Component [High, 2.5]
- Check: Expected CTR Quality Score sub-component
- Pass: <20% of keywords with "Below Average" expected CTR
- Warning: 20-35% Below Average
- Fail: >35% Below Average
- Quick Win: No
G-KW4: Ad Relevance Component [High, 2.5]
- Check: Ad relevance Quality Score sub-component
- Pass: <20% of keywords with "Below Average" ad relevance
- Warning: 20-35% Below Average
- Fail: >35% Below Average
- Quick Win: No
G-KW5: Landing Page Experience Component [High, 2.5]
- Check: Landing page experience Quality Score sub-component
- Pass: <15% of keywords with "Below Average" landing page experience
- Warning: 15-30% Below Average
- Fail: >30% Below Average
- Quick Win: No
G-KW6: Top Keyword Quality Scores [Medium, 1.5]
- Check: Quality Scores for highest-spend keywords
- Pass: Top 20 spend keywords all have QS ≥7
- Warning: Some top keywords at QS 5-6
- Fail: Top keywords with QS ≤4
- Quick Win: No
G-KW7: Zero-Impression Keywords [Medium, 1.5]
- Check: Keywords with no impressions in last 30 days
- Pass: No keywords with 0 impressions (30 days)
- Warning: <10% zero-impression keywords
- Fail: >10% of keywords with 0 impressions (dead weight)
- Quick Win: Yes (5 min — pause or remove)
G-KW8: Keyword-to-Ad Relevance [High, 2.5]
- Check: Ad headlines contain primary keyword variants from ad group
- Pass: Headlines contain primary keyword variants
- Warning: Partial keyword inclusion
- Fail: No keyword variants in ad headlines (poor relevance signal)
- Quick Win: No
---
Ads & Assets (Weight: 15%)
G-AD1: RSA Per Ad Group [High, 2.5]
- Check: Responsive Search Ads present in each ad group
- Pass: ≥1 RSA per ad group (≥2 recommended)
- Warning: 1 RSA per ad group
- Fail: Ad groups without any RSA
- Quick Win: No
G-AD2: RSA Headline Count [High, 2.5]
- Check: Number of unique headlines per RSA
- Pass: ≥8 unique headlines (ideal: 12-15)
- Warning: 3-7 headlines
- Fail: <3 headlines
- Quick Win: No
G-AD3: RSA Description Count [Medium, 1.5]
- Check: Number of descriptions per RSA
- Pass: ≥3 descriptions (ideal: 4)
- Warning: 2 descriptions
- Fail: <2 descriptions
- Quick Win: No
G-AD4: RSA Ad Strength [High, 2.5]
- Check: Google's Ad Strength rating for RSAs
- Pass: All RSAs rated "Good" or "Excellent"
- Warning: Some RSAs rated "Average"
- Fail: Any RSA with "Poor" Ad Strength
- Quick Win: No
G-AD5: RSA Pinning Strategy [Medium, 1.5]
- Check: Strategic use of headline/description pinning
- Pass: Strategic pinning (1-2 positions, 2-3 variants each)
- Warning: Over-pinned (all positions fixed)
- Fail: —
- Quick Win: No
G-AD6: PMax Asset Group Density [Critical, 5.0]
- Check: Asset completeness in Performance Max asset groups
- Pass: ≥20 images, ≥5 logos, ≥5 videos per asset group (maximum density)
- Warning: 5-19 images, 1-4 logos, or 1-4 videos
- Fail: <5 images OR 0 logos OR 0 videos
- Quick Win: No
G-AD7: PMax Video Assets [High, 2.5]
- Check: Native video present in PMax (not auto-generated)
- Pass: Native video in all formats (16:9, 1:1, 9:16)
- Warning: 1-2 video formats only
- Fail: No native video (auto-generated only)
- Quick Win: No
G-AD8: PMax Asset Group Count [Medium, 1.5]
- Check: Number of asset groups per PMax campaign
- Pass: ≥2 asset groups per PMax (segmented by intent/theme)
- Warning: 1 asset group
- Fail: —
- Quick Win: No
G-AD9: PMax Final URL Expansion [High, 2.5]
- Check: Final URL expansion setting reviewed
- Pass: Configured intentionally (ON for discovery, OFF for control)
- Warning: —
- Fail: Default ON without review (may send traffic to irrelevant pages)
- Quick Win: Yes (2 min)
G-AD10: Ad Copy Keyword Relevance [High, 2.5]
- Check: Ad headlines contain primary keyword variants
- Pass: Headlines contain primary keyword variants from ad group
- Warning: Partial keyword inclusion
- Fail: No keyword relevance in headlines
- Quick Win: No
G-AD11: Ad Copy Freshness [Medium, 1.5]
- Check: New ad copy tested recently
- Pass: New ad copy tested within last 90 days
- Warning: —
- Fail: No new ads in >90 days
- Quick Win: No
G-AD12: CTR vs Industry Benchmark [High, 2.5]
- Check: Click-through rate compared to industry average
- Pass: CTR ≥ industry average
- Warning: CTR 50-100% of industry average
- Fail: CTR <50% of industry average
- Quick Win: No
G-AD13: PMax Audience Signals [High, 2.5]
- Check: Custom audience signals configured per PMax asset group
- Pass: Custom audience signals with first-party data
- Warning: Generic signals only
- Fail: No audience signals configured
- Quick Win: Yes (10 min)
G-AD14: PMax Ad Strength [High, 2.5]
- Check: PMax asset group Ad Strength rating
- Pass: "Good" or "Excellent"
- Warning: "Average"
- Fail: "Poor"
- Quick Win: No
G-AD15: PMax Brand Cannibalization [High, 2.5]
- Check: Percentage of PMax conversions from brand terms
- Pass: <15% of PMax conversions from brand terms
- Warning: 15-30% from brand terms
- Fail: >30% from brand terms (PMax inflating results via brand capture)
- Quick Win: No
G-AD16: PMax Search Themes [Medium, 1.5]
- Check: Search themes configured for intent signals
- Pass: Search themes configured (up to 50 per asset group)
- Warning: <5 search themes
- Fail: No search themes configured
- Quick Win: Yes (10 min)
G-AD17: PMax Negative Keywords [High, 2.5]
- Check: Brand and irrelevant negative keywords applied to PMax
- Pass: Negatives applied (up to 10,000)
- Warning: Some negatives applied
- Fail: No negative keywords in PMax
- Quick Win: Yes (10 min)
---
Settings & Targeting (Weight: 10%)
G-SE1: Sitelink Extensions [High, 2.5]
- Check: Sitelink assets configured
- Pass: ≥4 sitelinks per campaign
- Warning: 1-3 sitelinks
- Fail: No sitelinks
- Quick Win: Yes (10 min)
G-SE2: Callout Extensions [Medium, 1.5]
- Check: Callout assets configured
- Pass: ≥4 callouts per campaign
- Warning: 1-3 callouts
- Fail: No callouts
- Quick Win: Yes (5 min)
G-SE3: Structured Snippets [Medium, 1.5]
- Check: Structured snippet assets configured
- Pass: ≥1 structured snippet set
- Warning: —
- Fail: No structured snippets
- Quick Win: Yes (5 min)
G-SE4: Image Extensions [Medium, 1.5]
- Check: Image assets active for Search campaigns
- Pass: Image extensions active
- Warning: —
- Fail: No image extensions
- Quick Win: Yes (10 min)
G-SE5: Call Extensions [Medium, 1.5]
- Check: Call assets with tracking for phone-based businesses
- Pass: Call extensions with call tracking enabled
- Warning: Call extension without call tracking
- Fail: No call extension for phone-based business
- N/A: Business does not rely on phone calls
- Quick Win: Yes (5 min)
G-SE6: Lead Form Extensions [Low, 0.5]
- Check: Lead form assets tested for lead gen accounts
- Pass: Lead form active with CRM integration
- Warning: —
- Fail: Not tested for lead gen account
- N/A: Non-lead gen accounts
- Quick Win: No
G-SE7: Audience Segments in Observation [High, 2.5]
- Check: Remarketing and in-market audiences applied in Observation mode
- Pass: Multiple audience segments applied in Observation mode
- Warning: Some audiences applied
- Fail: No audience signals (missing bid adjustment data)
- Quick Win: Yes (10 min)
G-SE8: Customer Match Lists [High, 2.5]
- Check: Customer Match lists uploaded and maintained
- Pass: Customer Match list uploaded, refreshed within 30 days
- Warning: List >30 days old
- Fail: No Customer Match lists
- Quick Win: No
G-SE9: Placement Exclusions [High, 2.5]
- Check: Account-level placement exclusions for Display/PMax
- Pass: Account-level exclusions for games, apps, MFA sites
- Warning: Campaign-level exclusions only
- Fail: No placement exclusions
- Quick Win: Yes (10 min)
G-SE10: Landing Page Mobile Speed [High, 2.5]
- Check: Mobile landing page performance
- Pass: Mobile LCP <2.5s (ideal <2.0s)
- Warning: LCP 2.5-4.0s
- Fail: LCP >4.0s
- Quick Win: No
G-SE11: Landing Page Relevance [High, 2.5]
- Check: Landing page H1/title matches ad group keyword theme
- Pass: Clear message match between ad and landing page
- Warning: Partial relevance
- Fail: No relevance to ad group theme (generic homepage)
- Quick Win: No
G-SE12: Landing Page Schema Markup [Medium, 1.5]
- Check: Structured data (schema.org) on landing pages
- Pass: Product/FAQ/Service schema present
- Warning: —
- Fail: No schema markup
- Quick Win: No
G-SE13: Smart Bidding Strategy Active [High, 2.5]
- Check: Automated bidding on campaigns with sufficient conversion data
- Pass: All campaigns with ≥15 conversions/30d use Smart Bidding
- Warning: Partially automated
- Fail: Manual CPC on campaigns with sufficient conversion data
- Quick Win: Yes (5 min)
G-SE14: Target CPA/ROAS Reasonableness [Critical, 5.0]
- Check: Bid targets are realistic based on historical performance
- Pass: Targets within 20% of historical performance
- Warning: Targets 20-50% off historical
- Fail: Target CPA <50% of actual CPA (will severely limit delivery)
- Quick Win: Yes (5 min — adjust targets)
G-SE15: Learning Phase Status [High, 2.5]
- Check: Percentage of campaigns in Learning or Learning Limited
- Pass: <25% of campaigns in Learning/Learning Limited
- Warning: 25-40% in learning
- Fail: >40% in learning
- Quick Win: No
G-SE16: Budget-Constrained Campaigns [High, 2.5]
- Check: Top performers showing "Eligible" vs "Limited by Budget"
- Pass: Top performers not budget-constrained
- Warning: Minor budget limitation
- Fail: Top performers severely budget-limited
- Quick Win: Yes (5 min — reallocate budget)
G-SE17: Manual CPC Justification [Medium, 1.5]
- Check: Manual CPC only used where appropriate
- Pass: Manual CPC only on campaigns with <15 conversions/month
- Warning: Manual CPC with 15-30 conversions/month
- Fail: Manual CPC with >30 conversions/month (should use Smart Bidding)
- Quick Win: Yes (5 min)
G-SE18: Portfolio Bid Strategies [Medium, 1.5]
- Check: Low-volume campaigns grouped into portfolio strategies
- Pass: Low-volume campaigns (<15 conv/month) grouped into portfolios
- Warning: —
- Fail: Multiple <15 conversion campaigns running independently (insufficient data per strategy)
- Quick Win: Yes (10 min)
---
Context Notes
- ECPC deprecation (March 2025): Enhanced CPC is no longer available for new campaigns. Existing ECPC campaigns should migrate to Target CPA, Target ROAS, or Maximize Conversions.
- Call Campaigns sunset (Feb 2026): Google stopped allowing new Call campaigns in February 2026; existing ones serve until February 2027. Migrate to Search campaigns with call assets.
- Power Pack framework: Google recommends PMax + Demand Gen + AI Max for Search as a unified campaign stack.
- AI Max for Search (2025): Extends broad match and automated creative to Search campaigns. Evaluate if account has sufficient conversion data.
---
Quick Wins Summary
| Check | Fix | Time |
|---|---|---|
| G-CT2 — Enhanced Conversions | Enable in conversion settings | 5 min |
| G-ST11 — Location targeting | Switch to "People in" your targeted locations | 2 min |
| G-WS2 — Negative keyword lists | Create initial themed negative lists | 10 min |
| G-WS5 — Broad Match + Manual CPC | Switch to Smart Bidding or change to Exact Match | 5 min |
| G-ST12 — Network settings | Disable Display Network on Search campaigns | 2 min |
| G-ST5 — Brand separation | Split brand keywords into separate campaign | 10 min |
| G-SE1 — Sitelink extensions | Add ≥4 sitelinks to campaigns | 10 min |
| G-SE14 — Bid target reasonableness | Adjust CPA/ROAS targets to within 20% of historical | 5 min |
| G-AD9 — PMax URL expansion | Review and set intentionally | 2 min |
| G-ST7 — PMax brand exclusions | Add brand exclusions to PMax | 5 min |
Google Ads Skill — Examples
Realistic examples showing how to use the Google Ads skill for audits, diagnostics, and optimization.
---
1. Full Account Audit
User Request:
"Run a full audit on our Google Ads account. We're spending $45K/month across Search, Shopping, and Performance Max but CPA has been creeping up for the last 3 months."
Analysis Steps: 1. Pull campaign inventory with spend, conversions, CPA, and ROAS for last 90 days — compare month-over-month trend 2. Check conversion tracking setup: verify Google Tag firing, conversion actions, attribution model, and enhanced conversions status 3. Review account structure: campaign naming conventions, ad group themes, match type strategy, negative keyword lists 4. Analyze budget allocation vs performance: identify campaigns over/under-spending relative to efficiency 5. Compile findings into prioritized recommendations with estimated impact
Sample Output:
Account Overview (Last 90 Days)
| Campaign | Type | Monthly Spend | Conv. | CPA | ROAS | Trend |
|---|---|---|---|---|---|---|
| Brand Search | Search | $4,200 | 312 | $13.46 | 8.2x | Stable |
| NB - High Intent | Search | $12,800 | 186 | $68.82 | 3.1x | CPA +18% |
| NB - Category | Search | $6,400 | 54 | $118.52 | 1.4x | CPA +31% |
| Shopping - Top SKUs | Shopping | $8,100 | 142 | $57.04 | 4.6x | Stable |
| Shopping - Catch All | Shopping | $3,200 | 28 | $114.29 | 1.8x | Declining |
| Performance Max | PMax | $10,300 | 97 | $106.19 | 2.3x | CPA +24% |
Key Findings
1. Conversion tracking gap: Enhanced conversions not enabled. Estimated 15-20% of conversions unattributed, inflating reported CPA. 2. NB - Category campaign: CPA up 31% with only 54 conversions/month. Broad match keywords triggering irrelevant queries — 38% of search terms have zero conversions. 3. PMax cannibalizing brand: Insights report shows 22% of PMax conversions come from brand search terms. Brand campaign impression share dropped from 94% to 81%. 4. Shopping catch-all: 140 products with zero clicks in 60 days dragging down campaign Quality Score signals. 5. No audience layering: Zero remarketing lists applied to Search campaigns. No Customer Match uploaded.
Recommendations (Priority Order)
| # | Action | Expected Impact | Effort |
|---|---|---|---|
| 1 | Enable enhanced conversions | Recover 15-20% lost attribution, improve Smart Bidding signals | Low |
| 2 | Add brand exclusions to PMax | Restore brand Search impression share to 94%+, reduce PMax CPA | Low |
| 3 | Overhaul NB - Category negatives | Cut wasted spend ~$2K/month, reduce CPA by 20-25% | Medium |
| 4 | Upload Customer Match list + build RLSA | Improve conversion rates on non-brand Search by 15-30% | Medium |
| 5 | Prune zero-click Shopping products into separate low-bid group | Reallocate ~$800/month to top performers | Low |
---
2. Quality Score Diagnosis
User Request:
"Most of our non-brand keywords have Quality Scores of 4-5. CPCs are really high compared to competitors. What's going on and how do we fix it?"
Analysis Steps: 1. Pull Quality Score breakdown (expected CTR, ad relevance, landing page experience) for all enabled keywords 2. Segment by ad group to identify whether the issue is systemic or isolated 3. Cross-reference low-QS keywords with ad copy and landing page URLs to find mismatches 4. Identify the dominant QS sub-component dragging scores down 5. Prioritize fixes by spend-weighted impact
Sample Output:
Quality Score Distribution (Enabled Keywords)
| QS | Keyword Count | % of Spend | Avg CPC |
|---|---|---|---|
| 9-10 | 12 | 8% | $2.14 |
| 7-8 | 34 | 22% | $3.87 |
| 5-6 | 68 | 41% | $6.52 |
| 3-4 | 43 | 24% | $9.18 |
| 1-2 | 8 | 5% | $12.40 |
Sub-Component Analysis
| Component | Below Average | Average | Above Average |
|---|---|---|---|
| Expected CTR | 31% | 52% | 17% |
| Ad Relevance | 48% | 39% | 13% |
| Landing Page Exp. | 62% | 30% | 8% |
Root cause: Landing page experience is the primary drag, with 62% of keywords rated "Below Average." Ad relevance is the secondary issue.
Top 10 Keywords by Wasted QS Spend
| Keyword | QS | eCTR | Ad Rel. | LP Exp. | Monthly Spend | Issue |
|---|---|---|---|---|---|---|
| [crm software pricing] | 3 | Avg | Below | Below | $1,840 | LP is homepage, not pricing page |
| "project management tool" | 4 | Avg | Below | Below | $1,620 | Ad copy mentions "solutions" not "tool" |
| [employee onboarding platform] | 4 | Below | Below | Avg | $1,410 | Ad group has 22 keywords, poor theme |
| ... |
Fix Priority
1. Landing pages (highest impact): Map each ad group to a dedicated landing page matching keyword intent. The homepage is the landing page for 73% of ad groups — this is the single biggest QS penalty. 2. Ad relevance: Restructure ad groups to 5-10 tightly themed keywords each. Write RSA headlines that include the exact keyword themes per group. 3. Expected CTR: After fixing LP and ad relevance, CTR will improve organically. Add sitelink and callout extensions to improve click-through.
Estimated impact: Improving QS from avg 5.2 to 7.0 would reduce CPCs by ~25% ($18K annual savings at current spend).
---
3. Performance Max Audit
User Request:
"We launched Performance Max 6 weeks ago to replace our Display campaigns. Spend is $8K/month but we can't tell what's working. Can you audit it?"
Analysis Steps: 1. Review asset group structure, audience signals, and URL expansion settings 2. Pull Insights report data: top-performing asset combinations, search categories, audience segments 3. Check for Search/Shopping cannibalization by comparing pre/post PMax metrics on existing campaigns 4. Evaluate asset quality ratings and identify gaps 5. Assess whether PMax conversion data is incremental or shifted from other campaigns
Sample Output:
Asset Group Review
| Asset Group | Assets Provided | Asset Strength | Audience Signals | Issues |
|---|---|---|---|---|
| All Products | 8 headlines, 3 descriptions, 6 images, 0 videos, 1 logo | Average | None configured | No video, no audience signals |
Critical issues found:
1. Single asset group for all products: No segmentation by category or audience theme. Google cannot optimize creative per segment. 2. No audience signals: PMax is running fully blind on prospecting. Without signals, it defaults to the broadest possible targeting — likely why efficiency is low. 3. No video assets: Google auto-generates low-quality videos from images. These perform poorly on YouTube inventory and waste budget. 4. URL expansion ON with no exclusions: PMax is sending traffic to blog posts, careers page, and support docs. 18% of landing page URLs are non-commercial.
Cannibalization Check
| Metric | Brand Search (Pre-PMax) | Brand Search (Post-PMax) | Delta |
|---|---|---|---|
| Impressions | 24,100 | 19,300 | -20% |
| Conversions | 186 | 148 | -20% |
| Impression Share | 93% | 78% | -15pts |
PMax is capturing brand queries. Brand Search lost 20% of volume since PMax launch.
Recommendations
| # | Action | Impact |
|---|---|---|
| 1 | Add brand exclusions to PMax immediately | Restores brand Search volume, removes fake "incremental" conversions from PMax reporting |
| 2 | Split into 3-4 asset groups by product category | Enables per-category creative optimization and audience targeting |
| 3 | Configure audience signals: Customer Match list + in-market segments per group | Gives PMax a starting point for prospecting, faster learning |
| 4 | Upload 2-3 real video assets (15s and 30s) | Replaces auto-generated videos, improves YouTube placement quality |
| 5 | Exclude non-commercial URLs from URL expansion | Prevents traffic to blog/careers/support pages |
---
4. Wasted Spend Analysis
User Request:
"We feel like we're wasting money on Google Ads but don't know where. Can you find where spend is being wasted and tell us what to cut?"
Analysis Steps: 1. Pull search term report for last 30 days — flag terms with spend but zero conversions 2. Identify keywords with high spend and CPA above 2x target 3. Review device, geo, day-of-week, and hour-of-day performance for bid adjustment opportunities 4. Check for audience overlap and competing campaigns bidding on the same queries
Sample Output:
Wasted Spend Summary (Last 30 Days)
| Category | Wasted Spend | % of Total | Action |
|---|---|---|---|
| Irrelevant search terms | $3,840 | 12.8% | Add negatives |
| High-CPA keywords (>2x target) | $2,960 | 9.9% | Pause or restructure |
| Low-performing devices (tablets) | $1,120 | 3.7% | Bid adjustment -50% |
| Off-hours spend (11pm-6am) | $890 | 3.0% | Ad schedule exclusion |
| Search Partner network | $1,450 | 4.8% | Disable on 3 campaigns |
| Total identifiable waste | $10,260 | 34.2% |
Top Irrelevant Search Terms (by spend, zero conversions)
| Search Term | Impressions | Clicks | Spend | Triggered By |
|---|---|---|---|---|
| free crm download | 1,420 | 86 | $412 | "crm software" (broad) |
| crm developer api documentation | 890 | 52 | $338 | "crm platform" (broad) |
| what is a crm | 2,100 | 71 | $284 | "crm" (broad) |
| crm jobs hiring | 640 | 44 | $261 | "crm" (broad) |
| salesforce vs hubspot | 780 | 38 | $228 | "crm comparison" (phrase) |
Recommended Negative Keyword List
Account-level negatives (apply to all Search campaigns):
- free
- download
- api
- documentation
- developer
- jobs
- hiring
- salary
- tutorial
- what is
- reddit
- quoraBudget Reallocation
| From | To | Amount | Rationale |
|---|---|---|---|
| NB - Category (broad) | NB - High Intent (exact/phrase) | $3,000/mo | Shift from low-intent to high-intent queries |
| Search Partners | Brand Search | $1,450/mo | Brand IS is only 81%, competitors capturing share |
| Off-hours spend | Peak hours (9am-5pm) | $890/mo | 78% of conversions happen during business hours |
---
5. Shopping Campaign Optimization
User Request:
"Our Shopping campaigns are underperforming versus competitors. Products are showing but CTR and conversion rates are low. How do we improve?"
Analysis Steps: 1. Audit Merchant Center feed: title quality, image compliance, missing attributes, disapprovals 2. Review product group structure and bid segmentation 3. Pull competitive metrics: benchmark CTR, CPC, and impression share vs category averages 4. Identify top and bottom performing product segments 5. Check for supplemental feed opportunities
Sample Output:
Feed Health Check
| Metric | Your Account | Benchmark | Status |
|---|---|---|---|
| Products approved | 842 / 910 (92.5%) | 97%+ | Needs attention |
| Title optimization score | Low | High | Primary issue |
| Missing GTINs | 124 products | 0 | Disapprovals likely |
| Image issues | 18 products | 0 | Promotional overlays |
| Price competitiveness | 34th percentile | 50th+ | Below average |
Feed Quality Issues
| Issue | Product Count | Impact | Fix |
|---|---|---|---|
| Titles are brand-only (e.g., "Widget Pro") | 380 | Low CTR — no key attributes in title | Rewrite: Brand + Type + Color + Size + Material |
| Missing GTINs | 124 | Suppressed from some auctions | Add UPC/EAN from manufacturer |
| Promotional overlay on images | 18 | Policy disapproval | Use clean product-on-white images |
| Missing product_type | 290 | Poor segmentation | Add 3-level product type taxonomy |
| No custom labels | 910 | Cannot segment by margin or velocity | Add custom_label_0: margin tier, custom_label_1: best seller |
Competitive Metrics (Auction Insights)
| Competitor | Impression Share | Overlap Rate | Outranking Share |
|---|---|---|---|
| Competitor A | 68% | 72% | 61% |
| Competitor B | 54% | 58% | 44% |
| Your Account | 31% | -- | -- |
Recommendations
1. Title optimization (highest impact): Rewrite titles using formula: Brand + Product Type + Key Attributes. This alone can improve CTR by 15-25%. 2. Add custom labels: Segment products by margin tier (high/medium/low) and sales velocity (best seller/standard/slow). Bid aggressively on high-margin best sellers. 3. Fix 124 missing GTINs: Required for competitive auctions. Suppressed products are invisible spend blockers. 4. Restructure product groups: Current structure is "All Products" in one group. Split by category and margin tier for differentiated bidding. 5. Add supplemental feed with optimized titles, custom labels, and missing attributes without modifying the primary feed.
---
6. Bidding Strategy Review
User Request:
"We're on Maximize Conversions across all campaigns. Should we switch to Target CPA or Target ROAS? Some campaigns are efficient and some aren't."
Analysis Steps: 1. Pull conversion volume and CPA/ROAS by campaign for the last 30 days 2. Assess which campaigns meet the threshold for Target CPA (30+ conversions) or Target ROAS (50+ conversions) 3. Check for learning phase issues and recent bid strategy changes 4. Recommend per-campaign strategy based on maturity and goals
Sample Output:
Current Performance (Last 30 Days)
| Campaign | Strategy | Conv. (30d) | CPA | ROAS | Budget | Status |
|---|---|---|---|---|---|---|
| Brand Search | Max Conv. | 312 | $13.46 | 8.2x | $150/d | Eligible for tCPA |
| NB - High Intent | Max Conv. | 62 | $68.82 | 3.1x | $425/d | Eligible for tCPA |
| NB - Category | Max Conv. | 18 | $118.52 | 1.4x | $215/d | Too few conv. for tCPA |
| Shopping - Top SKUs | Max Conv. | 47 | $57.04 | 4.6x | $270/d | Eligible for tCPA |
| Shopping - Catch All | Max Conv. | 9 | $114.29 | 1.8x | $105/d | Too few conv. |
| Performance Max | Max Conv. | 32 | $106.19 | 2.3x | $340/d | Borderline for tCPA |
Strategy Recommendations
| Campaign | Recommended Strategy | Target | Rationale |
|---|---|---|---|
| Brand Search | Target CPA | $15.00 | High volume, stable CPA. Set target 10% above current to avoid under-delivery. |
| NB - High Intent | Target CPA | $75.00 | 62 conversions is solid. Start conservative, tighten over 2-3 weeks. |
| NB - Category | Stay on Max Conv. | -- | Only 18 conversions. Not enough data for tCPA. Focus on negatives and ad relevance first. |
| Shopping - Top SKUs | Target ROAS | 400% | 47 conversions with strong ROAS. Target ROAS preserves value optimization. |
| Shopping - Catch All | Manual CPC | -- | 9 conversions is too low for automation. Use manual CPC while building volume. |
| Performance Max | Target CPA | $115.00 | 32 conversions is minimum viable. Set conservative target, monitor weekly. |
Transition Plan
1. Week 1: Switch Brand Search and NB - High Intent to Target CPA. Do not touch other campaigns. 2. Week 2: Monitor learning phase. Do not change bids, budgets, or ads during learning (~7 days). 3. Week 3: If stable, switch Shopping - Top SKUs to Target ROAS. Switch PMax to Target CPA. 4. Week 4: Review all campaigns. Tighten targets by 5-10% if performance is stable.
Important: Never switch more than 2 campaigns at once. Stagger changes to isolate the impact of each switch.
---
7. Competitor & Impression Share Analysis
User Request:
"We keep seeing competitors above us in search results. How much market share are we losing and what would it cost to recapture it?"
Analysis Steps: 1. Pull Auction Insights report for brand and non-brand campaigns 2. Calculate impression share losses broken down by budget vs rank 3. Estimate incremental cost to close impression share gaps 4. Assess competitive positioning: who is outranking, on which queries, how often
Sample Output:
Brand Search — Auction Insights (Last 30 Days)
| Competitor | Impression Share | Overlap Rate | Position Above Rate | Outranking Share |
|---|---|---|---|---|
| Your Account | 81% | -- | -- | -- |
| Competitor A | 42% | 48% | 22% | 38% |
| Competitor B | 28% | 31% | 8% | 18% |
| Competitor C | 15% | 18% | 3% | 9% |
Non-Brand Search — Auction Insights
| Competitor | Impression Share | Overlap Rate | Position Above Rate | Outranking Share |
|---|---|---|---|---|
| Your Account | 34% | -- | -- | -- |
| Competitor A | 61% | 72% | 54% | 68% |
| Competitor B | 48% | 58% | 41% | 52% |
| Competitor C | 44% | 51% | 38% | 47% |
Impression Share Loss Breakdown
| Campaign | Current IS | Lost IS (Budget) | Lost IS (Rank) | Total Lost |
|---|---|---|---|---|
| Brand Search | 81% | 4% | 15% | 19% |
| NB - High Intent | 38% | 22% | 40% | 62% |
| NB - Category | 24% | 31% | 45% | 76% |
| Shopping - Top SKUs | 42% | 18% | 40% | 58% |
Cost to Close the Gap
| Campaign | Current Spend | Target IS | Est. Additional Spend | Expected Add'l Conv. |
|---|---|---|---|---|
| Brand Search (to 95%) | $4,200/mo | 95% | +$900/mo | +52 conv. at $13 CPA |
| NB - High Intent (to 55%) | $12,800/mo | 55% | +$5,700/mo | +48 conv. at $69 CPA |
| Shopping - Top SKUs (to 60%) | $8,100/mo | 60% | +$3,500/mo | +38 conv. at $57 CPA |
Recommendations
1. Brand Search is the highest-ROI recapture: Spend $900/month more to go from 81% to 95% IS. These are users searching your brand name — losing them to competitors is unacceptable at $13 CPA. 2. NB - High Intent has the most headroom: 62% impression share is lost. But fix Quality Scores and ad relevance first (rank losses) before adding budget. 3. Do not chase NB - Category IS: At $118 CPA and 1.4x ROAS, gaining more share here would be unprofitable. Fix efficiency before scaling. 4. Shopping IS gap is mostly rank: Improve feed titles and bids on top-margin products to win more auctions without pure budget increases.
---
Common Analysis Patterns
Quick Health Check Template
When a user asks "how's my account doing?" — pull these 5 metrics first: 1. Conversion tracking: Are conversions actually firing? Check last 7 days for gaps. 2. Brand impression share: Below 90% means competitors are stealing branded traffic. 3. Search term relevance: What % of search terms converted in the last 30 days? 4. CPA trend: Is CPA rising, falling, or stable over 90 days? 5. Budget utilization: Any campaigns limited by budget that have strong ROAS?
Spend Efficiency Template
When asked "where am I wasting money?" — check these buckets: 1. Search terms with spend but zero conversions (last 30 days) 2. Keywords with CPA above 2x the account average 3. Geographic regions with below-average conversion rates 4. Device segments with high CPC but low conversion rates 5. Time-of-day and day-of-week patterns for scheduling gaps
PMax Diagnostic Template
When asked about Performance Max specifically: 1. Asset group count and theme clarity 2. Audience signals present or absent 3. URL expansion settings and non-commercial landing pages 4. Brand cannibalization: compare brand Search IS before vs after PMax launch 5. Insights tab: what search categories and audience segments is PMax actually targeting?
Conversion Tracking Verification Template
When conversion data looks off: 1. Google Tag Assistant: is the tag firing on all pages? 2. Conversion action settings: counting model (one vs every), include in conversions, attribution model 3. Enhanced conversions: enabled or disabled? 4. Tag firing location: is it on the right thank-you/confirmation page? 5. Cross-domain tracking: if the user journey spans multiple domains, is the linker configured?
---
Pro Tips
Instead of: "Audit my Google Ads account" Ask: "Audit my Google Ads account. Our goal is $50 CPA for demo requests. We spend $30K/month across Search and PMax. CPA has increased 25% in the last 60 days."
Instead of: "Fix my Quality Scores" Ask: "These 15 keywords have QS of 3-4 and account for 40% of our non-brand spend. Landing page experience is 'Below Average' on all of them. What's the fix priority?"
Instead of: "Should I use Performance Max?" Ask: "We run standard Shopping and Search campaigns. Shopping ROAS is 4.2x. We're considering PMax to expand reach. What's the risk of cannibalization and how do we structure asset groups for our 4 product categories?"
Instead of: "My campaigns aren't working" Ask: "Non-brand Search CPA went from $45 to $72 over 8 weeks. Conversion volume is flat but spend increased. We didn't change bids or budgets. What could be driving this?"
Instead of: "Help with bidding" Ask: "We have 5 campaigns: 2 have 50+ conversions/month, 2 have 15-20, and 1 has under 10. All are on Maximize Conversions. Which should move to Target CPA and at what targets?"
---
8. Scored Account Audit (Health Score)
User Request:
"Give me a scored audit of our Google Ads account with a health grade."
Analysis Steps: 1. Load skills/shared/scoring-system.md for scoring algorithm and CHECKS.md for the 74-check audit 2. Evaluate each applicable check as PASS, WARNING, or FAIL based on account data 3. Calculate category scores using severity multipliers and category weights 4. Identify Quick Wins (Critical/High severity, ≤15 min fix time) 5. Produce health score, grade, and prioritized action plan
Sample Output:
Account Health Score: 64/100 (Grade C — Needs Improvement)
Quick Wins (fix in ≤15 min, high impact)
1. [Critical] Enable Enhanced Conversions — G-CT2 (5 min) 2. [Critical] Add negative keyword lists — G-WS2 (10 min) 3. [Critical] Fix Broad Match + Manual CPC — G-WS5 (5 min) 4. [High] Switch location targeting to "People in" — G-ST11 (2 min) 5. [High] Disable Display Network on Search campaigns — G-ST12 (2 min) 6. [High] Add brand exclusions to PMax — G-ST7 (5 min)
Category Breakdown
| Category | Weight | Score | Grade | Top Issue |
|---|---|---|---|---|
| Conversion Tracking | 25% | 52 | D | Enhanced Conversions inactive (G-CT2) |
| Wasted Spend / Negatives | 20% | 38 | F | No negative keyword lists, 18% irrelevant spend |
| Account Structure | 15% | 75 | B | PMax brand overlap not addressed |
| Keywords & Quality Score | 15% | 71 | C | Average QS at 5.8, below 7 target |
| Ads & Assets | 15% | 78 | B | PMax asset groups need more video |
| Settings & Targeting | 10% | 82 | B | Missing Customer Match lists |
Detailed Findings
Conversion Tracking (52/100 — Grade D)
| Check | Result | Finding |
|---|---|---|
| G-CT1 Primary conversion action | PASS | Purchase action active, 186 conversions/month |
| G-CT2 Enhanced conversions | FAIL | Not enabled — estimated 15-20% data loss |
| G-CT3 Server-side tracking | WARNING | Planned Q2 but not deployed |
| G-CT5 Conversion window | PASS | 30-day window appropriate for this business |
| G-CT6 Macro/micro separation | FAIL | AddToCart set as Primary (inflating bidding signals) |
| G-CT9 No duplicate counting | PASS | GA4 import disabled, using native tag only |
| G-CT11 Google Tag firing | PASS | Tag verified on all pages |
[Additional categories follow same format...]
Prioritized Action Plan
Immediate (This Week) 1. Enable Enhanced Conversions for Purchase action 2. Remove AddToCart from Primary conversion actions (set to Secondary) 3. Create 3 themed negative keyword lists and apply account-wide 4. Fix Broad Match + Manual CPC on NB-Category campaign
This Month 5. Address Quality Score: rewrite headlines for top 20 keywords with QS ≤5 6. Add Customer Match list and remarketing audiences in Observation mode 7. Deploy server-side tracking (GTM server container)
Next Quarter 8. Restructure PMax asset groups with full video coverage 9. Test portfolio bid strategies for low-volume campaigns
MIT License
Copyright (c) 2026 Rebecca Rae Barton
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Google Ads Reference
Account Hierarchy
MCC (Manager Account)
└── Account (Client)
└── Campaign
└── Ad Group
├── Keywords (Search)
├── Product Groups (Shopping)
├── Asset Groups (Performance Max)
├── Ads (RSA, Display, Video)
└── Audiences (targeting/observation)Campaign Types & Settings
Search Campaigns
- Networks: Google Search, Search Partners (opt-in/out)
- Ad Format: Responsive Search Ads (RSA) — up to 15 headlines (30 chars), 4 descriptions (90 chars)
- Match Types: Broad, Phrase, Exact
- Extensions/Assets: Sitelinks, callouts, structured snippets, call, location, price, image, lead form, business name/logo
Shopping Campaigns (Standard)
- Feed Source: Google Merchant Center
- Product Groups: Category, brand, item ID, condition, product type, channel, custom labels (0-4)
- Priority: Low, Medium, High (for multi-campaign strategies)
- Showcase Shopping Ads: Collection-style ads (broad queries)
Performance Max
- Asset Groups: Group assets by product category or theme
- Assets: Headlines (max 5), long headlines (max 5), descriptions (max 5), images (max 20), logos (max 5), videos (max 5)
- Audience Signals: Custom segments, your data (remarketing), interests, demographics
- Search Themes: Keyword-like signals (max 25 per asset group)
- URL Expansion: On by default — excludes URLs via Page Feeds or final URL expansion settings
- Listing Groups: Product feed segmentation (like Shopping product groups)
Display Campaigns
- Targeting: Keywords, placements, topics, audiences, demographics
- Ad Formats: Responsive display ads (auto-generated from assets), uploaded image ads
- Optimized Targeting: Expands beyond your targeting to find converters
Video Campaigns (YouTube)
- Skippable in-stream: Plays before/during/after videos, skippable after 5s
- Non-skippable in-stream: 15-second forced view
- Bumper: 6-second non-skippable
- In-feed (Discovery): Thumbnail + text, clicks to watch
- Shorts: Vertical video ads in YouTube Shorts feed
- Bidding: CPV (views), CPM (impressions), Target CPA (conversions)
Demand Gen Campaigns
- Visual-first ads on YouTube (in-feed, Shorts), Discover, Gmail
- Product feeds supported for e-commerce
- Lookalike segments from first-party lists
- A/B creative experiments built-in
Keyword Reference
Match Type Behavior (Current)
| Type | Syntax | What It Matches |
|---|---|---|
| Broad | running shoes | Related queries, synonyms, implied intent |
| Phrase | "running shoes" | Queries that include the meaning of your keyword |
| Exact | [running shoes] | Queries with same meaning/intent |
Note: All match types now use intent matching. Broad match is significantly broader than legacy behavior and works best with Smart Bidding.
Negative Keywords
| Type | Syntax | Blocks |
|---|---|---|
| Broad negative | running shoes | Queries containing ALL negative terms (any order) |
| Phrase negative | "running shoes" | Queries containing phrase in order |
| Exact negative | [running shoes] | Only that exact query |
Quality Score (1-10)
- Expected CTR: Historical CTR of your ad for this keyword
- Ad Relevance: How well your ad matches keyword intent
- Landing Page Experience: Relevance, load speed, mobile-friendliness, trustworthiness
- Impact: Higher QS = lower CPC, better positions
Bidding Strategies
Portfolio & Standard Strategies
| Strategy | Goal | When to Use |
|---|---|---|
| Manual CPC | Full control | Testing, low data |
| Enhanced CPC (eCPC) | Semi-automated | Transitioning to automation |
| Maximize Clicks | Most clicks | Traffic, awareness |
| Maximize Conversions | Most conversions | Volume goal, uncapped budget |
| Maximize Conv. Value | Most revenue | Revenue goal, uncapped budget |
| Target CPA | Specific CPA | Efficiency with volume |
| Target ROAS | Specific ROAS | Revenue efficiency |
| Target Impression Share | Visibility | Brand defense, competitive |
Smart Bidding Signals Used
- Device, location, time of day, day of week
- Remarketing list membership
- Browser, OS, language
- Ad characteristics
- Search query (broad match + Smart Bidding is powerful)
- Actual search query (not just keyword)
Learning Period
- ~7 days after bid strategy change
- Need 30+ conversions in last 30 days for Target CPA
- Need 50+ conversions for Target ROAS
- Avoid making changes during learning period
Audience Types
Your Data (First-Party)
| Audience | Source | Min Size |
|---|---|---|
| Website visitors | Google Tag | 1,000 (Search), 100 (Display) |
| App users | Firebase/SDK | 1,000 |
| Customer Match | Email/phone/address upload | 1,000 |
| YouTube users | Channel interactions | 1,000 |
Google Audiences
| Type | Description |
|---|---|
| In-market | Actively researching/comparing products |
| Affinity | Long-term interests and lifestyles |
| Detailed Demographics | Parental status, marital, education, homeowner |
| Life Events | Recently married, moved, graduated, started business |
| Custom Segments | Your keywords + URLs + apps = custom intent |
| Similar Segments | Deprecated (replaced by optimized targeting) |
Targeting vs Observation
- Targeting: Only show ads to this audience (restricts reach)
- Observation: Show to everyone, add bid adjustments for audience (monitor performance)
- RLSA: Remarketing lists for Search Ads — bid higher for returning visitors in Search
Conversion Tracking
Google Tag (gtag.js)
<!-- Global site tag -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-CONVERSION_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-CONVERSION_ID');
</script>
<!-- Conversion event -->
<script>
gtag('event', 'conversion', {
'send_to': 'AW-CONVERSION_ID/CONVERSION_LABEL',
'value': 99.99,
'currency': 'USD',
'transaction_id': 'TXN-12345'
});
</script>Enhanced Conversions
<!-- Enhanced conversion data (hashed automatically) -->
<script>
gtag('set', 'user_data', {
'email': 'customer@example.com',
'phone_number': '+11234567890',
'address': {
'first_name': 'Jane',
'last_name': 'Doe',
'street': '123 Main St',
'city': 'Austin',
'region': 'TX',
'postal_code': '78701',
'country': 'US'
}
});
</script>Offline Conversion Import
# GCLID-based import
Google Click ID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
CjwKCAjw...,Purchase,2024-01-15 10:30:00+0000,99.99,USD- Import via Google Ads UI, API, or Google Sheets linked
- GCLID valid for 90 days
- Enhanced conversions for leads: use user-provided data instead of GCLID
Attribution Models
| Model | Description | Default? |
|---|---|---|
| Data-Driven | ML-based, distributes credit across touchpoints | Yes (default) |
| Last Click | 100% credit to last-clicked ad | Legacy option |
| Cross-Channel | Data-driven across Google properties | Newer |
Google Merchant Center Reference
Required Feed Attributes
| Attribute | Description | Requirements |
|---|---|---|
| id | Unique product identifier | Max 50 chars, stable |
| title | Product title | Max 150 chars (first 70 matter most) |
| description | Product description | Max 5000 chars |
| link | Product landing page URL | Must match website |
| image_link | Main product image | Min 100x100px, no watermarks |
| price | Product price | Include currency, match landing page |
| availability | Stock status | in_stock, out_of_stock, preorder |
| brand | Product brand | Required for most categories |
| gtin | Global Trade Item Number | Required when available |
| condition | new, refurbished, used | Required |
Feed Optimization Tips
- Title formula: Brand + Product Type + Key Attributes (color, size, material)
- Custom Labels (0-4): Use for campaign segmentation (margin tier, best seller, seasonal, new)
- Product Type: Your own categorization (more specific than google_product_category)
- Supplemental feeds: Add data without modifying primary feed
Common Disapproval Reasons
- Price mismatch between feed and landing page
- Missing GTIN (required for branded products)
- Image doesn't meet requirements (size, watermarks, promotional overlays)
- Policy violations (prohibited content, misleading claims)
- Shipping/tax information missing
- Automatic item updates can fix some mismatches
Scripts & Automation
Google Ads Scripts (JavaScript)
// Example: Pause keywords with Quality Score < 4
function main() {
var keywordIterator = AdsApp.keywords()
.withCondition("QualityScore < 4")
.withCondition("Status = ENABLED")
.get();
while (keywordIterator.hasNext()) {
var keyword = keywordIterator.next();
Logger.log("Pausing: " + keyword.getText() + " (QS: " + keyword.getQualityScore() + ")");
keyword.pause();
}
}Google Ads API (REST)
Base URL: https://googleads.googleapis.com/v16/
# Authentication: OAuth 2.0 + Developer Token
Headers:
Authorization: Bearer {access_token}
developer-token: {developer_token}
login-customer-id: {mcc_id}
# GAQL (Google Ads Query Language)
POST /customers/{customer_id}/googleAds:searchStream
{
"query": "SELECT campaign.name, metrics.impressions, metrics.clicks, metrics.cost_micros FROM campaign WHERE segments.date DURING LAST_30_DAYS ORDER BY metrics.impressions DESC"
}Common GAQL Queries
-- Campaign performance
SELECT campaign.name, campaign.status, metrics.impressions, metrics.clicks,
metrics.conversions, metrics.cost_micros, metrics.conversions_value
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
AND campaign.status = 'ENABLED'
ORDER BY metrics.cost_micros DESC
-- Search term report
SELECT search_term_view.search_term, search_term_view.status,
metrics.impressions, metrics.clicks, metrics.conversions, metrics.cost_micros
FROM search_term_view
WHERE segments.date DURING LAST_7_DAYS
ORDER BY metrics.impressions DESC
LIMIT 100
-- Quality Score analysis
SELECT ad_group_criterion.keyword.text,
ad_group_criterion.quality_info.quality_score,
ad_group_criterion.quality_info.creative_quality_score,
ad_group_criterion.quality_info.post_click_quality_score,
ad_group_criterion.quality_info.search_predicted_ctr
FROM keyword_view
WHERE ad_group_criterion.status = 'ENABLED'
ORDER BY ad_group_criterion.quality_info.quality_score ASCKey Metrics Glossary
| Metric | Formula / Definition |
|---|---|
| CTR | Clicks / Impressions |
| CPC | Cost / Clicks |
| CPA | Cost / Conversions |
| ROAS | Conversion Value / Cost |
| Conv. Rate | Conversions / Clicks |
| Impression Share | Impressions / Total Eligible Impressions |
| Lost IS (Budget) | % lost due to budget |
| Lost IS (Rank) | % lost due to Ad Rank |
| Search Top IS | Impressions in top positions / eligible |
| Absolute Top IS | Impressions in #1 position / eligible |
# Google Ads skill dependencies
# Install with: pip install -r requirements.txt
google-ads>=24.0.0,<26.0.0
python-dotenv>=1.0.0,<2.0.0