Impression share gap finder
Skill kochellenk-afk/google-ads-diagnostic-toolkit/skills/impression-share-gap-finder
10 production Claude Skills covering the full Google Ads diagnostic lifecycle: waste, spikes, Quality Score, budgets, reporting
npx -y skills add kochellenk-afk/google-ads-diagnostic-toolkit --skill impression-share-gap-finderAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 19 days oldThe repository was created 19 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Identify where Google Ads campaigns are losing impression share, calculate the revenue opportunity of closing each gap, and prioritize which campaigns to fund first. Use this skill when a user wants to analyze impression share loss, asks why their ads aren't showing more, mentions IS lost to budget or rank, wants to know how much revenue they're leaving on the table, asks if they should increase budget, or uploads campaign data with impression share columns. Trigger on phrases like "impression share", "IS lost", "not showing enough", "missing impressions", "should I increase budget", "where am I losing volume", "auction insights", or any question about scaling Google Ads.
SKILL.md
7.1 KB, as published. Nobody here has run it
Impression Share Gap Finder
A skill for finding where impression share is being lost, attributing the cause (budget vs. rank), and prioritizing which gaps are worth closing.
What this skill does
Most Google Ads accounts leave 30–50% of available impressions on the table. This skill:
- Identifies which campaigns are losing IS to budget (you'd pay if you could)
- Identifies which campaigns are losing IS to rank (your ad isn't winning the auction)
- Estimates revenue opportunity if IS reached 90%
- Calculates incremental daily budget needed for budget-constrained campaigns
- Diagnoses rank-based losses (bid level, Quality Score, or ad relevance)
- Outputs a prioritized action plan distinguishing quick wins from "don't bother" campaigns
Required inputs
- Campaign performance data with impression share columns
- Time window - last 30 days default
Required columns
- Campaign name
- Spend, daily budget
- Impressions, clicks, CTR
- Conversions, CPA, conv. rate, conv. value (if tracking revenue)
- Search impression share (IS)
- Search IS lost to budget
- Search IS lost to rank
- Avg. CPC
These columns are HIDDEN by default in Google Ads exports. If they're missing, ask the user to re-export with impression share columns enabled (Columns → Modify columns → Competitive metrics → check all IS columns).
Workflow
Step 1: Validate data
Check that IS columns are present. If they're missing, stop and provide the re-export instructions:
Please re-export your campaign data with these columns enabled:
- Search impression share
- Search lost IS (budget)
- Search lost IS (rank)
In Google Ads: Columns → Modify columns → Competitive metrics → enable all "Search lost IS" columns. Without these, I can't tell you where you're losing volume or why.
Step 2: Categorize each campaign
For each campaign, classify the gap type:
| Category | Definition | Action implication |
|---|---|---|
| Budget-constrained | Search IS lost to budget > 10% | More budget could capture more volume |
| Rank-constrained | Search IS lost to rank > 20% | Bid/QS/ad issue - fix without spending more |
| Mixed | Both > 10% | Often: rank issue first, budget second |
| Already at scale | IS > 80% | Don't bother - diminishing returns |
| Underperformer | High IS lost but high CPA / low conv. rate | Fix conversion before scaling |
Read references/is-decision-rules.md for the full classification logic.
Step 3: Calculate revenue opportunity
For each campaign, project what 90% IS would deliver:
projected_impressions = current_impressions × (90% / current_IS%)
projected_clicks = projected_impressions × current_CTR
projected_conversions = projected_clicks × current_conv_rate
projected_revenue = projected_conversions × current_revenue_per_conv
incremental_revenue = projected_revenue - current_revenue
Important caveats to surface:
- Conversion rate may degrade slightly at higher volume (assume 5% degradation as a conservative buffer)
- CPC may rise if you bid up to capture rank-based loss
- These projections are upper bounds - actual results typically capture 60–80% of projected upside
Step 4: Calculate incremental budget needed (budget-constrained campaigns)
For budget-constrained campaigns:
current_daily_spend = monthly_spend / 30
needed_daily_budget = current_daily_spend / (current_IS / (current_IS + IS_lost_to_budget))
incremental_daily_budget = needed_daily_budget - current_daily_spend
Sanity check: if incremental_daily_budget is negative or trivially small, the IS lost to budget figure is probably not actionable (e.g., the campaign was paused for part of the period).
Step 5: Diagnose rank-based losses (rank-constrained campaigns)
For each campaign with high IS lost to rank, evaluate:
- Bid level: is current avg. CPC well below competitor benchmark? (If user has auction insights data, this is direct.)
- Quality Score: if QS data is present, is campaign avg. QS below 6? Improvements here recover rank without raising bids.
- Ad relevance: if specific RSA strength data is available, "Poor" or "Average" RSAs cap rank.
For each rank-constrained campaign, recommend ONE of:
- Raise bids by X% (cheapest fix if budget allows)
- Improve QS (longer fix, durable gain)
- Strengthen ads (medium effort, often combines with QS work)
Step 6: The prioritized action plan
Three sections:
Quick wins - campaigns where a small budget increase captures large IS: | Campaign | Curr IS | IS lost to budget | Add $/day | Est. add'l conv. | Est. add'l revenue |
Optimization targets - campaigns where rank fixes recover IS without more spend: | Campaign | Curr IS | IS lost to rank | Recommended fix | Est. impact |
Don't bother (deprioritize) - campaigns where the gap isn't worth closing: | Campaign | Curr IS | Why skip (high CPA, low conv. rate, low absolute volume) |
End with a top-line: total incremental monthly spend needed and estimated incremental conversions/revenue.
What this skill must NOT do
- Don't recommend scaling campaigns with CPA above the user's target. More volume at a bad CPA is worse, not better. Tell the user to fix CPA first (refer to cpa-spike-diagnosis or quality-score-analysis).
- Don't promise the projected revenue numbers as guaranteed outcomes - they're upper-bound estimates and need 5–20% buffer for real-world degradation.
- Don't recommend closing rank-based gaps purely by raising bids if Quality Score is low - you'll burn budget. Fix QS first.
- Don't combine budget and rank gaps as if they're fungible. They have different fixes and different priorities.
- Don't treat "Search lost IS" and "Display lost IS" as the same metric. Always specify which network.
Output format
Markdown only by default - this is a planning conversation, the user will share insights with their team verbally or paste the table. If they ask for a doc, use the docx skill.
Structure:
- Summary box: total IS lost, biggest opportunity, total incremental spend, total incremental revenue
- Quick wins table
- Optimization targets table
- Deprioritize table
- Top recommendation: the single campaign to act on this week
Reference files
references/is-decision-rules.md- full classification logic and thresholdsreferences/projection-math.md- formulas with worked examples and caveats
Scripts
scripts/is_opportunity_calc.py- computes projections and incremental budget per campaign