/revenue-audit
Audit an email marketing program for revenue leaks — missing flows, dormant high-value subscribers, under-segmentation, promo gaps, stale automations — ranked by estimated $ impact
$ npx -y skills add cognyai/claude-code-marketing-skills --skill revenue-audit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/revenue-audit
Context preview
The summary Claude sees to decide when to auto-load this skill.
Audit an email marketing program for revenue leaks — missing flows, dormant high-value subscribers, under-segmentation, promo gaps, stale automations — ranked by estimated $ impact
SKILL.md
revenue-audit.SKILL.mdname: revenue-audit
description: Audit an email marketing program for revenue leaks — missing flows, dormant high-value subscribers, under-segmentation, promo gaps, stale automations — ranked by estimated $ impact
version: "1.0.0"
author: Cogny AI
requires: cogny-mcp
platforms: [klaviyo, mailchimp, rule, get-a-newsletter]
user-invocable: true
argument-hint: ""
allowed-tools:
# Cogny Cloud (aggregated) namespace
- mcp__cogny__klaviyo__*
- mcp__cogny__mailchimp__*
- mcp__cogny__rule__*
- mcp__cogny__get_a_newsletter__*
- mcp__cogny__create_finding
- mcp__cogny__write_context_node
- mcp__cogny__read_context_node
# Cogny Solo / Lite (per-ESP direct) namespace
- mcp__klaviyo__*
- mcp__mailchimp__*
- mcp__rule__*
- mcp__get_a_newsletter__*
- WebFetch
- Bash
- Read
- Write
Revenue Audit
The "email growth consultant in a box." Scans your connected ESP for the revenue sitting on the table and ranks every finding by estimated dollar impact, so you know exactly what to fix first.
**Requires:** Cogny MCP + a connected ESP. [Sign up](https://cogny.com)
This is the skill to run once per quarter, or whenever you inherit an email program and need to know where to start.
Usage
`/revenue-audit` — full audit of the connected ESP
Prerequisites Check
Detect connected ESP (check both `mcp__cogny__<svc>__*` and `mcp__<svc>__*` namespaces). If the user has multiple connected, run against each and produce separate reports.
**Revenue data availability (cogny-mcp-proxy as of this writing):**
| ESP | Has flows/automations? | Has purchase/revenue data? | |-----|------------------------|----------------------------| | Klaviyo | ✓ (`list_flows`) | ✓ (via `list_events` with metric="Placed Order", `value` field) | | Mailchimp | ✓ (`tool_list_automations`) | ✗ — engagement only | | Rule | ✓ (`tool_list_journeys`) | ✗ — engagement only | | Get a Newsletter | ✗ — no flow concept exists | ✗ — engagement only |
For non-Klaviyo ESPs, revenue estimates must be either (a) supplied by the user (paste historical email revenue), or (b) flagged as "engagement uplift only" with no dollar figures.
Steps
1. Establish baseline context
Pull once and reference throughout:
- Total active subscribers
- Average open rate + CTR (last 90 days)
- **Klaviyo only:** Total email revenue (last 90 days) via `list_events` with `metric="Placed Order"`, summed `value` field, filtered to events attributed to email campaigns. This is the denominator for every % impact claim.
- **Klaviyo only:** Average AOV (total revenue / order count in period)
- List growth rate (last 90 days)
- Active flows / automations / journeys and their performance (Klaviyo / Mailchimp / Rule only — Get a Newsletter has no equivalent)
- Last 90 days of campaign sends
**If connected ESP is Mailchimp, Rule, or Get a Newsletter:** prompt the user for their approximate 90-day email revenue (or let them skip it). If they skip, use **estimated value per subscriber per month** = (industry benchmark $0.10–$2.00 depending on vertical) as a rough denominator, and clearly label every revenue estimate as "based on industry benchmark, not your actual data."
2. Run the nine checks
For each check, output: **finding title + estimated $ lift + evidence + recommended fix**.
Check 1 — Missing core flows / automations / journeys
Map "flow" to the right concept per ESP:
| ESP | Object | Tool | |-----|--------|------| | Klaviyo | Flow | `list_flows` + `get_flow` | | Mailchimp | Automation / Customer Journey | `tool_list_automations` + `tool_get_automation` | | Rule | Journey | `tool_list_journeys` | | Get a Newsletter | **No equivalent** — skip this check and note the limitation |
The highest-ROI flows and their typical revenue contribution in healthy ecom programs (Klaviyo benchmarks):
| Flow | Typical % of email revenue | Trigger | |------|---------------------------|---------| | Welcome series | 3–7% | New subscriber | | Abandoned cart | 5–12% | Cart created, not checked out | | Browse abandonment | 1–3% | Product viewed, no cart | | Post-purchase | 2–5% | Order placed | | Winback | 1–4% | No engagement in 60-120d | | Replenishment | 2–6% (consumables only) | Predicted reorder date | | Birthday / anniversary | 0.5–2% | Date token match | | VIP / thank-you | 1–3% | Top-tier LTV crossed |
For each missing or disabled flow, estimate lift: `total_email_revenue × benchmark_%` as the annualized $ left on the table (Klaviyo). For Mailchimp/Rule/Get a Newsletter without revenue data, frame the impact as engagement uplift (e.g., "typically adds X–Y% to total email engagement volume") and skip the dollar estimate unless the user provided a revenue baseline.
Check 2 — Dormant high-value subscribers (Klaviyo only)
Segment current active list by:
- **Ever purchased** × **engaged in last 60 days**
Pull purchase history via `list_events` with `metric="Placed Order"`. Group by `profile_id`, take max `value` sum per profile as LTV. Cross-reference against `list_profiles` last-engaged date.
Count subscribers who have purchased at least once but haven't opened/clicked in 60+ days. Estimate: `count × avg_AOV × 3% reactivation rate × 2 orders/year = annualized recoverable revenue`
**For Mailchimp / Rule / Get a Newsletter:** purchase data is not exposed. Degrade this check to "dormant deeply-engaged subscribers" — pull subscribers with high historical open+click counts who haven't engaged in 60+ days, present as engagement-uplift opportunity without a dollar figure.
Check 3 — Under-segmented broadcasts
Scan last 90 days of campaign sends. For each campaign, check if it was sent to:
- **"All subscribers" / full list** (bad default)
- **A meaningful segment** (engaged, purchased, category-preference, geography)
Flag any campaign sent to >80% of list where segmentation would plausibly apply. Estimate lift: `(segment_ctr - broadcast_ctr) / broadcast_ctr × revenue_of_that_campaign × number_of_similar_sends_per_year`.
Read more
name: revenue-audit description: Audit an email marketing program for revenue leaks — missing flows, dormant high-value subscribers, under-segmentation, promo gaps, stale automations — ranked by estimated $ impact version: "1.0.0" author: Cogny AI requires: cogny-mcp platforms: [klaviyo, mailchimp, rule, get-a-newsletter] user-invocable: true argument-hint: "" allowed-tools: # Cogny Cloud (aggregated) namespace - mcp__cogny__klaviyo__* - mcp__cogny__mailchimp__* - mcp__cogny__rule__* - mcp__cogny__get_a_newsletter__* - mcp__cogny__create_finding - mcp__cogny__write_context_node - mcp__cogny__read_context_node # Cogny Solo / Lite (per-ESP direct) namespace - mcp__klaviyo__* - mcp__mailchimp__* - mcp__rule__* - mcp__get_a_newsletter__* - WebFetch - Bash - Read - Write
Revenue Audit
The "email growth consultant in a box." Scans your connected ESP for the revenue sitting on the table and ranks every finding by estimated dollar impact, so you know exactly what to fix first.
**Requires:** Cogny MCP + a connected ESP. [Sign up](https://cogny.com)
This is the skill to run once per quarter, or whenever you inherit an email program and need to know where to start.
Usage
`/revenue-audit` — full audit of the connected ESP
Prerequisites Check
Detect connected ESP (check both `mcp__cogny__<svc>__*` and `mcp__<svc>__*` namespaces). If the user has multiple connected, run against each and produce separate reports.
**Revenue data availability (cogny-mcp-proxy as of this writing):**
| ESP | Has flows/automations? | Has purchase/revenue data? | |-----|------------------------|----------------------------| | Klaviyo | ✓ (`list_flows`) | ✓ (via `list_events` with metric="Placed Order", `value` field) | | Mailchimp | ✓ (`tool_list_automations`) | ✗ — engagement only | | Rule | ✓ (`tool_list_journeys`) | ✗ — engagement only | | Get a Newsletter | ✗ — no flow concept exists | ✗ — engagement only |
For non-Klaviyo ESPs, revenue estimates must be either (a) supplied by the user (paste historical email revenue), or (b) flagged as "engagement uplift only" with no dollar figures.
Steps
1. Establish baseline context
Pull once and reference throughout:
- Total active subscribers
- Average open rate + CTR (last 90 days)
- **Klaviyo only:** Total email revenue (last 90 days) via `list_events` with `metric="Placed Order"`, summed `value` field, filtered to events attributed to email campaigns. This is the denominator for every % impact claim.
- **Klaviyo only:** Average AOV (total revenue / order count in period)
- List growth rate (last 90 days)
- Active flows / automations / journeys and their performance (Klaviyo / Mailchimp / Rule only — Get a Newsletter has no equivalent)
- Last 90 days of campaign sends
**If connected ESP is Mailchimp, Rule, or Get a Newsletter:** prompt the user for their approximate 90-day email revenue (or let them skip it). If they skip, use **estimated value per subscriber per month** = (industry benchmark $0.10–$2.00 depending on vertical) as a rough denominator, and clearly label every revenue estimate as "based on industry benchmark, not your actual data."
2. Run the nine checks
For each check, output: **finding title + estimated $ lift + evidence + recommended fix**.
Check 1 — Missing core flows / automations / journeys
Map "flow" to the right concept per ESP:
| ESP | Object | Tool | |-----|--------|------| | Klaviyo | Flow | `list_flows` + `get_flow` | | Mailchimp | Automation / Customer Journey | `tool_list_automations` + `tool_get_automation` | | Rule | Journey | `tool_list_journeys` | | Get a Newsletter | **No equivalent** — skip this check and note the limitation |
The highest-ROI flows and their typical revenue contribution in healthy ecom programs (Klaviyo benchmarks):
| Flow | Typical % of email revenue | Trigger | |------|---------------------------|---------| | Welcome series | 3–7% | New subscriber | | Abandoned cart | 5–12% | Cart created, not checked out | | Browse abandonment | 1–3% | Product viewed, no cart | | Post-purchase | 2–5% | Order placed | | Winback | 1–4% | No engagement in 60-120d | | Replenishment | 2–6% (consumables only) | Predicted reorder date | | Birthday / anniversary | 0.5–2% | Date token match | | VIP / thank-you | 1–3% | Top-tier LTV crossed |
For each missing or disabled flow, estimate lift: `total_email_revenue × benchmark_%` as the annualized $ left on the table (Klaviyo). For Mailchimp/Rule/Get a Newsletter without revenue data, frame the impact as engagement uplift (e.g., "typically adds X–Y% to total email engagement volume") and skip the dollar estimate unless the user provided a revenue baseline.
Check 2 — Dormant high-value subscribers (Klaviyo only)
Segment current active list by:
- **Ever purchased** × **engaged in last 60 days**
Pull purchase history via `list_events` with `metric="Placed Order"`. Group by `profile_id`, take max `value` sum per profile as LTV. Cross-reference against `list_profiles` last-engaged date.
Count subscribers who have purchased at least once but haven't opened/clicked in 60+ days. Estimate: `count × avg_AOV × 3% reactivation rate × 2 orders/year = annualized recoverable revenue`
**For Mailchimp / Rule / Get a Newsletter:** purchase data is not exposed. Degrade this check to "dormant deeply-engaged subscribers" — pull subscribers with high historical open+click counts who haven't engaged in 60+ days, present as engagement-uplift opportunity without a dollar figure.
Check 3 — Under-segmented broadcasts
Scan last 90 days of campaign sends. For each campaign, check if it was sent to:
- **"All subscribers" / full list** (bad default)
- **A meaningful segment** (engaged, purchased, category-preference, geography)
Flag any campaign sent to >80% of list where segmentation would plausibly apply. Estimate lift: `(segment_ctr - broadcast_ctr) / broadcast_ctr × revenue_of_that_campaign × number_of_similar_sends_per_year`.
AI marketing skills for Claude Code, Cursor, Windsurf, and other AI coding tools. Audit SEO, analyze ads, research competitors, qualify leads — all from your terminal. Free skills need no account. Premium skills connect your real data for $9/mo.
Repo: cognyai/claude-code-marketing-skills
Other skills on claude-code-marketing-skills.
brand-kit
Build a portable brand-kit.json for the user's product — colors, typography, voice — that other skills (video, ad creative, landing page) can consume. Multiple…
cogny
Run Cogny marketing analysis tasks — fetch scheduled tasks, analyze ad accounts via MCP, report findings
community-pulse
Weekly read on Discord community health — joins, active channels, top contributors, themes, and unanswered questions
conversion-debug
Conversion Tracking Debugger — diagnose discrepancies across GTM, GA4, Google Ads & Meta Pixel with live API access, BigQuery validation queries, and…

