Skip to content
Marketing
Skill

/ad-lead-quality-analyzer

For paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.

From plugin
goose-skills
1.3k181 skills

Claude Code

$ npx -y skills add gooseworks-ai/goose-skills --skill ad-lead-quality-analyzer --agent claude-code

SKILL.md

ad-lead-quality-analyzer.SKILL.md
name: ad-lead-quality-analyzer
description: For paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.

Ad Lead Quality Analyzer

Meta optimizes for whatever conversion event you fire. For lead-gen and participant-recruitment campaigns that's almost always "signup" — but a signup is worthless if the lead never qualifies, never completes the requested action, or never gets paid out. The lowest-CPA campaign is often the one bringing in the *worst* leads.

This skill joins what the ad platform knows (spend, signups) with what your own product knows (downstream funnel) and replaces vanity CPA with **true CAC per qualified lead**. It then classifies every creative into actionable buckets so you stop scaling the wrong winners.

**Core principle:** The ad platform's CPA is a half-truth. Real optimization needs both halves of the funnel — pre-signup (the platform has it) and post-signup (you have it). Until they're joined, you're flying blind.

When to Use

  • "Which ads are bringing in real leads vs. junk?"
  • "True CAC per qualified contributor / customer / participant"
  • "Why is my lowest-CPA campaign performing worst downstream?"
  • "Audit lead quality across creatives / audiences / placements"
  • "Should I trust Meta's CPA when scaling?"
  • "Find the creatives that look like winners but aren't"

Pipeline Pattern Assumptions (Read First)

This skill is opinionated about **what** to measure (true CAC per qualified lead, with cohort maturation, with vanity scoring) and agnostic about **how** the data is sourced.

It assumes one of three standard attribution patterns:

| Pattern | Setup | Join Key | |---|---|---| | **A. UTM-only** *(most common)* | UTM params captured on signup form, stored on lead/user record. Downstream events joined by user_id inside your DB. | `utm_content` (typically the ad ID) on both sides, or `fbclid` | | **B. UTM + CAPI send-back** *(best)* | Same as A, plus your app fires Conversions API events back to Meta when downstream stages hit. Meta then optimizes for quality, not signups. | `event_id` / `external_id` | | **C. Meta Lead Ads + CRM sync** | Meta-hosted lead form, `lead_id` syncs to CRM/DB, joined there. | `lead_id` |

If none of these patterns is wired up, the skill switches to **`tracking-gap` mode** — it produces a fix-the-tracking report instead of an analysis.

Phase 0: Discovery Interview

6 short questions. Don't proceed until each is answered (default = "I don't know — let's find out").

1. **Where do downstream events live?** (Postgres / MySQL / Airtable / custom internal admin / spreadsheet / "no idea") 2. **Can the agent query that source directly?** (DB credentials / API endpoint / CSV export / "needs a person to pull it") 3. **Does the signup form capture `utm_*` params or `fbclid`?** ("I don't know" → inspect the signup form's HTML / network requests) 4. **Is the app sending CAPI events back to Meta** for any downstream stage? (None / signup-only / signup + qualification / full funnel) 5. **What is a "qualified lead"?** (Default: ≥1 unit of value-producing action completed within 14 days of signup. Examples: first purchase; demo attended; subscription activated; trial converted; first task completed and paid out) 6. **Cost basis per qualified lead?** (Flat payout, variable, tiered by quality, or N/A — needed to compute margin)

Output of Phase 0: a one-paragraph **Pipeline Brief** stating the assumed pattern (A/B/C), the join key, the qualification definition, and any unknowns.

Phase 1: Tracking Validation (Gating Step)

Pull a sample of 10–20 recent signups from the downstream source. For each, check:

  • Is `utm_source` / `utm_campaign` / `utm_content` present? (Or `fbclid`? Or `lead_id`?)
  • Does the join key resolve back to a specific Meta ad?
  • Are there orphan signups (in your DB but no Meta join key)?
  • Are there orphan Meta signups (in Meta but no matching DB record)?

**Coverage thresholds:**

| Coverage | Action | |---|---| | ≥80% joinable | Proceed to Phase 2 (`analysis` mode) | | 50–80% joinable | Proceed with explicit confidence caveat on every finding | | <50% joinable | Switch to **`tracking-gap` mode**. Skip Phases 2–6. Output the gap report. |

Output of Phase 1: a **Data Quality Report** with coverage %, sample of orphan records, and exact field-level findings.

Phase 2: Build the Per-Creative Funnel

For every ad / ad set / campaign with statistical volume (default ≥30 signups in the window), construct:

| Stage | Count | Conv. from prev. | What a drop here means | |---|---|---|---| | Impressions | n | — | — | | Link Clicks | n | CTR | Hook / placement issue | | Signups | n | Click → Signup | LP / form friction (use `analyze-performance`, whose diagnosis checks page and message match) | | Qualified action started | n | Signup → Started | **Vanity signups** — wrong promise in the ad | | Qualified action approved | n | Started → Approved | Wrong audience or fraud | | Payout / value event | n | Approved → Paid | The "real" conversion | | Repeat action (configurable window) | n | Retention | One-and-done quality |

The skill should pull Meta-side data via the existing Meta Marketing API connection (MCP, native API, or pasted CSV) and downstream-side data via whichever source Phase 0 identified.

Phase 3: Compute True CAC

Per creative / ad set / campaign:

  • **Platform CPA** = spend ÷ signups *(what Meta reports)*
  • **True CAC** = spend ÷ qualified leads *(what actually matters)*
  • **Quality Multiplier** = True CAC ÷ Platform CPA *(how badly the platform is misleading you per ad — higher = worse vanity problem)*
  • **Margin per qualified lead** = (cost-basis or LTV-equivalent value) − True CAC

Phase 4: Score and Classify Each Creative

Compute three quality scores per creative with sufficient volume:

  • **Vanity score
Read more
@gooseworks-ai
Ships withgoose-skills

Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.

1.3k181 skills
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.3k
Star history of gooseworks-ai/goose-skills on GitHub, a chart by star-history.com

Other skills on goose-skills.

goose-ads

goose-ads

Edit, resize, animate and study image ads with GooseWorks in this chat. New static or image ads go to the make-static-ads skill…

goose-video

goose-video

Make a video ad in this chat from a real reference ad, found or theirs; styles are the fallback. Follow every answer's next_step.

gooseworks

gooseworks

GooseWorks growth coworker and router for markets, competitors, audiences, creators, campaigns, ads, photos, graphics, video,…

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag2w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about ad-lead-quality-analyzer.

Which coding agents can use ad-lead-quality-analyzer?
ad-lead-quality-analyzer installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.