# Impression Share Gap Finder

> 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: `kochellenk-afk/impression-share-gap-finder` (Agent Skill)
- Install (CLI): `npx skillmds@latest add kochellenk-afk/impression-share-gap-finder`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kochellenk-afk/impression-share-gap-finder/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: kochellenk-afk (https://skillmd.com/u/kochellenk-afk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kochellenk-afk/impression-share-gap-finder

---


# 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:

1. Identifies which campaigns are losing IS to budget (you'd pay if you could)
2. Identifies which campaigns are losing IS to rank (your ad isn't winning the auction)
3. Estimates revenue opportunity if IS reached 90%
4. Calculates incremental daily budget needed for budget-constrained campaigns
5. Diagnoses rank-based losses (bid level, Quality Score, or ad relevance)
6. Outputs a prioritized action plan distinguishing quick wins from "don't bother" campaigns

## Required inputs

1. **Campaign performance data** with impression share columns
2. **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:
1. Summary box: total IS lost, biggest opportunity, total incremental spend, total incremental revenue
2. Quick wins table
3. Optimization targets table
4. Deprioritize table
5. Top recommendation: the single campaign to act on this week

## Reference files

- `references/is-decision-rules.md` - full classification logic and thresholds
- `references/projection-math.md` - formulas with worked examples and caveats

## Scripts

- `scripts/is_opportunity_calc.py` - computes projections and incremental budget per campaign

