{"id":"59118a5f-1827-478c-a998-58881eb92a7b","shortId":"WBBYqx","kind":"skill","title":"winback-engine","tagline":"Find dormant subscribers, segment by historical value, draft personalized winback emails per tier, and identify suppression candidates","description":"# Winback Engine\n\nTurn dormant subscribers back into customers. This skill scans your connected ESP for inactive subscribers, segments them by historical value, drafts a personalized winback series per tier, and flags who you should suppress before they tank your deliverability.\n\n**Requires:** Cogny MCP + a connected ESP. [Sign up](https://cogny.com)\n\nThe output is a complete, ready-to-run winback campaign — not a report.\n\n## Usage\n\n`/winback-engine` — standard mode (60-day dormancy threshold)\n`/winback-engine aggressive` — 30-day threshold (acts earlier, bigger list)\n`/winback-engine conservative` — 90-day threshold (only chronic dormants)\n\n## Prerequisites Check\n\nDetect connected ESP (same pattern as subject-line-lab). If none, prompt user to connect at cogny.com.\n\n## Steps\n\n### 1. Define dormancy thresholds\n\n| Mode | Dormant | Deep dormant | Suppress candidate |\n|------|---------|--------------|-------------------|\n| aggressive | 30+ days no open | 90+ days no open | 180+ days no open/click, no purchase |\n| standard | 60+ days | 180+ days | 365+ days no engagement |\n| conservative | 90+ days | 270+ days | 540+ days |\n\n### 2. Pull subscriber data\n\nFrom the connected ESP, pull every active subscriber with:\n- Subscribe date\n- Last open date + last click date (take max as last_engaged)\n- Total historical opens / clicks\n- Signup source / list\n- Tags / segments\n- Email domain (gmail, yahoo, hotmail, corporate)\n\n**Purchase / LTV data — Klaviyo only.** The cogny-mcp-proxy currently exposes purchase data for Klaviyo (via `list_events` filtered to the \"Placed Order\" metric, summing the `value` field per profile). Mailchimp, Rule, and Get a Newsletter in this proxy are **engagement-only** — they do not expose:\n- Total spend / LTV\n- Order count\n- AOV\n- Last order date\n\n**Per-ESP tool adapter:**\n\n| ESP | Subscriber list | Purchase history | Suppression write |\n|-----|-----------------|------------------|-------------------|\n| Klaviyo | `list_profiles` (+ `get_profile` for detail) | `list_events` with `metric=\"Placed Order\"` — use `value` field per profile for LTV | `unsubscribe_profiles` |\n| Mailchimp | `tool_list_members` (filter `status=subscribed`) | **Not available** | `tool_update_member` (status=unsubscribed) |\n| Rule | `tool_list_subscribers` | **Not available** | `tool_update_subscriber` / `tool_list_suppressions` |\n| Get a Newsletter | `tool_list_contacts` | **Not available** | `tool_delete_contact` or `tool_update_contact` |\n\n### 3. Segment into tiers\n\n**If Klaviyo (has purchase data):** cross-cut by **engagement recency** × **historical value**:\n\n| Tier | Criteria | Tone | Offer |\n|------|----------|------|-------|\n| **A — High value dormant** | Dormant + LTV ≥ top quartile OR past purchaser | Personal, apologetic, premium | Strong (20% off, free shipping, exclusive access). This is real money. |\n| **B — Medium value dormant** | Dormant + some past engagement or 1 purchase | Warm, value-forward | Moderate (10–15% off, bundle, content) |\n| **C — Low engagement dormant** | Dormant + never purchased + low engagement history | Direct, honest | Last-chance offer or content-only |\n| **D — Suppression candidates** | Deep dormant + no purchase + no recent engagement | Final email only | \"We're removing you unless...\" |\n\n**If Mailchimp / Rule / Get a Newsletter (engagement-only):** tier by **engagement depth** instead. No purchase data is available from the proxy for these ESPs — LTV-based tiering falls back to:\n\n| Tier | Criteria | Tone | Offer |\n|------|----------|------|-------|\n| **A — Deep engaged dormant** | Dormant now, but historically high open+click rate (top quartile of clicks) | Personal, \"we miss you\" | Strong offer or exclusive content |\n| **B — Casual dormant** | Dormant, moderate historical engagement | Warm, value-forward | Modest offer |\n| **C — Low engagement dormant** | Dormant, few lifetime opens/clicks | Direct, honest | Content-only or re-opt-in ask |\n| **D — Suppression candidates** | Deep dormant, minimal lifetime engagement | Final email only | Goodbye |\n\nRevenue estimates in the output should be omitted for engagement-only ESPs, or marked `estimated_impact_usd: null` on findings with a note that the user can pair with their own LTV data to size the opportunity.\n\nOutput the tier sizes before drafting:\n\n```\nWinback candidates: <total>\n├─ Tier A (high-value dormant):   <count> subscribers (est. revenue: $<X>)\n├─ Tier B (medium):               <count>\n├─ Tier C (low engagement):       <count>\n└─ Tier D (suppression):          <count>  ← do not keep sending to these\n```\n\n**Revenue estimate for Tier A/B:** `count × historical AOV × expected reactivation rate` (use 3-5% for Tier A, 1-2% for Tier B).\n\n### 4. Draft a 3-email winback series per tier\n\nFor each tier (A, B, C), generate 3 emails with cadence:\n- **Email 1** — day 0, soft reopener (\"we noticed\")\n- **Email 2** — day 4, value + offer\n- **Email 3** — day 8, last-chance / decision\n\nTone by tier:\n\n**Tier A (high-value):**\n- E1: Personal note, reference last purchase by name if available. No offer yet.\n- E2: Show what they're missing — new products in their category, or customer stories\n- E3: Strongest offer, explicit decision framing (\"if we're not a fit anymore, we'll respect that\")\n\n**Tier B (medium):**\n- E1: \"We miss you\" + social proof\n- E2: Content-led (best of what they missed) + modest offer\n- E3: Offer + deadline\n\n**Tier C (low engagement):**\n- E1: Direct — \"is this still useful?\"\n- E2: One-click re-subscribe or one-click unsubscribe (reduce friction)\n- E3: Final send before suppression\n\nFor every email produce: subject, preheader, body, CTA. Same format as `/welcome-series`.\n\n### 5. Suppression list (Tier D)\n\nOutput a block the user can act on:\n\n```\nSuppression recommendation: <count> subscribers\n\nThese haven't opened, clicked, or purchased in <threshold> days. Keeping\nthem on the list:\n  • Hurts deliverability (low engagement = more spam placement for everyone)\n  • Inflates list size → higher ESP costs\n  • Distorts reporting baselines\n\nRecommended action:\n  1. Send ONE final \"goodbye\" email offering resubscribe\n  2. After 7 days, suppress non-responders\n\nSample suppression email is included below.\n```\n\nThen include the goodbye email draft.\n\n### 6. Write-mode: offer to execute\n\nAfter presenting the plan, ask:\n\n```\nI can push this into your ESP as:\n  [A] Drafts only (you review + launch)\n  [B] Full flow installed but paused (you activate when ready)\n  [C] Just give me the copy, I'll handle it\n\nWhich?\n```\n\nIf the user picks A or B and the ESP MCP has write tools available, follow the **Write Action Protocol** (same as the `/cogny` skill — present the action plan, wait for approval, then execute one step at a time).\n\n### 7. Create findings\n\nFor each significant tier (A, B with >100 subscribers):\n\n```json\n{\n  \"title\": \"Tier A winback: <N> high-value dormant subscribers, est. $<X> recoverable\",\n  \"body\": \"Identified <N> past purchasers with LTV in top quartile who haven't engaged in <days> days. Avg historical AOV: $<Y>. At 4% reactivation, estimated winback revenue = $<X>. 3-email series drafted and ready to install.\",\n  \"action_type\": \"winback_campaign\",\n  \"expected_outcome\": \"Reactivate 3-5% of Tier A dormant, generate $<X> over 30 days\",\n  \"estimated_impact_usd\": <X>,\n  \"priority\": \"high\"\n}\n```\n\nAnd one for suppression:\n\n```json\n{\n  \"title\": \"<N> subscribers recommended for suppression\",\n  \"body\": \"Deep dormant (<threshold>+ days) with no purchases. Keeping them hurts deliverability and inflates ESP cost. Recommend goodbye email + suppression after 7 days.\",\n  \"action_type\": \"list_hygiene\",\n  \"expected_outcome\": \"Improve overall open rate by 1-3 pp, lower ESP tier cost\",\n  \"estimated_impact_usd\": <monthly_esp_savings>,\n  \"priority\": \"medium\"\n}\n```\n\n## Notes\n\n- **Never suppress before a winback attempt.** Give Tier D subscribers one last chance to re-engage.\n- Apple MPP means \"last open\" is noisy for iPhone users. Weight **clicks** and **purchases** higher than opens when assigning tiers.\n- **Only Klaviyo exposes purchase/LTV data** through the cogny-mcp-proxy today. Mailchimp, Rule, and Get a Newsletter fall back to the engagement-only tiering scheme above.\n- **Get a Newsletter has no flow/automation object.** \"Install as a flow\" isn't available — winback is delivered as scheduled individual sends via `tool_send_draft` with `time_to_send`. For Klaviyo, flows install via the Klaviyo UI (the MCP exposes `list_flows`/`get_flow` for reads only, not create). For Mailchimp/Rule, automations/journeys are read-only too — so \"install\" means drafting campaigns and scheduling them, not creating a native automation.","tags":["winback","engine","claude","code","marketing","skills","cognyai","agent-skills","ai-agents","claude-code","claude-skills","cluade-mcp"],"capabilities":["skill","source-cognyai","skill-winback-engine","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/winback-engine","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 (8,642 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:08.478Z","embedding":null,"createdAt":"2026-04-22T18:59:09.697Z","updatedAt":"2026-05-18T18:58:08.478Z","lastSeenAt":"2026-05-18T18:58:08.478Z","tsv":"'-2':643 '-3':1091 '-5':638,1033 '/cogny':953 '/welcome-series':804 '/winback-engine':85,92,101 '0':670 '1':130,399,642,668,855,1090 '10':406 '100':979 '15':407 '180':149,158 '2':171,676,863 '20':380 '270':167 '3':344,637,650,663,682,1017,1032 '30':94,141,1040 '365':160 '4':647,678,1012 '5':805 '540':169 '6':883 '60':88,156 '7':865,969,1077 '8':684 '90':103,145,165 'a/b':629 'access':385 'act':97,816 'action':854,948,957,1025,1079 'activ':181,916 'adapt':273 'aggress':93,140 'anymor':736 'aov':265,632,1010 'apologet':377 'appl':1120 'approv':961 'ask':541,894 'assign':1138 'attempt':1108 'autom':1237 'automations/journeys':1219 'avail':311,322,336,467,706,944,1181 'avg':1008 'b':390,510,610,646,660,742,909,936,977 'back':26,479,1159 'base':476 'baselin':852 'best':754 'bigger':99 'block':812 'bodi':799,993,1057 'bundl':409 'c':411,523,613,661,765,919 'cadenc':666 'campaign':80,1028,1229 'candid':20,139,433,544,599 'casual':511 'categori':720 'chanc':425,687,1115 'check':110 'chronic':107 'click':190,200,495,500,777,784,825,1131 'cogni':62,219,1148 'cogny-mcp-proxi':218,1147 'cogny.com':69,128 'complet':74 'connect':33,65,112,126,177 'conserv':102,164 'contact':334,339,343 'content':410,429,509,534,752 'content-l':751 'content-on':428,533 'copi':924 'corpor':211 'cost':849,1071,1096 'count':264,630 'creat':970,1216,1234 'criteria':362,482 'cross':354 'cross-cut':353 'cta':800 'current':222 'custom':28,722 'cut':355 'd':431,542,617,809,1111 'data':174,214,225,352,465,587,1144 'date':185,188,191,268 'day':89,95,104,142,146,150,157,159,161,166,168,170,669,677,683,829,866,1007,1041,1060,1078 'deadlin':763 'decis':688,728 'deep':136,434,486,545,1058 'defin':131 'delet':338 'deliv':1184 'deliver':60,836,1067 'depth':461 'detail':287 'detect':111 'direct':421,531,769 'distort':850 'domain':207 'dormanc':90,132 'dormant':5,24,108,135,137,368,369,393,394,414,415,435,488,489,512,513,526,527,546,605,989,1037,1059 'draft':11,43,597,648,882,904,1020,1192,1228 'e1':697,744,768 'e2':710,750,774 'e3':724,761,788 'earlier':98 'email':14,206,442,551,651,664,667,675,681,795,860,873,881,1018,1074 'engag':163,196,254,357,397,413,419,440,456,460,487,516,525,549,564,615,767,838,1005,1119,1163 'engagement-on':253,455,563,1162 'engin':3,22 'esp':34,66,113,178,271,274,473,566,848,901,939,1070,1094 'est':607,991 'estim':555,569,626,1014,1042,1097 'event':230,289 'everi':180,794 'everyon':843 'exclus':384,508 'execut':889,963 'expect':633,1029,1083 'explicit':727 'expos':223,259,1142,1207 'fall':478,1158 'field':240,296 'filter':231,307 'final':441,550,789,858 'find':4,574,971 'fit':735 'flag':51 'flow':911,1178,1199,1209,1211 'flow/automation':1173 'follow':945 'format':802 'forward':404,520 'frame':729 'free':382 'friction':787 'full':910 'generat':662,1038 'get':246,284,329,452,1155,1168,1210 'give':921,1109 'gmail':208 'goodby':553,859,880,1073 'handl':927 'haven':822,1003 'high':366,493,603,695,987,1046 'high-valu':602,694,986 'higher':847,1134 'histor':9,41,198,359,492,515,631,1009 'histori':278,420 'honest':422,532 'hotmail':210 'hurt':835,1066 'hygien':1082 'identifi':18,994 'impact':570,1043,1098 'improv':1085 'inact':36 'includ':875,878 'individu':1187 'inflat':844,1069 'instal':912,1024,1175,1200,1226 'instead':462 'iphon':1128 'isn':1179 'json':981,1051 'keep':621,830,1064 'klaviyo':215,227,281,349,1141,1198,1203 'lab':120 'last':186,189,195,266,424,686,701,1114,1123 'last-chanc':423,685 'launch':908 'led':753 'lifetim':529,548 'line':119 'list':100,203,229,276,282,288,305,319,327,333,807,834,845,1081,1208 'll':738,926 'low':412,418,524,614,766,837 'lower':1093 'ltv':213,262,300,370,475,586,998 'ltv-base':474 'mailchimp':243,303,450,1152 'mailchimp/rule':1218 'mark':568 'max':193 'mcp':63,220,940,1149,1206 'mean':1122,1227 'medium':391,611,743,1101 'member':306,314 'metric':236,291 'minim':547 'miss':503,715,746,758 'mode':87,134,886 'moder':405,514 'modest':521,759 'money':389 'mpp':1121 'name':704 'nativ':1236 'never':416,1103 'new':716 'newslett':248,331,454,1157,1170 'noisi':1126 'non':869 'non-respond':868 'none':122 'note':577,699,1102 'notic':674 'null':572 'object':1174 'offer':364,426,484,506,522,680,708,726,760,762,861,887 'omit':561 'one':776,783,857,964,1048,1113 'one-click':775,782 'open':144,148,187,199,494,824,1087,1124,1136 'open/click':152 'opens/clicks':530 'opportun':591 'opt':539 'order':235,263,267,293 'outcom':1030,1084 'output':71,558,592,810 'overal':1086 'pair':582 'past':374,396,995 'pattern':115 'paus':914 'per':15,48,241,270,297,654 'per-esp':269 'person':12,45,376,501,698 'pick':933 'place':234,292 'placement':841 'plan':893,958 'pp':1092 'prehead':798 'premium':378 'prerequisit':109 'present':891,955 'prioriti':1045,1100 'produc':796 'product':717 'profil':242,283,285,298,302 'prompt':123 'proof':749 'protocol':949 'proxi':221,251,470,1150 'pull':172,179 'purchas':154,212,224,277,351,375,400,417,437,464,702,827,996,1063,1133 'purchase/ltv':1143 'push':897 'quartil':372,498,1001 'rate':496,635,1088 're':445,538,714,732,779,1118 're-engag':1117 're-opt-in':537 're-subscrib':778 'reactiv':634,1013,1031 'read':1213,1222 'read-on':1221 'readi':76,918,1022 'ready-to-run':75 'real':388 'recenc':358 'recent':439 'recommend':819,853,1054,1072 'recover':992 'reduc':786 'refer':700 'remov':446 'reopen':672 'report':83,851 'requir':61 'respect':739 'respond':870 'resubscrib':862 'revenu':554,608,625,1016 'review':907 'rule':244,317,451,1153 'run':78 'sampl':871 'scan':31 'schedul':1186,1231 'scheme':1166 'segment':7,38,205,345 'send':622,790,856,1188,1191,1196 'seri':47,653,1019 'ship':383 'show':711 'sign':67 'signific':974 'signup':201 'size':589,595,846 'skill':30,954 'skill-winback-engine' 'social':748 'soft':671 'sourc':202 'source-cognyai' 'spam':840 'spend':261 'standard':86,155 'status':308,315 'step':129,965 'still':772 'stori':723 'strong':379,505 'strongest':725 'subject':118,797 'subject-line-lab':117 'subscrib':6,25,37,173,182,184,275,309,320,325,606,780,820,980,990,1053,1112 'sum':237 'suppress':19,55,138,279,328,432,543,618,792,806,818,867,872,1050,1056,1075,1104 'tag':204 'take':192 'tank':58 'threshold':91,96,105,133 'tier':16,49,347,361,458,477,481,594,600,609,612,616,628,640,645,655,658,691,692,741,764,808,975,983,1035,1095,1110,1139,1165 'time':968,1194 'titl':982,1052 'today':1151 'tone':363,483,689 'tool':272,304,312,318,323,326,332,337,341,943,1190 'top':371,497,1000 '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' 'total':197,260 'turn':23 'type':1026,1080 'ui':1204 'unless':448 'unsubscrib':301,316,785 'updat':313,324,342 'usag':84 'usd':571,1044,1099 'use':294,636,773 'user':124,580,814,932,1129 'valu':10,42,239,295,360,367,392,403,519,604,679,696,988 'value-forward':402,518 'via':228,1189,1201 'wait':959 'warm':401,517 'weight':1130 'winback':2,13,21,46,79,598,652,985,1015,1027,1107,1182 'winback-engin':1 'write':280,885,942,947 'write-mod':884 'yahoo':209 'yet':709","prices":[{"id":"f3531589-fb84-4f9c-a823-67c16a25ed8d","listingId":"59118a5f-1827-478c-a998-58881eb92a7b","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-22T18:59:09.697Z"}],"sources":[{"listingId":"59118a5f-1827-478c-a998-58881eb92a7b","source":"github","sourceId":"cognyai/claude-code-marketing-skills/winback-engine","sourceUrl":"https://github.com/cognyai/claude-code-marketing-skills/tree/main/skills/winback-engine","isPrimary":false,"firstSeenAt":"2026-04-22T18:59:09.697Z","lastSeenAt":"2026-05-18T18:58:08.478Z"}],"details":{"listingId":"59118a5f-1827-478c-a998-58881eb92a7b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cognyai","slug":"winback-engine","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":"3a9477495a25cfec6286764bf7c085dcd04f9b08","skill_md_path":"skills/winback-engine/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cognyai/claude-code-marketing-skills/tree/main/skills/winback-engine"},"layout":"multi","source":"github","category":"claude-code-marketing-skills","frontmatter":{"name":"winback-engine","description":"Find dormant subscribers, segment by historical value, draft personalized winback emails per tier, and identify suppression candidates"},"skills_sh_url":"https://skills.sh/cognyai/claude-code-marketing-skills/winback-engine"},"updatedAt":"2026-05-18T18:58:08.478Z"}}