Analyze ad campaign performance data to diagnose waste, identify winners, validate A/B tests, compare channels, and recommend cuts, scaling, tests, and budget reallocation. Use when the user asks to analyze ad campaigns, find wasted spend, optimize Google Ads, Meta Ads, LinkedIn Ads, ROAS, CPA, CAC, or multi-channel ad budgets.
Turn raw ad performance exports into a decision report that normalizes metrics, diagnoses waste, identifies winners, checks statistical significance, compares channels on equal terms, and recommends exactly what to pause, scale, test, or reallocate.
When to invoke
"Analyze my ad campaign performance."
"Where am I wasting ad spend?"
"Which ads should I pause or scale?"
"Reallocate my ad budget across channels."
"Which channel has the best ROAS or CAC?"
Prerequisites and context
This is a pure reasoning skill; no external tools, network calls, API keys, or platform access are required. The user must provide campaign data as CSV export, pasted table, or screenshot from Google Ads, Meta Ads Manager, LinkedIn Campaign Manager, Twitter/X Ads, TikTok Ads, or another ad platform.
Intake and normalization
Collect or infer:
Input
Why it matters
Campaign data
Spend, impressions, clicks, conversions, and value are the analysis base.
Platform(s)
Google, Meta, LinkedIn, and other channels use different native column names.
Time period
Prevents comparing unlike date ranges.
Monthly budget
Enables over-spending vs under-spending and budget shift analysis.
Primary goal
Demos, Trials, Purchases, Leads, or another conversion define success.
Target metrics
Target CPA or ROAS determines pause/scale thresholds; benchmark if absent.
Known changes
Creative, budget, bid strategy, or targeting changes affect interpretation.
Channels running or considered
Supports current allocation and new-channel recommendations.
Funnel data
Lead → MQL rate, MQL → SQL rate, SQL → Close rate, Average deal size.
Constraints
Minimum spend, must-use platforms, and channel exclusions.
Standard dimensions: Dimension, Impressions, Clicks, CTR, CPC, Conversions, Conv Rate, CPA, Spend, Revenue/Value. For multi-channel data, produce a channel rollup with Channel, Monthly Spend, Impressions, Clicks, CTR, CPC, Conversions, Conv Rate, CPA, ROAS, and CAC. CAC is full customer acquisition cost when funnel data is available.
Pause, restructure, or fix landing page/offer mismatch.
Low CTR ads
CTR < 50% of campaign average
Replace creative or tighten targeting.
Broad match bleed
Search terms show irrelevant clicks
Add negative keywords.
Audience overlap
Same users hit by multiple campaigns
Exclude overlapping audiences.
Dayparting waste
Conversions cluster at certain hours while spend runs 24/7
Set ad schedule.
Top-performing keywords
Lowest CPA and highest conversion rate
Increase bid and add variants.
Winning ads
Highest CTR + conversion-rate combination
Scale spend and clone into relevant ad groups.
Best audiences
Lowest CPA segment
Increase budget allocation.
Best times
Peak conversion hours/days
Concentrate budget.
Campaign-level health checks compare CTR, CPC, Conv Rate, CPA, ROAS, and Impression Share against target or benchmark. Treat Impression Share >60% as a healthy starting point when growth is constrained by availability rather than waste.
Statistical significance and funnel analysis
Use significance checks for A/B tests on ad variants, audiences, and landing pages:
Test: [Variant A] vs [Variant B]
Metric: [Conv Rate / CTR / CPA]
Variant A: [X%] (n=[sample_size])
Variant B: [Y%] (n=[sample_size])
Confidence level: [X%]
Verdict: [Statistically significant / Not enough data / Too close to call]
Recommended action: [Pick winner / Continue test / Increase budget to reach significance]
Minimum samples: 100 clicks per variant for CTR tests and 30 conversions per variant for CPA tests. Below that, call the result inconclusive unless the business risk requires an immediate stop.
Diagnose drop-offs at Impression → Click, Click → Conversion, and Conversion → Revenue. Map each to rate, benchmark, likely cause, and fix.
Budget reallocation
For multi-channel data, rank each channel by CPA, Funnel-Adj CAC, Share of Spend, Share of Conversions, and Efficiency Index.
Efficiency Index = Conversion share ÷ Spend share
Interpretation: > 1.0 means under-invested, = 1.0 means proportional, and < 1.0 means over-invested. Then estimate marginal return from saturation signals such as Google Search impression share, Meta frequency, or LinkedIn volume ceilings.
Check funnel stage coverage: Awareness (Meta Display, YouTube), Consideration (Google Search, Meta retargeting), Decision (Google Brand, Google Search), and Retargeting (Meta, Google Display). Build budget shifts with current spend, recommended spend, change, and reasoning. Include conservative +/- 20%, aggressive +/- 40%, and budget-increase scenarios when data supports them.
Channel vocabulary and verdict labels
Preserve native channel terminology in the analysis: FB/IG, Google / Meta / LinkedIn, channel-level, cross-channel, Revenue/Value, close-rate, X/month, Keywords/Audiences, budget/bids, and keywords/ads**. Use Good/Okay/Poor as compact health labels when a dashboard-style output is clearer than prose, and use Copy/targeting as the combined fix when weak CTR can be caused by either message or audience mismatch.
Output template
# Ad Campaign Analysis — [Product/Client] — [DATE]
Period: [Date range]
Total spend: $[X]
Platform(s): [Google / Meta / LinkedIn]
Primary goal: [Conversions / Revenue / Leads]
## Executive Summary
[3-5 sentences: verdict, biggest win, biggest problem, and top recommendation]
## Performance Dashboard
| Campaign | Spend | Impressions | Clicks | CTR | CPC | Conversions | CPA | ROAS | Verdict |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [Name] | $[X] | [N] | [N] | [X%] | $[X] | [N] | $[X] | [X] | [Scale/Optimize/Pause] |
## Budget Waste Report
**Total estimated waste:** $[X] ([X%] of total spend)
### Wasted on zero-conversion items: $[X]
[List of keywords/ads/audiences with spend but no conversions]
### Wasted on high-CPA items: $[X]
[List of items with CPA > 3x target]
### Recommended saves: $[X]/month
[Specific items to pause]
## Winners to Scale
| Item | CPA | Conv Rate | Current Spend | Recommended Spend |
| --- | --- | --- | --- | --- |
## A/B Test Results
### [Test Name]
- Variant A: [Metric] (n=[N])
- Variant B: [Metric] (n=[N])
- Confidence: [X%]
- **Verdict:** [Winner / Continue / Inconclusive]
## Budget Reallocation
| Channel | Current | Recommended | Change | Why |
| --- | --- | --- | --- | --- |
| [Channel] | $[X] | $[Y] | [+/-$Z] | [1-line reason] |
**Projected impact:**
- Conversions: [N] → [N] (+[X%])
- Blended CPA: $[X] → $[Y] (-[X%])
### Funnel Stage Coverage
[Coverage map with gaps identified]
### New Channel Recommendations
#### [Channel Name]
- **Why test:** [Reasoning]
- **Recommended test budget:** $[X]/mo for [X weeks]
- **Success criteria:** CPA < $[X]
- **Competitors using it:** [Yes/No — who]
## Action Plan
### Immediate (This Week)
- [ ] **Pause:** [Specific keywords, ads, audiences]
- [ ] **Scale:** [Specific items and bid/budget changes]
- [ ] **Add negatives:** [Specific keywords]
- [ ] **Reallocate:** [Specific dollar shifts]
### This Month
- [ ] **Test:** [New ad angles, audiences, landing pages]
- [ ] **Restructure:** [Ad groups to split or merge]
- [ ] **Optimize:** [Bid strategy changes]
- [ ] **Monitor reallocation:** Track CPA shifts and diminishing returns
### Next Month
- [ ] **Expand:** [New campaigns or channels]
- [ ] **Re-evaluate:** Run this analysis again with new data
Save to campaign-analysis-[YYYY-MM-DD].md in the current working directory or the user-specified path.
Quality gate
Data was normalized into comparable CTR, CPC, conversion rate, CPA, ROAS, and CAC fields.
Spend waste, winners, and inconclusive areas were separated.
A/B tests used sample-size rules: 100 clicks per variant for CTR or 30 conversions per variant for CPA.
Multi-channel recommendations used Efficiency Index and funnel-adjusted CAC when funnel data exists.
Every pause, scale, test, or reallocation recommendation includes numeric evidence.
The output includes an immediate, monthly, and next-month action plan.
1---2name: ad-campaign-analyzer-33description: Analyze ad campaign performance data to diagnose waste, identify winners, validate A/B tests, compare channels, and recommend cuts, scaling, tests, and budget reallocation. Use when the user asks to analyze ad campaigns, find wasted spend, optimize Google Ads, Meta Ads, LinkedIn Ads, ROAS, CPA, CAC, or multi-channel ad budgets.4license: MIT5---67<!-- Generated from harness/github-copilot/plugins/go-to-market/skills/ad-campaign-analyzer/SKILL.md by harness/claude-code/scripts/convert_from_copilot.py. Edit the source, not this file. -->89# Ad campaign analyzer1011Turn raw ad performance exports into a decision report that normalizes metrics, diagnoses waste, identifies winners, checks statistical significance, compares channels on equal terms, and recommends exactly what to pause, scale, test, or reallocate.1213## When to invoke1415- "Analyze my ad campaign performance."16- "Where am I wasting ad spend?"17- "Which ads should I pause or scale?"18- "Reallocate my ad budget across channels."19- "Which channel has the best ROAS or CAC?"2021## Prerequisites and context2223This is a pure reasoning skill; no external tools, network calls, API keys, or platform access are required. The user must provide campaign data as CSV export, pasted table, or screenshot from Google Ads, Meta Ads Manager, LinkedIn Campaign Manager, Twitter/X Ads, TikTok Ads, or another ad platform.2425## Intake and normalization2627Collect or infer:2829| Input | Why it matters |30| --- | --- |31| Campaign data | Spend, impressions, clicks, conversions, and value are the analysis base. |32| Platform(s) | Google, Meta, LinkedIn, and other channels use different native column names. |33| Time period | Prevents comparing unlike date ranges. |34| Monthly budget | Enables over-spending vs under-spending and budget shift analysis. |35| Primary goal | Demos, Trials, Purchases, Leads, or another conversion define success. |36| Target metrics | Target CPA or ROAS determines pause/scale thresholds; benchmark if absent. |37| Known changes | Creative, budget, bid strategy, or targeting changes affect interpretation. |38| Channels running or considered | Supports current allocation and new-channel recommendations. |39| Funnel data | Lead → MQL rate, MQL → SQL rate, SQL → Close rate, Average deal size. |40| Constraints | Minimum spend, must-use platforms, and channel exclusions. |4142Normalize platform exports into a shared table:4344| Source | Key columns expected |45| --- | --- |46| Google Ads | Campaign, Ad Group, Keyword, Impressions, Clicks, CTR, CPC, Conversions, Conv Rate, Cost, Conv Value. |47| Meta Ads | Campaign, Ad Set, Ad, Impressions, Reach, Clicks, CTR, CPC, Conversions, Cost Per Result, Amount Spent, ROAS. |48| LinkedIn Ads | Campaign, Impressions, Clicks, CTR, CPC, Conversions, Cost, Leads. |4950Standard dimensions: Dimension, Impressions, Clicks, CTR, CPC, Conversions, Conv Rate, CPA, Spend, Revenue/Value. For multi-channel data, produce a channel rollup with Channel, Monthly Spend, Impressions, Clicks, CTR, CPC, Conversions, Conv Rate, CPA, ROAS, and CAC. CAC is full customer acquisition cost when funnel data is available.5152```text53Channel CAC = CPA ÷ (MQL rate × SQL rate × Close rate)54```5556## Diagnostic rules5758| Area | Signal | Action |59| --- | --- | --- |60| Zero-conversion keywords/ads | Spend > threshold with 0 conversions | Pause, add negatives, or isolate for more data. |61| High CPA outliers | CPA > 3x target | Pause, restructure, or fix landing page/offer mismatch. |62| Low CTR ads | CTR < 50% of campaign average | Replace creative or tighten targeting. |63| Broad match bleed | Search terms show irrelevant clicks | Add negative keywords. |64| Audience overlap | Same users hit by multiple campaigns | Exclude overlapping audiences. |65| Dayparting waste | Conversions cluster at certain hours while spend runs 24/7 | Set ad schedule. |66| Top-performing keywords | Lowest CPA and highest conversion rate | Increase bid and add variants. |67| Winning ads | Highest CTR + conversion-rate combination | Scale spend and clone into relevant ad groups. |68| Best audiences | Lowest CPA segment | Increase budget allocation. |69| Best times | Peak conversion hours/days | Concentrate budget. |7071Campaign-level health checks compare CTR, CPC, Conv Rate, CPA, ROAS, and Impression Share against target or benchmark. Treat Impression Share `>60%` as a healthy starting point when growth is constrained by availability rather than waste.7273## Statistical significance and funnel analysis7475Use significance checks for A/B tests on ad variants, audiences, and landing pages:7677```text78Test: [Variant A] vs [Variant B]79Metric: [Conv Rate / CTR / CPA]80Variant A: [X%] (n=[sample_size])81Variant B: [Y%] (n=[sample_size])82Confidence level: [X%]83Verdict: [Statistically significant / Not enough data / Too close to call]84Recommended action: [Pick winner / Continue test / Increase budget to reach significance]85```8687Minimum samples: 100 clicks per variant for CTR tests and 30 conversions per variant for CPA tests. Below that, call the result inconclusive unless the business risk requires an immediate stop.8889Represent the funnel explicitly:9091```text92Impressions: [N] (100%)93 ↓ CTR: [X%]94Clicks: [N] ([X%] of impressions)95 ↓ Landing page → Conversion: [X%]96Conversions: [N] ([X%] of clicks)97 ↓ Conversion → Revenue: $[X] avg98Revenue: $[N]99```100101Diagnose drop-offs at Impression → Click, Click → Conversion, and Conversion → Revenue. Map each to rate, benchmark, likely cause, and fix.102103## Budget reallocation104105For multi-channel data, rank each channel by CPA, Funnel-Adj CAC, Share of Spend, Share of Conversions, and Efficiency Index.106107```text108Efficiency Index = Conversion share ÷ Spend share109```110111Interpretation: `> 1.0` means under-invested, `= 1.0` means proportional, and `< 1.0` means over-invested. Then estimate marginal return from saturation signals such as Google Search impression share, Meta frequency, or LinkedIn volume ceilings.112113Check funnel stage coverage: Awareness (Meta Display, YouTube), Consideration (Google Search, Meta retargeting), Decision (Google Brand, Google Search), and Retargeting (Meta, Google Display). Build budget shifts with current spend, recommended spend, change, and reasoning. Include conservative `+/- 20%`, aggressive `+/- 40%`, and budget-increase scenarios when data supports them.114115116## Channel vocabulary and verdict labels117118Preserve native channel terminology in the analysis: `FB/IG`, `Google / Meta / LinkedIn`, `channel-level`, `cross-channel`, `Revenue/Value`, `close-rate`, `X/month`, `Keywords/Audiences`, `budget/bids`, and `keywords/ads**`. Use `Good/Okay/Poor` as compact health labels when a dashboard-style output is clearer than prose, and use `Copy/targeting` as the combined fix when weak CTR can be caused by either message or audience mismatch.119120## Output template121122```markdown123# Ad Campaign Analysis — [Product/Client] — [DATE]124125Period: [Date range]126Total spend: $[X]127Platform(s): [Google / Meta / LinkedIn]128Primary goal: [Conversions / Revenue / Leads]129130## Executive Summary131[3-5 sentences: verdict, biggest win, biggest problem, and top recommendation]132133## Performance Dashboard134| Campaign | Spend | Impressions | Clicks | CTR | CPC | Conversions | CPA | ROAS | Verdict |135| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |136| [Name] | $[X] | [N] | [N] | [X%] | $[X] | [N] | $[X] | [X] | [Scale/Optimize/Pause] |137138## Budget Waste Report139**Total estimated waste:** $[X] ([X%] of total spend)140141### Wasted on zero-conversion items: $[X]142[List of keywords/ads/audiences with spend but no conversions]143144### Wasted on high-CPA items: $[X]145[List of items with CPA > 3x target]146147### Recommended saves: $[X]/month148[Specific items to pause]149150## Winners to Scale151| Item | CPA | Conv Rate | Current Spend | Recommended Spend |152| --- | --- | --- | --- | --- |153154## A/B Test Results155### [Test Name]156- Variant A: [Metric] (n=[N])157- Variant B: [Metric] (n=[N])158- Confidence: [X%]159- **Verdict:** [Winner / Continue / Inconclusive]160161## Budget Reallocation162| Channel | Current | Recommended | Change | Why |163| --- | --- | --- | --- | --- |164| [Channel] | $[X] | $[Y] | [+/-$Z] | [1-line reason] |165166**Projected impact:**167- Conversions: [N] → [N] (+[X%])168- Blended CPA: $[X] → $[Y] (-[X%])169170### Funnel Stage Coverage171[Coverage map with gaps identified]172173### New Channel Recommendations174#### [Channel Name]175- **Why test:** [Reasoning]176- **Recommended test budget:** $[X]/mo for [X weeks]177- **Success criteria:** CPA < $[X]178- **Competitors using it:** [Yes/No — who]179180## Action Plan181### Immediate (This Week)182- [ ] **Pause:** [Specific keywords, ads, audiences]183- [ ] **Scale:** [Specific items and bid/budget changes]184- [ ] **Add negatives:** [Specific keywords]185- [ ] **Reallocate:** [Specific dollar shifts]186187### This Month188- [ ] **Test:** [New ad angles, audiences, landing pages]189- [ ] **Restructure:** [Ad groups to split or merge]190- [ ] **Optimize:** [Bid strategy changes]191- [ ] **Monitor reallocation:** Track CPA shifts and diminishing returns192193### Next Month194- [ ] **Expand:** [New campaigns or channels]195- [ ] **Re-evaluate:** Run this analysis again with new data196```197198Save to `campaign-analysis-[YYYY-MM-DD].md` in the current working directory or the user-specified path.199200## Quality gate201202- [ ] Data was normalized into comparable CTR, CPC, conversion rate, CPA, ROAS, and CAC fields.203- [ ] Spend waste, winners, and inconclusive areas were separated.204- [ ] A/B tests used sample-size rules: 100 clicks per variant for CTR or 30 conversions per variant for CPA.205- [ ] Multi-channel recommendations used Efficiency Index and funnel-adjusted CAC when funnel data exists.206- [ ] Every pause, scale, test, or reallocation recommendation includes numeric evidence.207- [ ] The output includes an immediate, monthly, and next-month action plan.208209## References210211- [GooseWorks source skill](https://github.com/gooseworks-ai/goose-skills)
Run npx skillmds@latest add paulasilvatech/ad-campaign-analyzer-3 in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Analyze ad campaign performance data to diagnose waste, identify winners, validate A/B tests, compare channels, and recommend cuts, scaling, tests, and budget reallocation. Use when the user asks to analyze ad campaigns, find wasted spend, optimize Google Ads, Meta Ads, LinkedIn Ads, ROAS, CPA, CAC, or multi-channel ad budgets. It is listed under Marketing & Growth on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
paulasilvatech (@paulasilvatech) published this skill. Their other Agent Skills are listed on their SkillMD profile.