Skip to content
Marketing
Skill

/drop-off-rescue

Find contacts stalled at funnel stages (abandoned cart, signed-up-but-no-trial, trial-but-no-convert), draft stage-appropriate re-engagement emails, and schedule sends via your ESP — with dedupe so weekly reruns never double-send

From plugin
claude-code-marketing-skills
10251 skills
Install
$ npx -y skills add cognyai/claude-code-marketing-skills --skill drop-off-rescue --agent claude-code

How 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/drop-off-rescue

Context preview

The summary Claude sees to decide when to auto-load this skill.

Find contacts stalled at funnel stages (abandoned cart, signed-up-but-no-trial, trial-but-no-convert), draft stage-appropriate re-engagement emails, and schedule sends via your ESP — with dedupe so weekly reruns never double-send

SKILL.md

drop-off-rescue.SKILL.md
name: drop-off-rescue
description: Find contacts stalled at funnel stages (abandoned cart, signed-up-but-no-trial, trial-but-no-convert), draft stage-appropriate re-engagement emails, and schedule sends via your ESP — with dedupe so weekly reruns never double-send
version: "1.0.0"
author: Cogny AI
platforms: [klaviyo, mailchimp, rule, get-a-newsletter]
user-invocable: true
argument-hint: "[weekly|audit|free]"
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

Drop-off Rescue

Push stalled funnel contacts to the next step. This skill finds people who signed up but didn't convert, drafts stage-appropriate re-engagement emails, and (with an ESP MCP connected) schedules the send after explicit confirmation. Re-runnable weekly without double-sending — the skill tracks what was already sent per stage and skips contacts still inside their cooldown window.

**Works in three modes:**

  • `cloud` — Cogny MCP + ESP MCP: full automation, cross-ESP dedupe, findings
  • `solo` — ESP MCP only: tag-based dedupe, per-ESP automation
  • `free` — no MCP: pasted CSV of stalled contacts, draft-only output (you send manually)

Usage

/drop-off-rescue              # weekly rerun — default
/drop-off-rescue weekly       # same
/drop-off-rescue audit        # read-only: report stalls + what would be sent, write nothing
/drop-off-rescue free         # no MCP — paste CSV of stalled contacts

Designed to be scheduled weekly via `/loop` or `/schedule`. On reruns, already-nudged contacts are skipped; newly-stalled contacts are picked up; contacts that progressed get celebrated in the output.

Step 1 — Mode detection

Probe both MCP namespaces:

1. If `mcp__cogny__<svc>__*` tools are present for at least one ESP → **cloud** mode (and record that ESP as connected). 2. Else if `mcp__<svc>__*` tools are present for at least one ESP → **solo** mode. 3. Else → **free** mode.

If the argument is `free`, force free mode regardless of what's connected.

If multiple ESPs are connected, ask the user which one to run against (or offer to run all and cross-dedupe in cloud mode).

Step 2 — Canonical funnel stages

The skill works against a canonical stage taxonomy. The user can extend it, but these slugs drive tag names, campaign naming, and dedupe state — keep them stable across runs.

**E-commerce:** | Slug | Meaning | Typical stall | |------|---------|---------------| | `browse-abandoned` | Viewed product, never added to cart | 1–3 days | | `cart-abandoned` | Added to cart, never checked out | 1–2 days | | `checkout-abandoned` | Started checkout, didn't submit | hours–1 day | | `post-first-order-silent` | Made first order, no engagement since | 14–30 days |

**SaaS / trial funnel:** | Slug | Meaning | Typical stall | |------|---------|---------------| | `signup` | Created account, did nothing | 1–3 days | | `no-channel` | Signed up, no data source / integration connected | 3–7 days | | `no-trial` | Connected a channel, hasn't started the free trial | 7 days | | `no-client` | Trial active, hasn't connected the tool/client that uses it | 3 days | | `no-subscription` | Trial ended, didn't convert to paid | 0–3 days after trial | | `trial-started-inactive` | Started trial, no meaningful usage | 3–5 days | | `trial-ended-no-convert` | Trial ended, didn't subscribe | 7 days after end |

Cogny's own Solo funnel (signup → `no-channel` → `no-trial` → `no-client` → `no-subscription`) is a good reference implementation of this taxonomy.

If the user describes a funnel with stages that don't map to these slugs, add new kebab-case slugs — just keep them stable across reruns (the slug is the dedupe key).

Step 3 — Resolve current stage per contact

**Primary signal: ESP tags / segments.** Read contacts tagged `stage:<slug>` using the per-ESP tool:

| ESP | Read stage tag | Apply stage tag | Schedule/send | |-----|----------------|-----------------|---------------| | Klaviyo | `list_profiles` filtered by segment/property `stage` | `update_profile` (properties) | campaign create + schedule | | Mailchimp | `tool_list_members` filtered by tag | `tool_update_member` (tags) | campaign schedule | | Rule | `tool_list_subscribers` filtered by tag | `tool_add_tag_to_subscriber` | `tool_schedule_campaign` | | Get a Newsletter | `tool_list_contacts` filtered by tag | `tool_update_contact` (tag) | `tool_send_draft` with `time_to_send` |

**Klaviyo event-derived fallback (only when `stage:cart-abandoned` tag is absent):** query `list_events` with `metric="Added to Cart"` in the last 7 days, exclude profiles who have a subsequent `Placed Order`. Write the `stage:cart-abandoned` tag back via `update_profile` so the next run is consistent.

**Conversational fallback (any ESP, when no stage tags exist at all):**

1. Ask the user: "I don't see any `stage:*` tags on your contacts. Which of these funnel stages apply to your business?" — list the canonical slugs. 2. For each picked stage, ask: "Who is on this stage? Describe the condition — e.g. `joined list > 3 days ago AND no purchase`, or `clicked email X but never visited /signup`." 3. Translate each heuristic into the ESP's available filters (list membership, tags, date ranges, clicked links) and preview the matching count. 4. Offer (under the confirmation gate in Step 7) to apply `stage:<slug>` tags now, so future runs are fully automated.

Step 4 — Already-sent detection (the core mechanism)

Weekly reruns must not re-send the same stage email to the same contact. The skill uses a **three-layer hybrid**:

Layer 1 — contact tag (primary, all modes with an ESP connected)

On every success

Read more
Ships withclaude-code-marketing-skills

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.

Get the whole plugin
Stats
102
Stars
12
Forks
Maintained
Maintenance
HTML
Language
3mo ago
Last commit
5mo ago
Created

Repo: cognyai/claude-code-marketing-skills