<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[ByeChurn]]></title><description><![CDATA[Keep customers longer ♻️]]></description><link>https://www.byechurn.io</link><image><url>https://substackcdn.com/image/fetch/$s_!4uvZ!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ddf71bf-cd47-4f65-b1ff-bd1062c7e988_500x500.png</url><title>ByeChurn</title><link>https://www.byechurn.io</link></image><generator>Substack</generator><lastBuildDate>Fri, 13 Nov 2026 15:15:52 GMT</lastBuildDate><atom:link href="https://www.byechurn.io/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Byechurn]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[byechurn@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[byechurn@substack.com]]></itunes:email><itunes:name><![CDATA[Antonio Volante]]></itunes:name></itunes:owner><itunes:author><![CDATA[Antonio Volante]]></itunes:author><googleplay:owner><![CDATA[byechurn@substack.com]]></googleplay:owner><googleplay:email><![CDATA[byechurn@substack.com]]></googleplay:email><googleplay:author><![CDATA[Antonio Volante]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The 5 Roads to Cancellation]]></title><description><![CDATA[Churn warning signs aren't one signal. Customers leave by different roads, and each road shows up in your data weeks before the cancel button.]]></description><link>https://www.byechurn.io/p/the-5-roads-to-cancellation</link><guid isPermaLink="false">https://www.byechurn.io/p/the-5-roads-to-cancellation</guid><dc:creator><![CDATA[Antonio Volante]]></dc:creator><pubDate>Mon, 26 Oct 2026 17:07:36 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3a720f1f-80c2-4969-bae6-d64d5b400290_3750x2109.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Five customers cancelled last month.</strong></p><p>The first never really started. The second used the product a little less every week. The third kept logging in, but only for one thing. The fourth opened six support tickets in three months. The fifth used the product exactly as always, right up to the renewal invoice.</p><p>In the churn report, they are five identical lines.</p><p>In the data, they are five different stories, and every one of them was visible weeks before the cancel button.</p><p><a href="https://www.byechurn.io/p/your-churn-rate-cant-tell-you-what">No. 1</a> was about <em>when</em> customers leave. This one is about <em>how</em>: five of the most common roads customers take on the way out, and how to spot each one in time to do something.</p><p><strong>The short version.</strong> Churn warning signs are changes in a customer&#8217;s behavior that come before a cancellation. They aren&#8217;t a single signal. Customers leave by different roads. Five of the most common are Never started, Fading, Narrowing, Frustrated and Active until renewal, and each one has its own signs and its own fix. A sign only counts if it is far more common among customers who cancel than among customers who stay, so you check that first, then act on the customers you still have.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.byechurn.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.byechurn.io/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h2>Why one health score misses most churn warning signs</h2><p>Most teams that try to find at-risk customers start with one number: a health score, or a rule like &#8220;fewer than five logins last month&#8221;.</p><p>One number blends very different customers. Someone who never got started and someone who uses the product daily but doubts the price will both show up as &#8220;at risk&#8221;. They need different interventions from different teams: the first one needs the product team to fix the path to the first result, the second needs the customer success team to show the value before the invoice arrives. And the fifth customer above wouldn&#8217;t be flagged at all: their usage never dropped, right up to the renewal.</p><blockquote><p><strong>Churn is where the story ends, not where it starts.</strong> </p></blockquote><p>Before the cancel, something changed in what the customer did or in what they got from the product. The road is the shape of that change.</p><h2>First, track the lifecycle, not just the subscription</h2><p>Most billing data tells you three things: who subscribed, what they pay, and when they cancelled.</p><p><code>Customer 123 &#8594; active &#8594; cancelled.</code></p><p>That&#8217;s enough to count churn. It isn&#8217;t enough to see a road. For that, you need to know what the customer did in between. Every product tracks different things, but these are some of the most common groups of events:</p><ul><li><p><strong>Acquisition:</strong> source, campaign, landing page, signup.</p></li><li><p><strong>Activation:</strong> account created, onboarding completed, first use, first output, time to first value.</p></li><li><p><strong>Engagement:</strong> logins, sessions, how often they come back, features used, volume of use, days since last use.</p></li><li><p><strong>Value:</strong> outputs created, workflows completed, the features that deliver the most.</p></li><li><p><strong>Commercial:</strong> plan, price, upgrades and downgrades, failed payments, renewals, cancellations.</p></li><li><p><strong>Support and feedback:</strong> tickets opened, satisfaction ratings, survey answers.</p></li></ul><h3>Everything is an event</h3><p>More mature companies run all of this through a proper data warehouse, with a team dedicated to the data model. You don&#8217;t need that to get started, and you don&#8217;t need a table for every behavior either: one for logins, one for invites, one for feedback pop-ups. A good first structure is just two tables. One says who the customer is:</p><pre><code><code>USERS
user_id | signup_date | plan | country
U001    | 2026-01-10  | Pro  | US
U002    | 2026-01-12  | Free | UK
</code></code></pre><p>The other records what the customer does, one row per action:</p><pre><code><code>EVENTS
user_id  date    event_name       detail
U001     10 Jan  signup           -
U001     10 Jan  onboarding_done  -
U001     10 Jan  invite_sent      2 invites
U001     11 Jan  feature_used     reports
U001     12 Jan  feedback_given   rating 5
U002     12 Jan  signup           -
</code></code></pre><p>In plain words: every time a customer does something that matters, the product writes one row with who, when, what, and any detail. Inviting a teammate is an event. Answering a satisfaction pop-up is an event. A failed payment is an event.</p><blockquote><p>You don&#8217;t need to know today what you&#8217;ll do with each one. You do need to start collecting it today: an action you never tracked is an action you can&#8217;t analyze a year from now. </p></blockquote><p>It&#8217;s also the raw material for churn prediction: machine learning models learn from months of behavior history. I&#8217;ll cover churn prediction with machine learning in a future issue.</p><h3>From the event log to one row per customer</h3><p>The roads don&#8217;t come from the raw log. They come from a summary of it: one row per customer, refreshed weekly, with a few columns built from the events:</p><ul><li><p><strong>Usage:</strong> sessions per month, and the customer&#8217;s own average from their first 60 days.</p></li><li><p><strong>Breadth:</strong> features used now, compared with how many they used at the start.</p></li><li><p><strong>Value:</strong> whether they ever reached the value event, the first moment a customer gets the result they signed up for.</p></li><li><p><strong>Friction:</strong> support tickets and satisfaction ratings from the last 90 days.</p></li><li><p><strong>Commercial:</strong> plan changes, seats removed, pauses, next renewal date.</p></li></ul><p>Here&#8217;s what it looks like for the five customers you&#8217;ll meet below:</p><pre><code><code>CUSTOMER_SUMMARY (weekly)
    value sessions features tix renew
C1  no     4 &#8594; 1    1 &#8594; 1    0  240d
C2  yes   13 &#8594; 3    5 &#8594; 4    0  200d
C3* yes    7 &#8594; 6    5 &#8594; 1    1  150d
C4  yes    9 &#8594; 9    4 &#8594; 4    6  300d
C5  yes   10 &#8594; 10   2 &#8594; 2    1   25d
* C3 cut 4 of 10 seats
</code></code></pre><p><em>Value</em> = reached the value event. <em>Sessions</em> = own average &#8594; last month. <em>Features</em> = at start &#8594; now. <em>Tix</em> = support tickets in the last 90 days. <em>Renew</em> = days to renewal.</p><p>The two columns that matter most compare a customer <strong>with themselves</strong>. A small customer who always logs in four times a month is fine at four. A large one who drops from forty to fifteen is not, even if fifteen looks healthy on a dashboard.</p><h2>Five customers, five roads</h2><p>To make this concrete, I built an example dataset for a made-up SaaS: 2,000 customers followed for three months, 302 of whom cancelled. <em>Illustrative numbers</em> from here on.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XSXI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04dd17-37d3-41e4-b638-9820c62b142d_3300x2520.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XSXI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04dd17-37d3-41e4-b638-9820c62b142d_3300x2520.png 424w, https://substackcdn.com/image/fetch/$s_!XSXI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04dd17-37d3-41e4-b638-9820c62b142d_3300x2520.png 848w, https://substackcdn.com/image/fetch/$s_!XSXI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04dd17-37d3-41e4-b638-9820c62b142d_3300x2520.png 1272w, https://substackcdn.com/image/fetch/$s_!XSXI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04dd17-37d3-41e4-b638-9820c62b142d_3300x2520.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!XSXI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04dd17-37d3-41e4-b638-9820c62b142d_3300x2520.png" width="1456" height="1112" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d04dd17-37d3-41e4-b638-9820c62b142d_3300x2520.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1112,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:617537,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.byechurn.io/i/222056822?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04dd17-37d3-41e4-b638-9820c62b142d_3300x2520.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XSXI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04dd17-37d3-41e4-b638-9820c62b142d_3300x2520.png 424w, https://substackcdn.com/image/fetch/$s_!XSXI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04dd17-37d3-41e4-b638-9820c62b142d_3300x2520.png 848w, https://substackcdn.com/image/fetch/$s_!XSXI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04dd17-37d3-41e4-b638-9820c62b142d_3300x2520.png 1272w, https://substackcdn.com/image/fetch/$s_!XSXI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d04dd17-37d3-41e4-b638-9820c62b142d_3300x2520.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>How to read it: all 2,000 customers start on the left. Each colour is a road, named in the legend under the chart. Read it left to right: the label on each block is what the data showed at that moment, and the number is how many customers were there. At the end, every road splits between customers who stayed and customers who cancelled. The purple road (Never started) loses almost half its customers; the light green one (Healthy) loses very few. The thin light green band crossing from the top is churn that no signal predicted.</p><p>Now meet one customer from each road, and what to do about each one.</p><h3>1. Never started (purple)</h3><p>The first customer logged in once in their last month and never reached the value event. They didn&#8217;t leave the product. They never really arrived.</p><p>This is the road the cohort curve shows as a month-one cliff. Seen customer by customer, it&#8217;s simple to spot: no value event after the first two weeks.</p><p><strong>What to do:</strong></p><ul><li><p><strong>Find where they stopped, not just that they stopped.</strong> Map the steps between signup and the value event and see where these customers stall. Blocked on setup (an integration, a data import) needs a different fix than never coming back after day one.</p></li><li><p><strong>Check who signed up.</strong> In B2B, the person who buys is often not the person who will use the product. If the account has one login and no invites, ask who should be using it and get them in.</p></li><li><p><strong>Remove the blocker, don&#8217;t just remind.</strong> Templates, sample data, a pre-built first report: anything that gets them to the first result without doing the setup themselves.</p></li><li><p><strong>Watch:</strong> the share of new customers reaching the value event within 14 days.</p></li></ul><h3>2. Fading (yellow)</h3><p>The second customer reached value, used five features, and then slowly went quiet: 3 sessions last month, against their own average of 13.</p><p>The word that matters is <em>own</em>. Against the whole customer base, 3 sessions might look normal. Against this customer&#8217;s history, it&#8217;s a drop of more than three quarters.</p><p><strong>What to do:</strong></p><ul><li><p><strong>Look at who faded, not just the account.</strong> If one main user went quiet and everyone else is unchanged, your champion may have left or changed role. Re-onboard whoever took their place, before they decide they don&#8217;t need the tool.</p></li><li><p><strong>Look at what faded.</strong> Which feature or workflow stopped first? A drop in one workflow often means a process changed on their side, or a competitor took over that job.</p></li><li><p><strong>Send value, not reminders.</strong> A &#8220;we miss you&#8221; email rarely works. A short summary of what the product did for them, or a scheduled report that lands in their inbox, brings the value to them without asking for a login.</p></li><li><p><strong>Watch:</strong> how many Fading customers get back above half of their own average within 30 days.</p></li></ul><h3>3. Narrowing (blue)</h3><p>The third customer still logged in six times a month. But they used one feature out of five, and they had just cut 4 of their 10 seats.</p><p>This customer is shrinking the product down to the one thing they still need, which is also the moment a cheaper tool starts to look good enough.</p><p><strong>What to do:</strong></p><ul><li><p><strong>Ask at the moment it happens.</strong> When someone removes seats or downgrades, one in-product question (&#8221;What changed?&#8221;) tells you more than any dashboard: budget cut, team shrank, or another tool took over.</p></li><li><p><strong>Show what they&#8217;ve stopped using, with their own data.</strong> Not a feature tour, but what those features did for them last quarter, in numbers they recognise.</p></li><li><p><strong>Right-size before they shop around.</strong> If they genuinely need less, offer the smaller plan yourself. A downgrade keeps the customer, the data and the chance to grow again; a cancellation doesn&#8217;t.</p></li><li><p><strong>Watch:</strong> among Narrowing customers, how many downgrade instead of cancelling.</p></li></ul><h3>4. Frustrated (red)</h3><p>The fourth customer used the product normally and opened six support tickets in three months.</p><p>Usage alone would never flag them. Their problem wasn&#8217;t value. It was friction.</p><p><strong>What to do:</strong></p><ul><li><p><strong>Set an escalation rule.</strong> The third ticket in 90 days moves the account to a senior person who owns it until it&#8217;s solved, instead of starting from zero with a new agent each time.</p></li><li><p><strong>Tag the tickets: bug, missing feature, or &#8220;how do I&#8221;.</strong> Each needs a different owner: engineering, product, or better onboarding and docs.</p></li><li><p><strong>Close the loop.</strong> When the fix ships, tell every customer who reported it. Many teams fix the problem and never go back, so the customer still remembers the product as broken.</p></li><li><p><strong>Watch:</strong> cancellations among customers with 3+ tickets, and the rating they give after the fix.</p></li></ul><h3>5. Active until renewal (dark green)</h3><p>The fifth customer is the uncomfortable one. Usage at 100% of their own average, a couple of features, one ticket. Then a renewal came up, and they left.</p><p>In the example data, healthy-looking customers with a renewal in the next 90 days cancelled at <strong>19%</strong>. Healthy customers without one cancelled at <strong>3%</strong>. Usage-based health scores miss this road by design, because nothing in usage changes. What changes is that someone has to decide whether the invoice is worth paying.</p><p><strong>What to do:</strong></p><ul><li><p><strong>Build the renewal case 60&#8211;90 days before.</strong> A recap of what the product did for them, in their own numbers, sent to the person who signs the invoice. That person often never logs in.</p></li><li><p><strong>Check what changed on their side.</strong> A new budget owner, a project that ended, a cost review. Each one is a renewal risk even when usage is perfect.</p></li><li><p><strong>Offer a way to stay that isn&#8217;t the full price.</strong> For customers who use the product in projects or seasons, a pause or a smaller plan beats losing them for good.</p></li><li><p><strong>Watch:</strong> renewal rate for customers who got these moves (the recap, a smaller plan or a pause), against a holdout who didn&#8217;t.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.byechurn.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.byechurn.io/subscribe?"><span>Subscribe now</span></a></p></li></ul><h2>Is the road real? The check most teams skip</h2><p>Here&#8217;s the step that separates an analysis from a list of hunches.</p><p>Take any sign, say &#8220;logged in less than last month&#8221;. Plenty of customers who cancelled will have it, and that feels like proof. It isn&#8217;t, until you check how many customers <strong>who stayed</strong> have it too.</p><p>A few lines of Python do the whole thing: they put each customer on a road, in order, and compare customers who cancelled with customers who stayed. The full code is in the appendix at the bottom.</p><p>Here is the check on the example customers from the chart. For comparison, I added one more row: a simple rule many teams use, &#8220;fewer sessions than last month&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rarO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F983e3f05-ab80-4bc9-b655-aeefc97ff656_1832x822.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rarO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F983e3f05-ab80-4bc9-b655-aeefc97ff656_1832x822.png 424w, https://substackcdn.com/image/fetch/$s_!rarO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F983e3f05-ab80-4bc9-b655-aeefc97ff656_1832x822.png 848w, https://substackcdn.com/image/fetch/$s_!rarO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F983e3f05-ab80-4bc9-b655-aeefc97ff656_1832x822.png 1272w, https://substackcdn.com/image/fetch/$s_!rarO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F983e3f05-ab80-4bc9-b655-aeefc97ff656_1832x822.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!rarO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F983e3f05-ab80-4bc9-b655-aeefc97ff656_1832x822.png" width="1456" height="653" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/983e3f05-ab80-4bc9-b655-aeefc97ff656_1832x822.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:653,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:108974,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.byechurn.io/i/222056822?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F983e3f05-ab80-4bc9-b655-aeefc97ff656_1832x822.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rarO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F983e3f05-ab80-4bc9-b655-aeefc97ff656_1832x822.png 424w, https://substackcdn.com/image/fetch/$s_!rarO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F983e3f05-ab80-4bc9-b655-aeefc97ff656_1832x822.png 848w, https://substackcdn.com/image/fetch/$s_!rarO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F983e3f05-ab80-4bc9-b655-aeefc97ff656_1832x822.png 1272w, https://substackcdn.com/image/fetch/$s_!rarO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F983e3f05-ab80-4bc9-b655-aeefc97ff656_1832x822.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>What it says: a quarter of the customers who cancelled were on the Never started road, against 5% of those who stayed. Almost half the customers on that road cancelled, three times the 15% average.</p><p>Now that simple rule. &#8220;Fewer sessions than last month&#8221; catches 34% of cancellations, more than any single road. But 19% of the customers who stayed have it too. Of every four customers it flags, three stay: a quiet summer month, a holiday, a busy quarter.</p><p>That&#8217;s why the Fading rule asks for <strong>two months in a row, below the customer&#8217;s own average</strong>. One quiet month is noise. Two months below half your own normal is a road.</p><p>Two honest limits. About one cancellation in nine in the example came from customers on no road at all: some churn gives no warning. And everything here is correlation. A road tells you who to look at. It doesn&#8217;t tell you what will work.</p><h2>From the customers you lost to the ones you still have</h2><blockquote><p>The customers who already cancelled are your teaching data. They show you which roads exist in your business and which signs are real there.</p></blockquote><p>The payoff comes next: run the same function every week on your <strong>active</strong> customers. Each one lands on a road, and each road has an owner and a plan. Product takes Never started. CS takes Fading and Frustrated. CS or Sales take Narrowing and renewals.</p><p><strong>Small numbers?</strong> With fewer than about 50 cancellations a year, skip the code. Read your last 20 cancellations one by one and put each on a road by hand. You&#8217;ll learn most of what the table would tell you.</p><h2>Did it work, and was it worth it?</h2><p>An intervention only counts if you can show it changed something. For each road, randomly leave 10&#8211;20% of the customers untouched and compare cancellations after 90 days. Say 100 customers land on Fading this month. Pick 15 at random and leave them alone; the other 85 get the playbook. If 30% of the untouched group cancels and only 20% of the others does, the playbook is worth about 10 points. With groups this small, one or two customers can swing the result, so pool a few months before you trust it. Without that holdout, every &#8220;save&#8221; also counts customers who would have stayed anyway, and comparing this quarter with last quarter won&#8217;t fix it: seasons, prices and channels move churn on their own.</p><p>What it can be worth, as an <em>illustrative calculation</em>: a SaaS with 1,000 customers at $150 MRR loses 150 of them in a quarter, as in the example. A quarter of those were Fading, about 37 customers. If the playbook for that road keeps one in five (an assumption the holdout has to confirm), that&#8217;s about 7 customers, or <strong>roughly $1,000 MRR kept every quarter</strong> from one road. Over a year, about $4,000 MRR, close to $50,000 ARR.</p><blockquote><p>The formula: <strong>cancellations &#215; share on the road &#215; share you keep &#215; MRR per customer.</strong></p></blockquote><h2>Let the data pick your first road</h2><p>Don&#8217;t guess which road your customers take. You can&#8217;t know until you look, and the answer is often not the one the team expects.</p><p>Tag the last 90 days of cancellations. Run the check. Drop any sign that doesn&#8217;t separate customers who leave from customers who stay. Then start with the road that carries the most revenue in your own data, give it an owner and the steps above, and keep a holdout.</p><p>Five roads. One table. One road at a time.</p><blockquote><p>Most customers tell you they&#8217;re leaving long before they click cancel. They just don&#8217;t tell you in words.</p></blockquote><p>&#9851;&#65039; <strong>Keep customers longer.</strong></p><p><strong>Before you go:</strong> which road do most of your cancellations take? Reply with its name: one word is enough.</p><p><em>Antonio</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.byechurn.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.byechurn.io/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h2>Appendix: the full code</h2><p>What this code does: it builds an example table of 2,000 customers, puts each one on a road and runs the check from &#8220;Is the road real?&#8221;. The data is random, so the numbers come out similar to the table above, not identical. To use it on your own customers, replace the example table with one row per customer built from your event log.</p><pre><code><code>import numpy as np
import pandas as pd

# A synthetic customer table, so the example runs as is.
# In real life: one row per customer, built from your event log
# (the 90 days before they cancelled, or the last 90 days if they stayed).
rng = np.random.default_rng(7)
n = 2000
kind = rng.choice(["healthy", "never", "fading", "narrowing", "frustrated", "renewal"],
                  size=n, p=[.62, .08, .11, .08, .06, .05])
avg = rng.gamma(4, 3, n).round() + 2                       # the customer's own normal
df = pd.DataFrame({
    "reached_value_event":        kind != "never",
    "avg_sessions_first_60d":     avg,
    "sessions_last_2_months_max": np.where(kind == "fading", avg * rng.uniform(.1, .45, n),
                                           avg * rng.uniform(.6, 1.3, n)).round(),
    "features_at_start":          rng.integers(2, 6, n),
    "features_now":               np.where(kind == "narrowing", 1, rng.integers(2, 6, n)),
    "seats_removed":              (kind == "narrowing") &amp; (rng.random(n) &lt; .5),
    "tickets_90d":                np.where(kind == "frustrated", rng.integers(3, 8, n), rng.poisson(.4, n)),
    "min_rating_90d":             np.where(kind == "frustrated", rng.integers(1, 3, n), rng.integers(3, 6, n)),
    "renewal_within_90d":         (kind == "renewal") | (rng.random(n) &lt; .06),
})
risk = {"healthy": .03, "never": .45, "fading": .35, "narrowing": .3, "frustrated": .3, "renewal": .4}
df["cancelled"] = rng.random(n) &lt; pd.Series(kind).map(risk).to_numpy()

def road(c):
    if not c.reached_value_event:                         return "Never started"
    if c.tickets_90d &gt;= 3 or c.min_rating_90d &lt;= 2:       return "Frustrated"
    if (c.features_now &lt;= 1 and c.features_at_start &gt;= 3) or c.seats_removed:
                                                          return "Narrowing"
    if c.sessions_last_2_months_max &lt; 0.5 * c.avg_sessions_first_60d:
                                                          return "Fading"
    if c.renewal_within_90d:                              return "Active until renewal"
    return "Healthy"

df["road"] = df.apply(road, axis=1)

# The check: how common is each road among customers who cancelled vs. customers who stayed?
check = pd.crosstab(df.road, df.cancelled, normalize="columns").mul(100).round()
check.columns = ["% of stayed", "% of cancelled"]
check["cancel rate %"] = df.groupby("road").cancelled.mean().mul(100).round()
print(check.sort_values("cancel rate %", ascending=False))</code></code></pre><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.byechurn.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.byechurn.io/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Your Churn Rate Can't Tell You What to Fix]]></title><description><![CDATA[Cohort retention analysis: find when customers start leaving]]></description><link>https://www.byechurn.io/p/your-churn-rate-cant-tell-you-what</link><guid isPermaLink="false">https://www.byechurn.io/p/your-churn-rate-cant-tell-you-what</guid><dc:creator><![CDATA[Antonio Volante]]></dc:creator><pubDate>Mon, 19 Oct 2026 16:07:34 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/88d51db9-d0e5-4d8d-8d2e-8683d8f73a46_3750x2109.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>4.2% monthly churn.</strong></p><p>It&#8217;s on the dashboard. It goes into the board deck. Everyone agrees it should be lower.</p><p>Nobody agrees on what to do about it.</p><p>Product wants to rebuild onboarding. Customer success wants more check-in calls. Marketing wants a win-back campaign. Finance wants a discount for annual plans.</p><blockquote><p>All four could be right. All four could be wasting a quarter.</p></blockquote><p>The churn rate can&#8217;t settle it, because it&#8217;s an average. It tells you how many customers you lose. It doesn&#8217;t tell you <strong>when</strong> the relationship breaks, and the &#8220;when&#8221; is what points to the fix. Cohort retention analysis does.</p><p>In <a href="https://www.byechurn.io/p/why-byechurn-exists">No. 0</a> I said that the same churn rate can hide completely different problems. This one is the practical follow-up: how to find out which problem you have, with one table, in an afternoon.</p><p><strong>In short</strong></p><ul><li><p><strong>Cohort retention analysis</strong> groups customers by when they signed up (or by channel, plan or campaign) and tracks how many are still active over time. It shows <em>when</em> customers leave, which a churn rate can&#8217;t.</p></li><li><p>The shape of the retention curve points to the likely cause, and to the team that owns the fix: a month-one cliff, slow erosion, a renewal cliff, or one broken cohort each call for a different first move.</p></li><li><p>The shape is a pointer, not proof. Confirm it with behavior data, test one intervention against a holdout, and measure the next cohort.</p></li></ul><div><hr></div><h2>Why the average hides the problem</h2><blockquote><p>A churn rate mixes customers who signed up last week with customers who have paid you for two years.</p></blockquote><p>They are at completely different stages of the relationship. New customers are still deciding whether the product works for them. Mature customers are deciding whether it&#8217;s still worth the invoice.</p><p><strong>Churn is an outcome, not a cause.</strong> Behind every cancellation is a moment where the customer stopped getting value. Averaging every customer together erases the one piece of information that helps you find that moment: timing.</p><h2>The Drop-Off Map: cohort retention analysis in four steps</h2><p>The Drop-Off Map is a simple routine with four steps:</p><ol><li><p><strong>Build the cohort table.</strong></p></li><li><p><strong>Remove failed payments first.</strong></p></li><li><p><strong>Read the shape, and pick the first move.</strong></p></li><li><p><strong>Find the behavior behind the drop, then test one change.</strong></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.byechurn.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.byechurn.io/subscribe?"><span>Subscribe now</span></a></p></li></ol><h3>Step 1 &#8212; Build the cohort table</h3><p>A <strong>cohort</strong> is a group of customers who signed up in the same month. A <strong>cohort retention table</strong> shows, for each cohort, the share still active one month, two months, three months after signup.</p><p>Signup date is the most common way to group customers, not the only one. You can also build cohorts by acquisition channel, plan or offer, and compare their curves. Start with time, because it shows <em>when</em> customers leave. The other cuts show <em>who</em> leaves, and they come back in Step 3.</p><p><em>Illustrative numbers:</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9KHz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d3fc155-0253-4107-ac00-99059422213c_1832x548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9KHz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d3fc155-0253-4107-ac00-99059422213c_1832x548.png 424w, https://substackcdn.com/image/fetch/$s_!9KHz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d3fc155-0253-4107-ac00-99059422213c_1832x548.png 848w, https://substackcdn.com/image/fetch/$s_!9KHz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d3fc155-0253-4107-ac00-99059422213c_1832x548.png 1272w, https://substackcdn.com/image/fetch/$s_!9KHz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d3fc155-0253-4107-ac00-99059422213c_1832x548.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9KHz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d3fc155-0253-4107-ac00-99059422213c_1832x548.png" width="1456" height="436" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d3fc155-0253-4107-ac00-99059422213c_1832x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:436,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76127,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.byechurn.io/i/220989976?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d3fc155-0253-4107-ac00-99059422213c_1832x548.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9KHz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d3fc155-0253-4107-ac00-99059422213c_1832x548.png 424w, https://substackcdn.com/image/fetch/$s_!9KHz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d3fc155-0253-4107-ac00-99059422213c_1832x548.png 848w, https://substackcdn.com/image/fetch/$s_!9KHz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d3fc155-0253-4107-ac00-99059422213c_1832x548.png 1272w, https://substackcdn.com/image/fetch/$s_!9KHz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d3fc155-0253-4107-ac00-99059422213c_1832x548.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Read it across, not down. In every cohort, roughly 30% of customers are gone by month one. After that, the curve almost flattens.</p><p>That&#8217;s the signal. Most of the damage happens in the first 30 days.</p><p><strong>Small numbers?</strong> With fewer than ~50&#8211;100 signups a month, monthly cohorts are too noisy to read. Group them by quarter, or read your last 10 cancellations one by one before building anything.</p><p>If your billing data sits in a database, the query at the bottom builds the table for you.</p><p>This counts customers, not revenue (logo churn). Run it again weighted by MRR when you want revenue churn. The two can tell different stories.</p><h3>Step 2 &#8212; Remove failed payments first</h3><p>Before you blame onboarding, check how many of those early cancellations were never a decision.</p><p><strong>Involuntary churn</strong> is when a subscription ends because a payment fails: an expired card, insufficient funds, a declined charge. <strong>Voluntary churn</strong> is when the customer chooses to leave.</p><p>A month-one cliff can be either. The fixes have nothing in common: one is a billing problem, the other is a product problem.</p><p>Many billing tools record why a subscription ended. If yours does, split the table in two, voluntary and involuntary, and look at the voluntary one for the rest of this routine.</p><h3>Step 3 &#8212; Read the shape, and pick the first move</h3><p>Here&#8217;s the core of the strategy. The timing of churn tells you where to look first, and it usually tells you which team should own the problem.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KxFP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80e1c4a-81b4-4760-baa8-53d6114a9c4c_3000x1860.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KxFP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80e1c4a-81b4-4760-baa8-53d6114a9c4c_3000x1860.png 424w, https://substackcdn.com/image/fetch/$s_!KxFP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80e1c4a-81b4-4760-baa8-53d6114a9c4c_3000x1860.png 848w, https://substackcdn.com/image/fetch/$s_!KxFP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80e1c4a-81b4-4760-baa8-53d6114a9c4c_3000x1860.png 1272w, https://substackcdn.com/image/fetch/$s_!KxFP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80e1c4a-81b4-4760-baa8-53d6114a9c4c_3000x1860.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!KxFP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80e1c4a-81b4-4760-baa8-53d6114a9c4c_3000x1860.png" width="1456" height="903" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c80e1c4a-81b4-4760-baa8-53d6114a9c4c_3000x1860.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:903,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:342597,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.byechurn.io/i/220989976?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80e1c4a-81b4-4760-baa8-53d6114a9c4c_3000x1860.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KxFP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80e1c4a-81b4-4760-baa8-53d6114a9c4c_3000x1860.png 424w, https://substackcdn.com/image/fetch/$s_!KxFP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80e1c4a-81b4-4760-baa8-53d6114a9c4c_3000x1860.png 848w, https://substackcdn.com/image/fetch/$s_!KxFP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80e1c4a-81b4-4760-baa8-53d6114a9c4c_3000x1860.png 1272w, https://substackcdn.com/image/fetch/$s_!KxFP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80e1c4a-81b4-4760-baa8-53d6114a9c4c_3000x1860.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The chart shows four curves. In the first, a third of customers vanish in month one, then the curve flattens. In the second, a few leave every month, with no single bad moment. In the third, everything looks healthy until month twelve, then a wall. In the fourth, one cohort falls far below all the others.</p><p>Save this list. It&#8217;s the one I&#8217;d keep next to the cohort report:</p><h4>Cliff in month one</h4><ul><li><p><strong>What it usually points to:</strong> Customers never reached value</p></li><li><p><strong>Look first at:</strong> Time to the first key action; onboarding completion</p></li><li><p><strong>First move this week:</strong> Count the steps between signup and first value, and cut one</p></li><li><p><strong>Usually owned by:</strong> Product</p></li></ul><h4>Steady erosion, no cliff</h4><ul><li><p><strong>What it usually points to:</strong> It solved a first problem but never became a habit</p></li><li><p><strong>Look first at:</strong> How often customers repeat the key action each week</p></li><li><p><strong>First move this week:</strong> Add a reason to come back that doesn&#8217;t rely on memory (a digest, an alert, a scheduled report)</p></li><li><p><strong>Usually owned by:</strong> Product + CS</p></li></ul><h4>Cliff at renewal (annual plans)</h4><ul><li><p><strong>What it usually points to:</strong> Value isn&#8217;t visible when the invoice arrives</p></li><li><p><strong>Look first at:</strong> Usage in the 60&#8211;90 days before renewal; did the buyer leave the company?</p></li><li><p><strong>First move this week:</strong> Send a value recap in the customer&#8217;s own numbers 60&#8211;90 days before renewal</p></li><li><p><strong>Usually owned by:</strong> Customer success</p></li></ul><h4>One cohort breaks</h4><ul><li><p><strong>What it usually points to:</strong> Something changed: channel, targeting, price, release</p></li><li><p><strong>Look first at:</strong> That cohort&#8217;s channel and plan mix vs. the others</p></li><li><p><strong>First move this week:</strong> Find the campaign or channel behind it, and fix or pause it</p></li><li><p><strong>Usually owned by:</strong> Marketing / Sales</p></li></ul><h4>Smooth average, no clear moment</h4><ul><li><p><strong>What it usually points to:</strong> The average is hiding segments that behave very differently</p></li><li><p><strong>Look first at:</strong> Retention split by plan, channel, company size, use case</p></li><li><p><strong>First move this week:</strong> Don&#8217;t fix anything yet: split the curve first</p></li><li><p><strong>Usually owned by:</strong> Leadership / RevOps</p></li></ul><p>The last one is not a shape. It&#8217;s the case where the average looks smooth precisely because it blends very different customers. The fix is to stop looking at one curve.</p><p>A word of caution. <strong>A month-one cliff is consistent with an activation problem. It isn&#8217;t proof of one.</strong> The shape tells you where to look. The next step tells you what&#8217;s actually there.</p><h3>Step 4 &#8212; Find the behavior behind the drop, then test one change</h3><p>Take the month-one cliff. Split customers into two groups: those who left before month two, and those who stayed. Then compare what they did in their first two weeks.</p><p><em>Illustrative numbers:</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xcM5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc66fa82-ce9c-4521-881d-96047059ebf3_1632x548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xcM5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc66fa82-ce9c-4521-881d-96047059ebf3_1632x548.png 424w, https://substackcdn.com/image/fetch/$s_!xcM5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc66fa82-ce9c-4521-881d-96047059ebf3_1632x548.png 848w, https://substackcdn.com/image/fetch/$s_!xcM5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc66fa82-ce9c-4521-881d-96047059ebf3_1632x548.png 1272w, https://substackcdn.com/image/fetch/$s_!xcM5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc66fa82-ce9c-4521-881d-96047059ebf3_1632x548.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xcM5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc66fa82-ce9c-4521-881d-96047059ebf3_1632x548.png" width="1456" height="489" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc66fa82-ce9c-4521-881d-96047059ebf3_1632x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:489,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68715,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.byechurn.io/i/220989976?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc66fa82-ce9c-4521-881d-96047059ebf3_1632x548.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xcM5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc66fa82-ce9c-4521-881d-96047059ebf3_1632x548.png 424w, https://substackcdn.com/image/fetch/$s_!xcM5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc66fa82-ce9c-4521-881d-96047059ebf3_1632x548.png 848w, https://substackcdn.com/image/fetch/$s_!xcM5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc66fa82-ce9c-4521-881d-96047059ebf3_1632x548.png 1272w, https://substackcdn.com/image/fetch/$s_!xcM5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc66fa82-ce9c-4521-881d-96047059ebf3_1632x548.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In plain words: customers who stayed were more than three times as likely to have created a first report.</p><blockquote><p>Every product has an action like this. I call it the <strong>value event</strong>: the first moment a customer gets the result they signed up for. Creating a report, connecting an integration, sending a first campaign.</p></blockquote><p>This is still correlation. Customers who were already more motivated may simply do more of everything. So treat the value event as a hypothesis, and test it:</p><ul><li><p><strong>Hypothesis:</strong> customers who don&#8217;t create a first report in week one never form the habit.</p></li><li><p><strong>Intervention:</strong> guide every new customer toward the first report, and send a specific nudge on day 5 to anyone who hasn&#8217;t done it. Not a generic &#8220;how&#8217;s it going?&#8221; email.</p></li><li><p><strong>Test:</strong> randomly hold back 10&#8211;20% of new signups from the nudge.</p></li><li><p><strong>Measure:</strong> compare month-one retention between the two groups.</p></li></ul><h2>How to measure impact</h2><p>The tempting move is to compare the cohorts before the change with the cohorts after it. Don&#8217;t rely on that alone.</p><p>Cohorts differ for many reasons: season, acquisition channel, pricing, a sales push at quarter end. A better March might have nothing to do with your nudge.</p><p>A holdout fixes this. Same month, same channels, same product. The only difference is the intervention.</p><p>With a few hundred signups a month, give it two or three cohorts before trusting a difference of a few points.</p><h2>What it&#8217;s worth</h2><p><em>Illustrative calculation:</em></p><ul><li><p>A SaaS adds 200 customers a month at $100 MRR each.</p></li><li><p>Month-one retention goes from 70% to 78%. That&#8217;s 16 more customers per cohort past the first month.</p></li><li><p>If those customers then behave like everyone else (in the table above, about 76% of month-one survivors are still there at month six), that&#8217;s about 12 extra customers per cohort at month six.</p></li><li><p>12 &#215; $100 = <strong>$1,200 MRR per cohort</strong> that would otherwise have been lost.</p></li><li><p>After twelve cohorts, that adds up to roughly <strong>$14,000 MRR</strong>, about $170,000 ARR, from one change in week one.</p></li></ul><p>The formula is simple: <strong>extra customers retained &#215; the share who stay afterwards &#215; MRR per customer.</strong> Put your own numbers in.</p><p>The big assumption is that the customers you save behave like the ones who stayed on their own. That&#8217;s exactly what the holdout checks.</p><h2>Your Monday checklist</h2><ul><li><p>Build the cohort retention table for the last 12 months.</p></li><li><p>Split out failed payments and look at voluntary churn only.</p></li><li><p>Name your shape using the list above, and the team that owns it.</p></li><li><p>Pick one candidate value event and compare churned vs. retained customers on it.</p></li><li><p>Design one intervention with a holdout group.</p></li></ul><div><hr></div><p>Your churn rate tells you how many customers you lose.</p><p>Your retention curve tells you <strong>when</strong> the relationship breaks.</p><p>And the &#8220;when&#8221; tells you what to fix first.</p><p>&#9851;&#65039; <strong>Keep customers longer.</strong></p><p><strong>Before you go:</strong> what does your month-one drop look like? Hit reply and tell me. I read every answer.</p><p><em>Antonio</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.byechurn.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.byechurn.io/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h2>Appendix: the query</h2><p>It assumes one row per customer with a start date and an end date (empty while the customer is still active):</p><pre><code><code>-- subscriptions(customer_id, start_date, end_date); end_date is NULL while active
-- One row per customer. Postgres syntax.
WITH base AS (
  SELECT customer_id, start_date, end_date,
         date_trunc('month', start_date)::date AS cohort
  FROM subscriptions
)
SELECT b.cohort,
       m AS month_number,
       ROUND(100.0 * AVG(CASE
         WHEN b.end_date IS NULL
           OR b.end_date &gt; b.start_date + make_interval(months =&gt; m)
         THEN 1 ELSE 0 END), 1) AS pct_still_active
FROM base b
CROSS JOIN generate_series(0, 12) AS m
-- keep only months that every customer in the cohort has fully reached
WHERE b.cohort + make_interval(months =&gt; m + 1) &lt;= date_trunc('month', current_date)
GROUP BY b.cohort, m
ORDER BY b.cohort, m;</code></code></pre><p>In plain words: for each signup month, and for each month after it, the query counts the share of customers who hadn&#8217;t cancelled yet.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.byechurn.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.byechurn.io/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Why ByeChurn exists]]></title><description><![CDATA[Keep customers longer &#9851;&#65039;]]></description><link>https://www.byechurn.io/p/why-byechurn-exists</link><guid isPermaLink="false">https://www.byechurn.io/p/why-byechurn-exists</guid><dc:creator><![CDATA[Antonio Volante]]></dc:creator><pubDate>Mon, 05 Oct 2026 16:09:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kNzt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kNzt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kNzt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png 424w, https://substackcdn.com/image/fetch/$s_!kNzt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png 848w, https://substackcdn.com/image/fetch/$s_!kNzt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png 1272w, https://substackcdn.com/image/fetch/$s_!kNzt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kNzt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:314273,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.byechurn.io/i/218628970?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kNzt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png 424w, https://substackcdn.com/image/fetch/$s_!kNzt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png 848w, https://substackcdn.com/image/fetch/$s_!kNzt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png 1272w, https://substackcdn.com/image/fetch/$s_!kNzt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9310c54f-f976-4021-848a-ca67f7bf476b_2400x1350.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>ByeChurn is a newsletter about customer churn and retention for SaaS and subscription businesses.</p><blockquote><p>Acquiring customers is hard. Keeping them is a different problem.</p></blockquote><p>Every SaaS and subscription business eventually faces the same question:</p><p><strong>Why do customers leave and what can we actually do about it?</strong></p><p>That&#8217;s the question behind ByeChurn.</p><div><hr></div><h2><strong>Retention deserves more attention</strong></h2><p>Subscription businesses are built around recurring relationships.</p><p>A customer doesn&#8217;t just buy once.</p><p>They subscribe, use the product, experience it, form habits around it and eventually decide whether to stay or leave.</p><p>That makes <strong>customer retention</strong> one of the fundamental drivers of sustainable growth.</p><p>Yet the conversation around growth often starts somewhere else.</p><p><strong>Acquisition.<br>Conversion.<br>CAC.</strong></p><p>All important.</p><p>But getting a customer through the door is only the beginning.</p><ul><li><p>What happens after they subscribe?</p></li><li><p>Do they reach value quickly enough?</p></li><li><p>Do they understand how to use the product?</p></li><li><p>Do they actually adopt the features that matter?</p></li><li><p>When does engagement start to decline?</p></li><li><p>Why do some customers stay for years while others churn after a few months?</p></li><li><p>And can we identify those patterns early enough to do something about them?</p></li></ul><p><strong>ByeChurn exists to answer those questions.</strong></p><div><hr></div><h1><strong>A practical approach to customer retention</strong></h1><p>ByeChurn is<strong> a research project dedicated to translating complex customer churn and retention insights into practical knowledge for SaaS and subscription businesses.</strong></p><p>The goal is simple:</p><blockquote><p><strong>Turn that knowledge into actionable strategies that help companies keep customers longer.</strong></p></blockquote><p>This means looking beyond churn as a single number on a dashboard.</p><p>A churn rate can tell you <strong>how much</strong> you&#8217;re losing.</p><p>It doesn&#8217;t necessarily tell you:</p><p><strong>who is leaving, when they&#8217;re leaving, why they&#8217;re leaving, or what you should change.</strong></p><p>Take two SaaS companies that both lose 5% of their customers every month:</p><ul><li><p>In the first, most customers leave within their first 30 days. That points to onboarding and time-to-value.</p></li><li><p>In the second, customers leave after a year. That points to pricing, engagement or long-term value.</p></li></ul><p>Same churn rate. Completely different problems. Completely different strategies.</p><p>That&#8217;s where the interesting work begins.</p><div><hr></div><h1><strong>From research to strategy</strong></h1><p>ByeChurn isn&#8217;t meant to be another generic growth blog.</p><p>No endless lists of:</p><p><em>&#8220;10 ways to improve customer retention.&#8221;</em></p><p>No advice detached from the actual problem.</p><p>The approach is different.</p><p><strong>Start with a retention problem.</strong></p><p>Understand what is happening.</p><p>Look at the data, research and underlying mechanisms.</p><p>Then turn that understanding into a practical strategy.</p><p>The core format of ByeChurn is therefore simple:</p><h3><strong>One problem &#8594; one analysis &#8594; one practical strategy.</strong></h3><p>Topics may include:</p><ul><li><p>onboarding and time-to-value</p></li><li><p>activation and product adoption</p></li><li><p>customer engagement</p></li><li><p>lifecycle communication</p></li><li><p>customer success</p></li><li><p>pricing and packaging</p></li><li><p>cohort retention</p></li><li><p>customer segmentation</p></li><li><p>churn analysis</p></li><li><p>churn prediction</p></li><li><p>customer lifetime value</p></li><li><p>survival analysis</p></li><li><p>retention experiments</p></li><li><p>behavioral data</p></li><li><p>and everything in between.</p></li></ul><p>The specific topic can change.</p><p>The question stays the same:</p><blockquote><p><strong>What is causing the retention problem, and what can we do about it?</strong></p></blockquote><div><hr></div><h1><strong>Data matters. But data isn&#8217;t the strategy.</strong></h1><p>Modern subscription businesses generate enormous amounts of customer data.</p><ul><li><p>logins and sessions</p></li><li><p>feature usage and product events</p></li><li><p>invitations and referrals</p></li><li><p>support interactions</p></li><li><p>payments and cancellation behavior</p></li><li><p>feedback</p></li></ul><p>This data can reveal patterns that aren&#8217;t obvious from aggregate metrics.</p><p>For example:</p><ol><li><p>A cohort analysis can reveal <strong>when</strong> customers tend to disappear.</p></li><li><p>Segmentation can reveal <strong>which types of customers</strong> are most exposed to churn.</p></li><li><p>Behavioral analysis can reveal <strong>what changes before cancellation</strong>.</p></li><li><p>Machine learning can help identify customers with a higher probability of churning.</p></li><li><p>Survival analysis can help understand <strong>how churn evolves over time</strong>.</p></li></ol><p>But the model itself isn&#8217;t the point.</p><p>The point is what you do with the insight.</p><p><strong>Analysis should lead to action.</strong></p><div><hr></div><h1><strong>Building a retention knowledge base</strong></h1><p>Over time, ByeChurn will become more than a newsletter.</p><blockquote><p>The long-term goal is to build a <strong>practical knowledge base about customer retention and churn.</strong></p></blockquote><p>Each strategy is a building block.</p><p>One piece might explain how to identify early versus late churn.</p><p>Another might explore activation.</p><p>Another might examine customer engagement.</p><p>Another might use cohort analysis to uncover retention patterns.</p><p>Another might explore how predictive models can support churn prevention.</p><p>Individually, each piece answers a specific question.</p><p>Together, they form a broader body of knowledge about <strong>how subscription businesses keep customers.</strong></p><p>The idea is simple:</p><blockquote><p><strong>Research &#8594; Analysis &#8594; Actionable Knowledge.</strong></p></blockquote><p>The newsletter is where that process is shared in public.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.byechurn.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.byechurn.io/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h1><strong>From knowledge to useful tools</strong></h1><p>Knowledge is most valuable when it can be used.</p><p>That&#8217;s why ByeChurn will also explore practical resources that turn ideas into something more tangible:</p><ul><li><p>templates</p></li><li><p>frameworks</p></li><li><p>playbooks</p></li><li><p>data examples</p></li><li><p>guides</p></li><li><p>tools</p></li></ul><p>And, over time, potentially products designed to help subscription businesses understand and improve their retention.</p><p>The objective isn&#8217;t to add more complexity.</p><p>It&#8217;s to make retention work <strong>clearer, more structured and more actionable.</strong></p><div><hr></div><h1><strong>Learning from people who actually do the work</strong></h1><p>Data can explain a lot.</p><p>It can&#8217;t explain everything.</p><p>Retention also depends on the decisions made by founders, product teams, customer success teams, growth teams and researchers.</p><p>So ByeChurn will eventually feature conversations with people working on these problems in the real world.</p><p>Not interviews for the sake of having interviews.</p><p>Instead, conversations focused on the actual work:</p><ul><li><p><strong>What was the problem?</strong></p></li><li><p><strong>How did you diagnose it?</strong></p></li><li><p><strong>What did you change?</strong></p></li><li><p><strong>What happened afterwards?</strong></p></li><li><p><strong>What worked?</strong></p></li><li><p><strong>What didn&#8217;t?</strong></p></li><li><p><strong>What would you do differently?</strong></p></li></ul><p>Because sometimes the most useful retention strategy isn&#8217;t found in a textbook.</p><p>It&#8217;s hidden inside someone&#8217;s experience.</p><div><hr></div><h1><strong>Why build ByeChurn?</strong></h1><p>The subscription economy has changed the relationship between businesses and customers.</p><p>Revenue is no longer just about making the sale.</p><p>It&#8217;s about creating enough ongoing value for customers to keep choosing the product.</p><p>That makes retention a fascinating problem.</p><p>It sits at the intersection of:</p><p><strong>Business.</strong></p><p><strong>Product.</strong></p><p><strong>Customer experience.</strong></p><p><strong>Behavior.</strong></p><p><strong>Data.</strong></p><p>And increasingly, <strong>AI and machine learning.</strong></p><p>That&#8217;s the space ByeChurn wants to explore.</p><p>Not by pretending to have all the answers.</p><p>But by continuously researching, testing, learning and sharing what actually works.</p><div><hr></div><h1><strong>Start here</strong></h1><p>This is <strong>ByeChurn No. 0.</strong></p><p>There isn&#8217;t a massive library yet.</p><p>There isn&#8217;t a huge audience.</p><p>And that&#8217;s fine.</p><p>Every knowledge base starts with one piece.</p><p>The next issue will begin the real work:</p><blockquote><p><strong>one retention problem &#8594; one piece of research &#8594; one practical strategy.</strong></p></blockquote><p>Then another.</p><p>And another.</p><p>Over time, those individual strategies will become something bigger:</p><blockquote><p><strong>A practical body of knowledge about customer retention and churn.</strong></p></blockquote><p>For SaaS and subscription businesses.</p><p>For the people building them.</p><p>For the people trying to understand why customers stay and why they leave.</p><p><strong>Before you go:</strong> what's the retention problem you're struggling with right now? Hit reply and tell me. I read every answer, and the best questions will shape future issues.</p><p><strong>Welcome to ByeChurn.</strong></p><p><em>Antonio</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.byechurn.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.byechurn.io/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item></channel></rss>