{"id":"1c8c3841-bd8b-480c-898f-5b12735032cb","shortId":"TpDEHA","kind":"skill","title":"drop-off-rescue","tagline":"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","description":"# Drop-off Rescue\n\nPush 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.\n\n**Works in three modes:**\n- `cloud` — Cogny MCP + ESP MCP: full automation, cross-ESP dedupe, findings\n- `solo` — ESP MCP only: tag-based dedupe, per-ESP automation\n- `free` — no MCP: pasted CSV of stalled contacts, draft-only output (you send manually)\n\n## Usage\n\n```\n/drop-off-rescue              # weekly rerun — default\n/drop-off-rescue weekly       # same\n/drop-off-rescue audit        # read-only: report stalls + what would be sent, write nothing\n/drop-off-rescue free         # no MCP — paste CSV of stalled contacts\n```\n\nDesigned 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.\n\n## Step 1 — Mode detection\n\nProbe both MCP namespaces:\n\n1. If `mcp__cogny__<svc>__*` tools are present for at least one ESP → **cloud** mode (and record that ESP as connected).\n2. Else if `mcp__<svc>__*` tools are present for at least one ESP → **solo** mode.\n3. Else → **free** mode.\n\nIf the argument is `free`, force free mode regardless of what's connected.\n\nIf multiple ESPs are connected, ask the user which one to run against (or offer to run all and cross-dedupe in cloud mode).\n\n## Step 2 — Canonical funnel stages\n\nThe 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.\n\n**E-commerce:**\n| Slug | Meaning | Typical stall |\n|------|---------|---------------|\n| `browse-abandoned` | Viewed product, never added to cart | 1–3 days |\n| `cart-abandoned` | Added to cart, never checked out | 1–2 days |\n| `checkout-abandoned` | Started checkout, didn't submit | hours–1 day |\n| `post-first-order-silent` | Made first order, no engagement since | 14–30 days |\n\n**SaaS / trial funnel:**\n| Slug | Meaning | Typical stall |\n|------|---------|---------------|\n| `signup` | Created account, did nothing | 1–3 days |\n| `no-channel` | Signed up, no data source / integration connected | 3–7 days |\n| `no-trial` | Connected a channel, hasn't started the free trial | 7 days |\n| `no-client` | Trial active, hasn't connected the tool/client that uses it | 3 days |\n| `no-subscription` | Trial ended, didn't convert to paid | 0–3 days after trial |\n| `trial-started-inactive` | Started trial, no meaningful usage | 3–5 days |\n| `trial-ended-no-convert` | Trial ended, didn't subscribe | 7 days after end |\n\nCogny's own Solo funnel (signup → `no-channel` → `no-trial` → `no-client` → `no-subscription`) is a good reference implementation of this taxonomy.\n\nIf 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).\n\n## Step 3 — Resolve current stage per contact\n\n**Primary signal: ESP tags / segments.** Read contacts tagged `stage:<slug>` using the per-ESP tool:\n\n| ESP | Read stage tag | Apply stage tag | Schedule/send |\n|-----|----------------|-----------------|---------------|\n| Klaviyo | `list_profiles` filtered by segment/property `stage` | `update_profile` (properties) | campaign create + schedule |\n| Mailchimp | `tool_list_members` filtered by tag | `tool_update_member` (tags) | campaign schedule |\n| Rule | `tool_list_subscribers` filtered by tag | `tool_add_tag_to_subscriber` | `tool_schedule_campaign` |\n| Get a Newsletter | `tool_list_contacts` filtered by tag | `tool_update_contact` (tag) | `tool_send_draft` with `time_to_send` |\n\n**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.\n\n**Conversational fallback (any ESP, when no stage tags exist at all):**\n\n1. 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.\n2. 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`.\"\n3. Translate each heuristic into the ESP's available filters (list membership, tags, date ranges, clicked links) and preview the matching count.\n4. Offer (under the confirmation gate in Step 7) to apply `stage:<slug>` tags now, so future runs are fully automated.\n\n## Step 4 — Already-sent detection (the core mechanism)\n\nWeekly reruns must not re-send the same stage email to the same contact. The skill uses a **three-layer hybrid**:\n\n### Layer 1 — contact tag (primary, all modes with an ESP connected)\n\nOn every successful send, write three tags to the recipient:\n\n- `rescue-sent:<slug>:<YYYY>-W<WW>` — append-only; one per week nudged\n- `rescue-last-stage:<slug>` — overwritten; always reflects the latest stage nudged (enables stage-advancement detection in one read)\n- `rescue-last-sent:<YYYY-MM-DD>` — overwritten; used for cooldown math and the global 7-day anti-fatigue rule\n\nWhy tag-based primary: works in solo mode without a context tree, survives cross-machine usage, all four ESPs expose a tag-write tool, debuggable by a human in the ESP UI, bulk-clearable if something goes wrong.\n\n### Layer 2 — ESP campaign-name convention (fallback)\n\nEvery rescue campaign is named exactly:\n\n```\ndrop-off-rescue / <stage-slug> / <YYYY>-W<WW> / <variant A|B>\n```\n\nOn rerun, if a contact's tags were stripped (manual edit, sync tool), `list_campaigns` / `tool_list_campaigns` / `tool_list_sent` in the last 35 days is scanned for matching names. Recipients are cross-referenced via the per-ESP report tool (`list_events`, `tool_get_report`, `tool_get_campaign_statistics`, `tool_get_report`).\n\n**Deliberately no markers in subject or preheader** — the user-visible inbox copy stays clean.\n\n### Layer 3 — Cogny context-tree log (cloud mode only)\n\nWrite on every send:\n\n```\ninsights/drop-off-rescue/<slug>/<sha256(email)[:12]>/last-sent\n  → { \"week\": \"2026-W17\", \"variant\": \"A\", \"esp\": \"klaviyo\", \"ts\": \"2026-04-24T10:00Z\" }\n```\n\nRead on the next run. This layer catches cross-ESP duplication — the same contact living in both Klaviyo and Mailchimp under the same org won't get two nudges in the same week.\n\n### Dedupe decision\n\nA contact is classed **\"already nudged at current stage within cooldown\"** if **any** of the three layers reports a hit inside the cooldown window. Cooldown defaults (printed in output, user-overridable):\n\n| Stage | Cooldown |\n|-------|----------|\n| `cart-abandoned`, `checkout-abandoned` | 7d |\n| `browse-abandoned`, `signup`, `no-channel` | 14d |\n| `no-trial`, `no-client`, `no-subscription`, `trial-started-inactive` | 21d |\n| `post-first-order-silent`, `trial-ended-no-convert` | 30d |\n\n## Step 5 — Classify every contact (the weekly loop)\n\nFor each stage, read the full `stage:<slug>` cohort, then classify each contact:\n\n| Class | Condition | Action this run |\n|-------|-----------|-----------------|\n| **New stall** | On `stage:<slug>` now, no `rescue-sent:<slug>:*` ever | Eligible — variant A |\n| **Cooldown skip** | Has `rescue-sent:<slug>:<week>` inside the stage's cooldown window | Skip, count as \"cooldown-skipped\" |\n| **Re-stall** | Past cooldown, still on `stage:<slug>`, ≤2 prior rescue sends at this stage | Eligible — variant B (tone shift) |\n| **Progressed** | `rescue-last-stage` is an earlier stage than the current stage tag | Celebrate in output; nudge at new stage |\n| **Regressed** | `rescue-last-stage` is a later stage than the current stage tag | Flag as anomaly, don't auto-nudge (data issue) |\n| **Exhausted** | 3 prior rescue sends at this stage without progression | Apply `rescue-exhausted:<slug>`, exclude until stage changes |\n| **Exited** | No stage tag at all, but has `rescue-last-stage` | Clear all `rescue-*` tags in cleanup pass |\n\n**Hard caps (enforced regardless of per-stage cooldowns):**\n\n- **3 nudges max per contact per stage** before they go to `rescue-exhausted:<slug>`.\n- **Max one rescue email per contact per rolling 7 days across all stages.** If a contact would be hit for two stages in one week, emit only the higher-priority stage (priority order: `cart-abandoned` > `checkout-abandoned` > `browse-abandoned` > `signup` > `no-channel` > `no-trial` > `no-client` > `no-subscription` > activation-stages > `post-first-order-silent` > `trial-ended-no-convert`) and defer the other.\n\n## Step 6 — Draft emails per stage\n\nFor every stage with ≥1 eligible contact, draft **two variants**:\n\n- **Variant A** — direct, short, outcome-led. For first-time nudges.\n- **Variant B** — value-led, longer, addresses likely objections. For re-stalls (second+ nudge at the same stage).\n\nFor every variant produce:\n\n```\nStage: <slug>\nVariant: A | B\nSubject:    <≤55 chars, in brand voice>\nPreheader:  <85–100 chars, extends subject, never repeats it>\nBody:       <markdown>\nPrimary CTA: <label> → <URL with UTM: utm_source=email&utm_medium=rescue&utm_campaign=<slug>-<YYYY>WWW&utm_content=<A|B>>\n```\n\n**Tone guidance per stage:**\n\n| Stage | Variant A tone | Variant B tone |\n|-------|----------------|----------------|\n| `cart-abandoned` | Quick, helpful, \"still thinking about X?\" | Urgency + social proof + small incentive |\n| `checkout-abandoned` | \"Technical hiccup? We saved your cart.\" | Offer + friction-remover (guest checkout, Apple Pay) |\n| `browse-abandoned` | Curiosity, reference the viewed category | Content-led (buying guide, comparison) |\n| `signup` / `no-channel` | Helpful, \"the one step that unlocks it\" | Founders' note, reply-to-me tone |\n| `no-trial` / `no-client` / `no-subscription` | Clear next action + short how-to | Objection-handling (\"what's holding you back?\") |\n| `post-first-order-silent` | Thank-you + relevant follow-up | Cross-sell + reminder of brand value |\n| `trial-started-inactive` | \"Here's the fastest win you can get in 5 min\" | Use case + customer example |\n| `trial-ended-no-convert` | \"Any reason this didn't land?\" | Small discount + plan recommendation |\n\nUse the brand's actual voice — if the user has a brand URL, WebFetch it first to pick up tone. No \"Dear Valued Customer\" filler. One primary CTA per email.\n\n## Step 7 — Confirmation gate (before any write)\n\n**No MCP write tool fires before the user explicitly approves.** This applies to both tag applications (Step 3 fallback) and email sends / schedules.\n\nFor every stage that has eligible contacts, print this block verbatim and wait:\n\n```\nAbout to send via <ESP>. Nothing has been sent yet.\n\nStage:            <slug>       (<N> eligible)\nCooldown applied: <d>d         (<M> skipped as already-nudged)\nExhausted:        <K>          (hit 3-nudge cap — excluded)\nVariant:          A | B        (<label — e.g. \"first nudge\" or \"re-stall, value-led\">)\nSchedule:         <ISO timestamp, recipient-local>  |  immediate\nCampaign name:    drop-off-rescue / <slug> / <YYYY>-WWW / <A|B>\n\nDry-run preview (first 3 recipients):\n  1. <email>    subject: <rendered>\n  2. <email>    subject: <rendered>\n  3. <email>    subject: <rendered>\n\nState writes on send:\n  - tag rescue-sent:<slug>:<YYYY>-WWW  → <N> contacts\n  - tag rescue-last-stage:<slug>       → <N> contacts (overwrite)\n  - tag rescue-last-sent:<YYYY-MM-DD>  → <N> contacts (overwrite)\n  - context-tree log (cloud mode)      → <N> entries\n\nReply with:\n  send           → execute now via ESP MCP\n  schedule <ts>  → queue for that recipient-local time\n  variant B      → switch variant and reprint this block\n  skip           → don't send, but log a \"no-send\" finding and continue\n  cancel         → abort everything, no writes\n```\n\nIf the ESP lacks native scheduling (today: none of the four, but guard for future gaps), return the draft plus a suggested `at`/cron string the user can run themselves.\n\n**Before scheduling, always check for flow conflicts:** read `list_flows` / `tool_list_automations` / `tool_list_journeys`. If a native flow already targets a segment equivalent to the current stage, warn:\n\n```\n⚠️  Heads up — a native <ESP> flow already targets this segment:\n    \"<flow name>\"  (last modified <date>, status: <active|paused>)\n\n    Running rescue alongside it risks double-touching the contact. Options:\n      [1] Pause rescue for this stage, let the native flow do the work\n      [2] Pause the native flow, run rescue this week only\n      [3] Proceed anyway (document the overlap)\n\n    Which?\n```\n\nGet a Newsletter has no flow object, so this check is skipped there.\n\n## Step 8 — Consent & suppression guards\n\nBefore any send:\n\n- **Drop contacts with `consent:marketing = false`** (or the ESP equivalent: unsubscribed, cleaned, bounced, or on a suppression list).\n- **Drop contacts in an active `rescue-exhausted:<slug>` state**.\n- **Drop contacts with a `do-not-contact` / `gdpr-suppressed` tag** regardless of stage.\n- In free mode, the pasted CSV must include a `consent` column; rows with `false`/`no`/`0` are dropped with a console warning.\n\nIf >10% of the eligible list is dropped for consent reasons, surface this at the top of the output — it usually means the user's list hygiene needs attention and a `/revenue-audit` or `/winback-engine` run first.\n\n## Step 9 — Free mode (no MCP)\n\nTriggered when neither `mcp__cogny__*` nor any `mcp__<esp>__*` resolves, or when the user passes `free` explicitly.\n\n1. Ask the user to paste a CSV with columns: `email,stage,stalled_since,consent` (stage must be a slug from Step 2; `stalled_since` is ISO date; `consent` is `true`/`false`).\n2. Ask for brand name + one-line brand voice (same lightweight discovery as `/welcome-series`). Optionally ask for a brand URL to WebFetch.\n3. Draft both variants per stage.\n4. Output a manual-send bundle:\n   - One `.csv` of eligible contacts per stage (filtered for consent)\n   - Drafted email copy (markdown + HTML) per variant per stage\n   - A copy-paste subject/preheader table\n5. **No state is persisted.** The user owns dedupe — output explicitly calls this out.\n6. End with the upsell:\n\n```\n───────────────────────────────\nReady to stop managing this by hand?\n\nConnect your ESP via Cogny MCP and the next run will:\n  • Dedupe against what you've already sent\n  • Apply rescue-sent:* tags automatically\n  • Schedule the send directly in your ESP after your confirmation\n\n→ https://cogny.com\n───────────────────────────────\n```\n\n## Step 10 — Output format\n\n```\nDrop-off rescue — <ESP or \"free mode\"> — week <YYYY>-W<WW>\nMode: cloud | solo | free\n\nFunnel movement since last run:\n  new stalls:        +<N>\n  progressions:      +<N>     (<stage_a> → <stage_b>: N; <stage_c> → <stage_d>: N)\n  regressions:       <N>\n  exited funnel:     <N>\n  newly exhausted:   <N>\n\nConsent drops: <N>  (<pct>% of eligible — <OK | run /revenue-audit>)\n\n──────────────────────────────────────────────────────\nStage: cart-abandoned\n  Eligible: <N>   Cooldown-skip: <M>   Exhausted: <K>\n  Suggested variant: A     Send window: Tue–Thu, 10am recipient-local\n\n  Top 10 eligible contacts:\n  | email               | stalled since | prior nudges |\n  |---------------------|---------------|--------------|\n  | ...                 | 2026-04-21    | 0            |\n\n  Email draft — variant A:\n    Subject:    ...\n    Preheader:  ...\n    Body:       ...\n    CTA:        [label] → <URL with UTM>\n\n  Email draft — variant B:\n    ...\n\n  [confirmation block from Step 7]\n\n──────────────────────────────────────────────────────\nStage: no-channel\n  ...\n```\n\nOne such block per stage with eligible contacts. Stages with zero eligible (everyone cooldown-skipped or exhausted) get a one-line summary instead of a full block.\n\n## Step 11 — Findings (cloud mode)\n\nFor each stage with eligible contacts, write a finding:\n\n```json\n{\n  \"title\": \"Drop-off rescue: <N> contacts stalled at <stage-slug>\",\n  \"body\": \"<N> contacts on stage:<slug> are past their cooldown. Variant <A|B> drafted; send scheduled for <ts or 'awaiting approval'>. Previous week: <M> contacts progressed out of this stage after rescue.\",\n  \"action_type\": \"rescue_campaign\",\n  \"expected_outcome\": \"<e.g. 'Expect 5–10% of cart-abandoners to complete checkout within 72h'>\",\n  \"estimated_impact_usd\": <number_or_null>,\n  \"priority\": \"<high|medium|low>\"\n}\n```\n\n`estimated_impact_usd` is computed only when Klaviyo's `list_events` gives AOV × realistic reactivation rate (5–10% for cart stages, 2–5% for SaaS stages). For other ESPs without purchase data, set to `null` and note \"engagement uplift only.\"\n\nPersist the weekly summary under `insights/drop-off-rescue/<YYYY>-W<WW>/summary` so next run can diff.\n\n## Step 12 — End-of-run tag inventory\n\nFinal output section — gives the user visibility into state sprawl:\n\n```\nrescue-* tag inventory on <ESP>:\n  rescue-sent:cart-abandoned:2026-W17   → 42 contacts\n  rescue-sent:no-channel:2026-W17       → 18 contacts\n  rescue-last-stage:cart-abandoned      → 67 contacts\n  rescue-exhausted:no-channel           → 4 contacts\n  rescue-last-stage:no-channel          → 22 contacts\n  (... older weeks)\n\nCleanup: reply \"clear weeks before 2026-W14\" to bulk-remove old rescue-sent:* tags.\n```\n\n## Notes\n\n- **Only Klaviyo exposes cart/order events** through the cogny-mcp-proxy. `cart-abandoned` / `checkout-abandoned` / `post-first-order-silent` stages on Mailchimp, Rule, or Get a Newsletter rely entirely on tag-driven stage resolution — the user must be tagging contacts from their own e-com data.\n- **Get a Newsletter has no flow/automation object.** The Step 7 flow-conflict check is skipped. Rescue is always scheduled as individual drafts via `tool_send_draft` with `time_to_send`.\n- **Klaviyo event-derived `cart-abandoned` is soft** — once the skill synthesises it from `list_events`, it immediately writes the tag via `update_profile` so the next run reads it from the primary signal.\n- **Don't conflict with native flows.** If the user already runs a Klaviyo abandoned-cart flow, defer to it — the rescue skill is for stages where a native flow doesn't exist or isn't effective.\n- **The 7-day global anti-fatigue cap is non-negotiable.** Even if a contact qualifies for three stages in one week, they get at most one rescue email that week, priority-ordered.\n- **Weekly rerun via `/loop`:** `/loop 7d /drop-off-rescue weekly`. The skill's own state (tags + context tree) ensures idempotence — running it twice in one day is safe, it will just report \"all contacts inside cooldown\" the second time.\n- **Reference implementation:** Cogny's own Solo funnel (at `src/app/api/admin/solo-funnel/` and `src/lib/email/reactivation-email.ts`) shows this pattern in production — 4 stage-specific templates, a `solo_reactivation_emails` log table tracking `stage_at_send` + `sent_at`, and an admin dashboard gating every send.\n\n────────────────────────────────────────────────\nReady to automate the weekly nudge cycle?\n\nConnect your ESP via Cogny MCP and the rerun will skip already-nudged contacts,\napply rescue state tags, and schedule sends directly — all gated by your approval.\n\n→ https://cogny.com\n────────────────────────────────────────────────","tags":["drop","off","rescue","claude","code","marketing","skills","cognyai","agent-skills","ai-agents","claude-code","claude-skills"],"capabilities":["skill","source-cognyai","skill-drop-off-rescue","topic-agent-skills","topic-ai-agents","topic-claude-code","topic-claude-skills","topic-cluade-mcp","topic-cursor","topic-geo","topic-growth-hacking","topic-llm","topic-marketing","topic-mcp","topic-seo"],"categories":["claude-code-marketing-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cognyai/claude-code-marketing-skills/drop-off-rescue","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cognyai/claude-code-marketing-skills","source_repo":"https://github.com/cognyai/claude-code-marketing-skills","install_from":"skills.sh"}},"qualityScore":"0.474","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 48 github stars · SKILL.md body (19,452 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:58:06.068Z","embedding":null,"createdAt":"2026-04-24T12:57:27.779Z","updatedAt":"2026-05-18T18:58:06.068Z","lastSeenAt":"2026-05-18T18:58:06.068Z","tsv":"'-04':1068,2368 '-21':2369 '-24':1069 '/cron':1913 '/drop-off-rescue':159,163,166,179,2818 '/last-sent':1058 '/loop':194,2815,2816 '/revenue-audit':2121,2337 '/schedule':196 '/signup':762 '/summary':2530 '/welcome-series':2194 '/winback-engine':2123 '0':461,2083,2370 '00z':1071 '1':221,228,354,366,378,406,705,838,1446,1811,1975,2148 '10':2091,2303,2359,2500 '100':1499 '10am':2354 '11':2423 '12':1057,2537 '14':391 '14d':1156 '18':2576 '2':248,305,367,732,949,1246,1813,1988,2170,2180,2504 '2026':1060,1067,2367,2564,2574,2611 '21d':1170 '22':2602 '3':262,355,407,419,449,462,475,552,749,763,1041,1304,1349,1730,1770,1809,1815,1998,2203 '30':392 '30d':1181 '35':994 '4':785,806,2209,2593,2865 '42':2566 '5':476,1183,1655,2241,2499,2505 '55':1492 '6':1437,2255 '67':2585 '7':420,434,488,667,793,900,1371,1707,2388,2683,2778 '7d':1148,2817 '8':2019 '85':1498 '9':2127 'abandon':11,347,359,371,652,682,1144,1147,1151,1399,1402,1405,1538,1552,1569,2341,2563,2584,2636,2639,2711,2754 'abandoned-cart':2753 'abort':1886 'absent':655 'account':403 'across':336,543,1373 'action':1204,1610,2470 'activ':440,1420,1962,2048 'activation-stag':1419 'actual':1680 'ad':351,360,661 'add':533,615 'address':1470 'admin':2884 'advanc':883 'ago':751 'alongsid':1966 'alreadi':103,200,808,1112,1766,1940,1955,2283,2749,2908 'already-nudg':199,1765,2907 'already-s':807 'alway':874,1922,2692 'anomali':1295 'anti':903,2782 'anti-fatigu':902,2781 'anyway':2000 'aov':2495 'append':863 'append-on':862 'appl':1565 'appli':577,724,795,1313,1724,1761,2285,2911 'applic':1728 'appropri':27,73 'approv':1722,2923 'argument':268 'ask':284,706,737,2149,2181,2196 'attent':2118 'audit':167 'auto':1299 'auto-nudg':1298 'autom':125,142,804,1932,2891 'automat':2290 'avail':771 'b':969,1255,1465,1490,1524,1534,1776,1803,1865,2383,2455 'back':684,1622 'base':137,909 'block':1745,1871,2385,2395,2421 'bodi':1506,2377,2445 'bounc':2038 'brand':1495,1640,1678,1687,2183,2188,2199 'brows':346,1150,1404,1568 'browse-abandon':345,1149,1403,1567 'bulk':942,2615 'bulk-clear':941 'bulk-remov':2614 'bundl':2215 'busi':727 'buy':1578 'call':2252 'campaign':328,591,605,621,952,958,984,987,1020,1519,1795,2473 'campaign-nam':951 'cancel':1885 'canon':306,314,730 'cap':1341,1772,2784 'cart':12,353,358,362,651,663,681,1143,1398,1537,1558,2340,2502,2562,2583,2635,2710,2755 'cart-abandon':357,650,680,1142,1397,1536,2339,2561,2582,2634,2709 'cart/order':2626 'case':537,1658 'catch':1079 'categori':1574 'celebr':216,1272 'chang':1320 'channel':411,427,500,1155,1409,1584,2392,2573,2592,2601 'char':1493,1500 'check':364,1923,2014,2687 'checkout':370,373,1146,1401,1551,1564,2638 'checkout-abandon':369,1145,1400,1550,2637 'class':1111,1202 'classifi':1184,1199 'clean':1039,2037 'cleanup':1338,2606 'clear':1333,1608,2608 'clearabl':943 'click':756,778 'client':438,506,1162,1415,1604 'cloud':119,240,302,1047,1845,2313,2425 'cogni':120,231,492,1042,2136,2271,2631,2851,2900 'cogny-mcp-proxi':2630 'cogny.com':2301,2924 'cohort':1197 'column':2078,2157 'com':2672 'commerc':340 'comparison':1580 'comput':2487 'condit':745,1203 'confirm':89,789,1708,2300,2384 'conflict':1926,2686,2742 'connect':83,247,278,283,418,425,443,847,2267,2896 'consent':2020,2029,2077,2099,2162,2176,2225,2331 'consist':693 'consol':2088 'contact':6,54,109,150,187,202,208,212,557,564,627,633,718,828,839,974,1086,1109,1186,1201,1353,1368,1378,1448,1742,1826,1832,1839,1973,2027,2045,2054,2060,2220,2361,2400,2432,2442,2446,2462,2567,2577,2586,2594,2603,2666,2792,2843,2910 'content':1522,1576 'content-l':1575 'context':917,1044,1842,2826 'context-tre':1043,1841 'continu':1884 'convent':954 'convers':694 'convert':23,69,458,482,1180,1431,1665 'cooldown':113,895,1118,1130,1132,1141,1220,1230,1236,1242,1348,1760,2344,2407,2452,2845 'cooldown-skip':1235,2343,2406 'copi':1037,2228,2237 'copy-past':2236 'core':812 'count':784,1233 'creat':402,592 'cross':127,299,921,1004,1081,1636 'cross-dedup':298 'cross-esp':126,1080 'cross-machin':920 'cross-referenc':1003 'cross-sel':1635 'csv':147,184,2073,2155,2217 'cta':1508,1703,2378 'curios':1570 'current':554,1115,1269,1290,1947 'custom':1659,1699 'cycl':2895 'd':1762 'dashboard':2885 'data':415,1301,2514,2673 'date':776,2175 'day':356,368,379,393,408,421,435,450,463,477,489,668,750,901,995,1372,2779,2835 'dear':1697 'debugg':933 'decis':1107 'dedup':39,129,138,300,331,549,1106,2249,2278 'default':162,1133 'defer':1433,2757 'deliber':1025 'deriv':645,2708 'describ':521,743 'design':188 'detect':223,810,884 'didn':67,374,456,485,1669 'diff':2535 'direct':1454,2294,2918 'discount':1673 'discoveri':2192 'do-not-contact':2057 'document':2001 'doesn':2770 'doubl':45,96,1970 'double-send':44,95 'double-touch':1969 'draft':24,70,152,637,1438,1449,1908,2204,2226,2372,2381,2456,2696,2700 'draft-on':151 'dri':1805 'drive':325 'driven':2658 'drop':2,48,963,1798,2026,2044,2053,2085,2097,2307,2332,2439 'drop-off':47,2306,2438 'drop-off-rescu':1,962,1797 'dry-run':1804 'duplic':1083 'e':339,2671 'e-com':2670 'e-commerc':338 'e.g':746,1778 'earlier':1265 'edit':980 'effect':2776 'elig':1217,1253,1447,1741,1759,2094,2219,2334,2342,2360,2399,2404,2431 'els':249,263 'email':31,77,757,824,1056,1366,1439,1514,1705,1733,2158,2227,2362,2371,2380,2806,2873 'emit':1388 'enabl':880 'end':455,480,484,491,1178,1429,1663,2256,2539 'end-of-run':2538 'enforc':1342 'engag':30,76,389,2520 'ensur':2828 'entir':2654 'entri':1847 'equival':1944,2035 'esp':37,81,122,128,132,141,239,245,259,281,560,571,573,697,769,846,926,939,950,1010,1064,1082,1854,1892,2034,2269,2297,2511,2898 'estim':2476,2483 'even':2789 'event':644,658,1014,2493,2627,2707,2721 'event-deriv':643,2706 'ever':1216 'everi':849,956,1052,1185,1443,1484,1737,2887 'everyon':2405 'everyth':1887 'exact':961 'exampl':1660 'exclud':669,1317,1773 'execut':1851 'exhaust':1303,1316,1362,1768,2051,2330,2346,2410,2589 'exist':702,2772 'exit':1321,2327 'expect':2474 'explicit':88,1721,2147,2251 'expos':927,2625 'extend':320,1501 'fallback':646,695,955,1731 'fals':2031,2081,2179 'fastest':1649 'fatigu':904,2783 'filler':1700 'filter':584,598,611,628,772,2223 'final':2544 'find':5,61,130,1882,2424,2435 'fire':1717 'first':382,386,1173,1424,1461,1625,1691,1779,1808,2125,2642 'first-tim':1460 'flag':1293 'flow':1925,1929,1939,1954,1984,1992,2010,2685,2745,2756,2769 'flow-conflict':2684 'flow/automation':2679 'follow':1633 'follow-up':1632 'forc':271 'format':2305 'founder':1592 'four':925,1900 'free':143,180,264,270,272,432,2069,2128,2146,2315 'friction':1561 'friction-remov':1560 'full':124,1195,2420 'fulli':803 'funnel':9,53,307,396,496,523,722,2316,2328,2855 'futur':800,1904 'gap':1905 'gate':790,1709,2886,2920 'gdpr':2062 'gdpr-suppress':2061 'get':215,622,1016,1019,1023,1099,1653,2005,2411,2650,2674,2801 'give':2494,2547 'global':899,2780 'go':1358 'goe':946 'good':512 'guard':1902,2022 'guest':1563 'guid':1579 'guidanc':1526 'hand':2266 'handl':1617 'hard':1340 'hasn':428,441 'head':1950 'help':1540,1585 'heurist':766 'hiccup':1554 'high':2480 'higher':1392 'higher-prior':1391 'hit':1127,1381,1769 'hold':1620 'hour':377 'how-to':1612 'html':2230 'human':936 'hybrid':836 'hygien':2116 'idempot':2829 'immedi':1794,2723 'impact':2477,2484 'implement':514,2850 'inact':469,1169,1645 'inbox':1036 'incent':1549 'includ':2075 'individu':2695 'insid':111,1128,1226,2844 'insights/drop-off-rescue':1054,2528 'instead':2417 'integr':417 'inventori':2543,2556 'isn':2774 'iso':1789,2174 'issu':1302 'join':747 'journey':1935 'json':2436 'kebab':536 'kebab-cas':535 'keep':333,540 'key':550 'klaviyo':581,642,1065,1090,2490,2624,2705,2752 'label':1777,2379 'lack':1893 'land':1671 'last':666,871,890,993,1261,1282,1331,1830,1837,1959,2319,2580,2597 'later':1286 'latest':877 'layer':835,837,948,1040,1078,1124 'least':237,257 'led':1458,1468,1577,1787 'let':1981 'lightweight':2191 'like':1471 'line':2187,2415 'link':779 'list':582,596,609,626,657,728,748,773,983,986,989,1013,1928,1931,1934,2043,2095,2115,2492,2720 'live':1087 'local':1793,1862,2357 'log':1046,1844,1877,2874 'longer':1469 'loop':1189 'low':2482 'machin':922 'made':385 'mailchimp':594,1092,2647 'manag':2263 'manual':157,979,2213 'manual-send':2212 'map':529 'markdown':2229 'marker':1027 'market':2030 'match':783,999 'math':896 'max':1351,1363 'mcp':82,121,123,133,145,182,226,230,251,1714,1855,2131,2135,2139,2272,2632,2901 'mean':342,398,2111 'meaning':473 'mechan':813 'medium':1516,2481 'member':597,603 'membership':774 'metric':660 'min':1656 'mode':118,222,241,261,265,273,303,843,914,1048,1846,2070,2129,2312,2426 'modifi':1960 'movement':2317 'multipl':280 'must':816,2074,2164,2663 'n':2324,2325 'name':327,329,953,960,1000,1796,2184 'namespac':227 'nativ':1894,1938,1953,1983,1991,2744,2768 'need':2117 'negoti':2788 'neither':2134 'never':43,350,363,760,1503 'new':534,1207,1277,2321 'newli':206,2329 'newly-stal':205 'newslett':624,2007,2652,2676 'next':57,690,1075,1609,2275,2532,2732 'no-channel':409,498,1153,1407,1582,2390,2571,2590,2599 'no-client':436,504,1160,1413,1602 'no-send':1879 'no-subscript':451,507,1163,1416,1605 'no-trial':422,501,1157,1410,1599 'non':2787 'non-negoti':2786 'none':1897 'note':1593,2519,2622 'noth':178,405,1753 'nudg':201,868,879,1101,1113,1275,1300,1350,1463,1478,1767,1771,1780,2366,2894,2909 'null':2517 'object':1472,1616,2011,2680 'objection-handl':1615 'offer':293,786,1559 'ok':2335 'old':2617 'older':2604 'one':238,258,288,865,886,1364,1386,1587,1701,2186,2216,2393,2414,2798,2804,2834 'one-lin':2185,2413 'option':1974,2195 'order':383,387,676,1174,1396,1425,1626,2643,2811 'org':1096 'outcom':1457,2475 'outcome-l':1456 'output':154,219,1136,1274,2108,2210,2250,2304,2545 'overlap':2003 'overrid':1139 'overwrit':1833,1840 'overwritten':873,892 'own':2248 'paid':460 'pass':1339,2145 'past':146,183,1241,2072,2153,2238,2450 'pattern':2862 'paus':1963,1976,1989 'pay':1566 'peopl':62 'per':105,140,556,570,866,1009,1346,1352,1354,1367,1369,1440,1527,1704,2207,2221,2231,2233,2396 'per-esp':139,569,1008 'per-stag':1345 'persist':2245,2523 'pick':210,735,1693 'place':675 'plan':1674 'plus':1909 'post':381,1172,1423,1624,2641 'post-first-order-sil':380,1171,1422,1623,2640 'prehead':1031,1497,2376 'present':234,254 'preview':781,1807 'previous':2460 'primari':558,841,910,1507,1702,2738 'print':1134,1743 'prior':1247,1305,2365 'prioriti':1393,1395,2479,2810 'priority-ord':2809 'probe':224 'proceed':1999 'produc':1486 'product':349,2864 'profil':583,589,670,687,2729 'progress':214,1258,1312,2323,2463 'proof':1547 'properti':590 'proxi':2633 'purchas':754,2513 'push':51 'qualifi':2793 'queri':656 'queue':1857 'quick':1539 'rang':777 'rate':2498 're':29,75,91,819,1239,1475,1783 're-engag':28,74 're-runn':90 're-send':818 're-stal':1238,1474,1782 'reactiv':2497,2872 'read':169,563,574,887,1072,1193,1927,2734 'read-on':168 'readi':2260,2889 'realist':2496 'reason':1667,2100 'recipi':857,1001,1792,1810,1861,2356 'recipient-loc':1791,1860,2355 'recommend':1675 'record':243 'refer':513,1571,2849 'referenc':1005 'reflect':875 'regardless':274,1343,2065 'regress':1279,2326 'relev':1631 'reli':2653 'remind':1638 'remov':1562,2616 'repeat':1504 'repli':1595,1848,2607 'reply-to-m':1594 'report':171,1011,1017,1024,1125,2841 'reprint':1869 'rerun':42,161,198,544,815,971,2813,2904 'rescu':4,50,859,870,889,957,965,1214,1224,1248,1260,1281,1306,1315,1330,1335,1361,1365,1517,1800,1823,1829,1836,1965,1977,1994,2050,2287,2309,2441,2469,2472,2554,2559,2569,2579,2588,2596,2619,2690,2761,2805,2912 'rescue-exhaust':1314,1360,2049,2587 'rescue-last-s':888,1835 'rescue-last-stag':869,1259,1280,1329,1828,2578,2595 'rescue-s':858,1213,1223,1822,2286,2558,2568,2618 'resolut':2660 'resolv':553,2140 'return':1906 'risk':1968 'roll':1370 'row':2079 'rule':607,905,2648 'run':290,295,337,691,801,1076,1206,1806,1918,1964,1993,2124,2276,2320,2336,2533,2541,2733,2750,2830 'runnabl':92 'saa':394,2507 'safe':2837 'save':1556 'scan':997 'schedul':33,84,191,593,606,620,1735,1788,1856,1895,1921,2291,2458,2693,2916 'schedule/send':580 'second':1477,2847 'section':2546 'see':712 'segment':562,1943,1958 'segment/property':586 'sell':1637 'send':34,46,86,97,156,636,641,820,851,1053,1249,1307,1734,1751,1820,1850,1875,1881,2025,2214,2293,2350,2457,2699,2704,2879,2888,2917 'sent':104,176,809,860,891,990,1215,1225,1756,1824,1838,2284,2288,2560,2570,2620,2880 'set':2515 'sha256':1055 'shift':1257 'short':1455,1611 'show':2860 'sign':14,64,412 'signal':559,2739 'signed-up-but-no-tri':13 'signup':401,497,1152,1406,1581 'silent':384,1175,1426,1627,2644 'sinc':390,2161,2172,2318,2364 'skill':60,99,310,830,2716,2762,2821 'skill-drop-off-rescue' 'skip':108,204,1221,1232,1237,1763,1872,2016,2345,2408,2689,2906 'slug':324,341,397,532,538,546,731,2167 'small':1548,1672 'social':1546 'soft':2713 'solo':131,260,495,913,2314,2854,2871 'someth':945 'sourc':416,1513 'source-cognyai' 'specif':2868 'sprawl':2553 'src/app/api/admin/solo-funnel':2857 'src/lib/email/reactivation-email.ts':2859 'stabl':335,542 'stage':10,26,72,106,308,315,525,555,566,575,578,587,649,679,700,714,723,736,742,796,823,872,878,882,1116,1140,1192,1196,1210,1228,1245,1252,1262,1266,1270,1278,1283,1287,1291,1310,1319,1323,1332,1347,1355,1375,1384,1394,1421,1441,1444,1482,1487,1528,1529,1738,1758,1831,1948,1980,2067,2159,2163,2208,2222,2234,2338,2389,2397,2401,2429,2448,2467,2503,2508,2581,2598,2645,2659,2765,2796,2867,2877 'stage-advanc':881 'stage-appropri':25,71 'stage-specif':2866 'stall':7,52,149,172,186,207,344,400,1208,1240,1476,1784,2160,2171,2322,2363,2443 'start':372,430,468,470,1168,1644 'state':332,1817,2052,2243,2552,2824,2913 'statist':1021 'status':1961 'stay':1038 'step':58,220,304,551,792,805,1182,1436,1588,1706,1729,2018,2126,2169,2302,2387,2422,2536,2682 'still':110,1243,1541 'stop':2262 'string':1914 'strip':978 'subject':1029,1491,1502,1812,1814,1816,2375 'subject/preheader':2239 'submit':376 'subscrib':487,610,618 'subscript':453,509,1165,1418,1607 'subsequ':674 'success':850 'suggest':1911,2347 'summari':2416,2526 'suppress':2021,2042,2063 'surfac':2101 'surviv':919 'switch':1866 'sync':981 'synthesis':2717 't10':1070 'tabl':2240,2875 'tag':136,326,561,565,576,579,600,604,613,616,630,634,653,683,701,715,775,797,840,854,908,930,976,1271,1292,1324,1336,1727,1821,1827,1834,2064,2289,2542,2555,2621,2657,2665,2726,2825,2914 'tag-bas':135,907 'tag-driven':2656 'tag-writ':929 'target':1941,1956 'taxonomi':316,517 'technic':1553 'templat':2869 'thank':1629 'thank-you':1628 'think':1542 'three':117,834,853,1123,2795 'three-lay':833 'thu':2353 'time':639,1462,1863,2702,2848 'timestamp':1790 'titl':2437 'today':1896 'tone':1256,1525,1532,1535,1598,1695 'tool':232,252,572,595,601,608,614,619,625,631,635,932,982,985,988,1012,1015,1018,1022,1716,1930,1933,2698 'tool/client':445 'top':2105,2358 'topic-agent-skills' 'topic-ai-agents' 'topic-claude-code' 'topic-claude-skills' 'topic-cluade-mcp' 'topic-cursor' 'topic-geo' 'topic-growth-hacking' 'topic-llm' 'topic-marketing' 'topic-mcp' 'topic-seo' 'touch':1971 'track':100,2876 'translat':764 'tree':918,1045,1843,2827 'trial':18,20,395,424,433,439,454,465,467,471,479,483,503,1159,1167,1177,1412,1428,1601,1643,1662 'trial-but-no-convert':19 'trial-ended-no-convert':478,1176,1427,1661 'trial-started-inact':466,1166,1642 'trigger':2132 'true':2178 'ts':1066 'tue':2352 'twice':2832 'two':1100,1383,1450 'type':2471 'typic':343,399 'ui':940 'unlock':1590 'unsubscrib':2036 'updat':588,602,632,686,2728 'uplift':2521 'upsel':2259 'urgenc':1545 'url':1509,1688,2200 'usag':158,474,923 'usd':2478,2485 'use':447,567,831,893,1657,1676 'user':286,318,520,708,1034,1138,1684,1720,1916,2113,2144,2151,2247,2549,2662,2748 'user-overrid':1137 'user-vis':1033 'usual':2110 'utm':1511,1512,1515,1518,1521 'valu':1467,1641,1698,1786 'value-l':1466,1785 'variant':967,1062,1218,1254,1451,1452,1464,1485,1488,1530,1533,1774,1864,1867,2206,2232,2348,2373,2382,2453 've':2282 'verbatim':1746 'via':35,193,685,1006,1752,1853,2270,2697,2727,2814,2899 'view':348,1573 'visibl':1035,2550 'visit':761 'voic':1496,1681,2189 'w':861,966,2311,2529 'w14':2612 'w17':1061,2565,2575 'wait':1748 'warn':1949,2089 'webfetch':1689,2202 'week':41,93,160,164,192,814,867,1059,1105,1188,1387,1996,2310,2461,2525,2605,2609,2799,2808,2812,2819,2893 'win':1650 'window':114,1131,1231,2351 'within':1117 'without':94,915,1311,2512 'won':1097 'work':115,311,911,1987 'would':174,1379 'write':177,677,852,931,1050,1712,1715,1818,1889,2433,2724 'wrong':947 'www':1520,1801,1825 'x':758,1544 'yet':1757 'zero':2403","prices":[{"id":"8e555621-622c-484a-9620-8474ef58f032","listingId":"1c8c3841-bd8b-480c-898f-5b12735032cb","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cognyai","category":"claude-code-marketing-skills","install_from":"skills.sh"},"createdAt":"2026-04-24T12:57:27.779Z"}],"sources":[{"listingId":"1c8c3841-bd8b-480c-898f-5b12735032cb","source":"github","sourceId":"cognyai/claude-code-marketing-skills/drop-off-rescue","sourceUrl":"https://github.com/cognyai/claude-code-marketing-skills/tree/main/skills/drop-off-rescue","isPrimary":false,"firstSeenAt":"2026-04-24T12:57:27.779Z","lastSeenAt":"2026-05-18T18:58:06.068Z"}],"details":{"listingId":"1c8c3841-bd8b-480c-898f-5b12735032cb","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cognyai","slug":"drop-off-rescue","github":{"repo":"cognyai/claude-code-marketing-skills","stars":48,"topics":["agent-skills","ai-agents","claude-code","claude-skills","cluade-mcp","cursor","geo","growth-hacking","llm","marketing","mcp","seo","vibe","windsurf"],"license":null,"html_url":"https://github.com/cognyai/claude-code-marketing-skills","pushed_at":"2026-05-07T20:57:53Z","description":"Marketing skills for Claude Code — SEO audits and implementation, ad analysis, ad optimization. Free skills need no account. $9/mo for live Search Console, Bing & LinkedIn data.","skill_md_sha":"726ab8454a4cadac44267950f0f2624b032a72c0","skill_md_path":"skills/drop-off-rescue/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cognyai/claude-code-marketing-skills/tree/main/skills/drop-off-rescue"},"layout":"multi","source":"github","category":"claude-code-marketing-skills","frontmatter":{"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"},"skills_sh_url":"https://skills.sh/cognyai/claude-code-marketing-skills/drop-off-rescue"},"updatedAt":"2026-05-18T18:58:06.068Z"}}