[{"data":1,"prerenderedAt":309},["ShallowReactive",2],{"legal-pages":3,"guide:\u002Fblog\u002Fhow-long-do-subscribers-stay":13},[4,7,9,11],{"path":5,"draft":6},"\u002Flegal\u002Facceptable-use",false,{"path":8,"draft":6},"\u002Flegal\u002Fprivacy",{"path":10,"draft":6},"\u002Flegal\u002Fsubprocessors",{"path":12,"draft":6},"\u002Flegal\u002Fterms",{"id":14,"title":15,"author":16,"body":17,"date":294,"description":295,"draft":6,"extension":296,"meta":297,"navigation":298,"path":299,"seo":300,"stem":301,"tags":302,"tool":306,"updated":307,"__hash__":308},"blog\u002Fblog\u002Fhow-long-do-subscribers-stay.md","How long do your subscribers really stay?","Carrier Crow",{"type":18,"value":19,"toc":281},"minimark",[20,24,27,32,35,38,46,50,53,56,60,63,66,143,146,155,159,162,185,189,196,202,206,209,212,216,219,232,235,261,264,268,271,275],[21,22,23],"p",{},"It sounds like the easiest question in the newsletter business. Export everyone who has unsubscribed, subtract each signup date from the unsubscribe date, take the average. Done: your subscribers stay for, say, four months.",[21,25,26],{},"That number is wrong, in a predictable direction: too short. Subscriber lifetime feeds into what a reader is worth and what you can promise sponsors, so it's worth getting right.",[28,29,31],"h2",{"id":30},"why-the-obvious-average-comes-out-too-short","Why the obvious average comes out too short",[21,33,34],{},"The problem is who's in the calculation. Averaging the people who left ignores everyone who hasn't, which is often most of your list and, by definition, your most loyal readers. Someone who signed up three years ago and still reads every issue counts for nothing.",[21,36,37],{},"The leavers themselves are a skewed sample, too. Nobody in the export can have stayed longer than your list has existed, and someone who signed up two months ago can only appear in it if they left within two months. The calculation can see short lifetimes clearly; the long ones are mostly still in progress.",[21,39,40,41,45],{},"Statisticians call the people still subscribed ",[42,43,44],"em",{},"censored",": you know they've stayed at least this long, but not how long they'll stay in the end. Throwing them away biases the answer. Treating them as if they'd left today is less bad, but still too short, because their clocks are still running.",[28,47,49],{"id":48},"a-worked-example","A worked example",[21,51,52],{},"Take ten subscribers. Five have left, after 1, 2, 2, 4 and 7 months. Five are still subscribed, and have been for 3, 6, 10, 14 and 20 months.",[21,54,55],{},"The leavers-only average is 3.2 months. Now let's give the five people who stayed a say.",[28,57,59],{"id":58},"what-kaplanmeier-does","What Kaplan–Meier does",[21,61,62],{},"The Kaplan–Meier estimator is the standard method for this kind of data. It walks forward through time, and at each point where someone leaves it asks: of the people still subscribed and still being observed at that moment, what share stayed? Then it multiplies those shares together.",[21,64,65],{},"The crucial rule is how it treats someone who's still subscribed. They count, in full, for as long as they've been with you. After that they quietly drop out of the group being observed (the \"at-risk\" group) without being counted as a loss.",[67,68,69,88],"table",{},[70,71,72],"thead",{},[73,74,75,79,82,85],"tr",{},[76,77,78],"th",{},"Month",[76,80,81],{},"Subscribed going in",[76,83,84],{},"Left that month",[76,86,87],{},"Share still subscribed",[89,90,91,105,118,131],"tbody",{},[73,92,93,97,100,102],{},[94,95,96],"td",{},"1",[94,98,99],{},"10",[94,101,96],{},[94,103,104],{},"90%",[73,106,107,110,113,115],{},[94,108,109],{},"2",[94,111,112],{},"9",[94,114,109],{},[94,116,117],{},"70%",[73,119,120,123,126,128],{},[94,121,122],{},"4",[94,124,125],{},"6",[94,127,96],{},[94,129,130],{},"58%",[73,132,133,136,138,140],{},[94,134,135],{},"7",[94,137,122],{},[94,139,96],{},[94,141,142],{},"44%",[21,144,145],{},"Look at month 4. Three people have left by then, so you might expect seven in the group, but there are six: the subscriber who joined three months ago has no history beyond month 3, so they stop counting there, without being marked as lost. Before month 7, the six-month subscriber drops out the same way. Each step multiplies the last: 90% × 7\u002F9 = 70%, then × 5\u002F6 ≈ 58%, then × 3\u002F4 ≈ 44%. Nobody leaves after month 7, so the curve stays at 44% out to month 20.",[21,147,148,149,154],{},"So the same ten people tell a different story. Instead of \"subscribers last 3.2 months\", it's \"half are gone by month 7, and 44% are still here after more than a year\". That's a different business. Ten people you can do by hand; for ten thousand, there's the ",[150,151,153],"a",{"href":152},"\u002Ftools\u002Fsubscriber-lifetime","subscriber lifetime tool",".",[28,156,158],{"id":157},"reading-a-survival-curve","Reading a survival curve",[21,160,161],{},"Plot the share still subscribed against time and you get a staircase. It starts at 100% and steps down each time someone leaves. Three things to look at:",[163,164,165,173,179],"ul",{},[166,167,168,172],"li",{},[169,170,171],"strong",{},"Where it drops fastest."," A steep fall in the first few weeks suggests looking at signup and onboarding; a steady slope later on points more towards the content itself.",[166,174,175,178],{},[169,176,177],{},"Where it flattens."," A flat stretch means readers who reach that point tend to stay.",[166,180,181,184],{},[169,182,183],{},"How much data sits under the tail."," The far right of the curve rests on your oldest subscribers, often only a handful of people, so one departure moves it a long way. Treat the tail as a sketch.",[28,186,188],{"id":187},"median-lifetime-or-retention-at-fixed-points","Median lifetime, or retention at fixed points",[21,190,191,192,195],{},"The ",[169,193,194],{},"median lifetime"," is the point where the curve first falls to 50% or below: the time by which half of subscribers have left. In the example it's 7 months, more than twice the naive average. It's one intuitive number, and it isn't dragged around by a few very long or very short lifetimes the way an average is. For a list that keeps its readers it may not exist yet: if more than half are still subscribed at the longest time you can observe, the honest answer is \"longer than that\".",[21,197,198,201],{},[169,199,200],{},"Retention at fixed points"," is often more useful: the share still subscribed at 90, 180 and 365 days. It's defined as long as some of your subscribers have been around that long, it compares cleanly across months and sources, and it answers practical questions. Of the readers a promotion brings in, how many will still be there for next quarter's sponsors?",[28,203,205],{"id":204},"comparing-cohorts","Comparing cohorts",[21,207,208],{},"The method works on any group you can label. Split by signup source (your own site, a cross-promotion, a giveaway, a paid campaign) and draw a curve for each. If one source's curve falls away much faster, its headline signup numbers overstate what you're getting from it.",[21,210,211],{},"Two cautions. Compare groups only at time points both have data for: a cohort that joined in spring can't tell you its 365-day retention yet. And small groups give jumpy curves, so be wary of reading much into a gap between two cohorts of a few dozen people. For a formal comparison, the log-rank test is the standard one.",[28,213,215],{"id":214},"what-to-export","What to export",[21,217,218],{},"You need two columns per subscriber:",[163,220,221,226],{},[166,222,223],{},[169,224,225],{},"signup date",[166,227,228,231],{},[169,229,230],{},"unsubscribe date",", left blank if they're still subscribed",[21,233,234],{},"Add a column such as signup source to compare cohorts. Then check a few things:",[163,236,237,243,249,255],{},[166,238,239,242],{},[169,240,241],{},"Unsubscribed records."," Some platforms delete them or keep them elsewhere. An export of current subscribers contains no losses at all, and any method will be wildly optimistic.",[166,244,245,248],{},[169,246,247],{},"Migrated lists."," If you've changed platforms, signup dates may all be the day of the import, which resets everyone's clock. Use the original dates if you have them.",[166,250,251,254],{},[169,252,253],{},"Bounces and cleaned addresses."," Decide whether these count as leaving. They're gone, but not by choice; either answer is defensible as long as you're consistent.",[166,256,257,260],{},[169,258,259],{},"Resubscribers."," Pick a rule (first signup, or each spell as its own row) and stick to it.",[21,262,263],{},"One more thing: this measures subscription, not attention. Someone who hasn't opened anything in a year still counts as subscribed. If what you care about is engaged lifetime, define \"leaving\" as going inactive, and the same method applies.",[28,265,267],{"id":266},"in-carrier-crow","In Carrier Crow",[21,269,270],{},"Carrier Crow has a built-in Subscriber Lifetime report that uses Kaplan–Meier to give you the median lifetime and the share still subscribed at 90, 180 and 365 days.",[28,272,274],{"id":273},"try-it","Try it",[21,276,277,278,280],{},"Export signup and unsubscribe dates from whichever platform you use and drop the file into the ",[150,279,153],{"href":152},". It runs entirely in your browser, so the file is never uploaded, and you'll see how long your readers really stay, counting the ones who haven't left.",{"title":282,"searchDepth":283,"depth":283,"links":284},"",2,[285,286,287,288,289,290,291,292,293],{"id":30,"depth":283,"text":31},{"id":48,"depth":283,"text":49},{"id":58,"depth":283,"text":59},{"id":157,"depth":283,"text":158},{"id":187,"depth":283,"text":188},{"id":204,"depth":283,"text":205},{"id":214,"depth":283,"text":215},{"id":266,"depth":283,"text":267},{"id":273,"depth":283,"text":274},"2026-10-07","Averaging how long departed subscribers lasted makes your list look fickle. Survival analysis counts everyone, including the people still here.","md",{},true,"\u002Fblog\u002Fhow-long-do-subscribers-stay",{"title":15,"description":295},"blog\u002Fhow-long-do-subscribers-stay",[303,304,305],"retention","analytics","survival-analysis","subscriber-lifetime",null,"0W_5o9C8dmetaadwnjl_uvrK7DVoEGlvfkaEQRdeVG0",1791479469524]