exagobi.com
Open in
urlscan Pro
141.193.213.21
Public Scan
Submitted URL: https://d1k0hv04.na1.hubspotlinks.com/Btc/DN+113/d1K0hv04/VWnPDb77x952W7wzKQq7mMjq-W9ccHTJ4xN2NWN7swVw73q8_QV1-WJV7CgXNyW2FNyNk406dfLW...
Effective URL: https://exagobi.com/reporting/3-mistakes-to-avoid-when-tracking-churn/?utm_campaign=nurture9-21&utm_source=email&utm...
Submission: On September 22 via api from US — Scanned from DE
Effective URL: https://exagobi.com/reporting/3-mistakes-to-avoid-when-tracking-churn/?utm_campaign=nurture9-21&utm_source=email&utm...
Submission: On September 22 via api from US — Scanned from DE
Form analysis
10 forms found in the DOM#
<form action="#" autocomplete="off" aria-label="Search form 4">
<input type="search" class="orig" placeholder="Search here..." name="phrase" value="" aria-label="Search input 4" autocomplete="off">
<input type="text" class="autocomplete" name="phrase" value="" aria-label="Search autocomplete, ignore please" aria-hidden="true" autocomplete="off" disabled="">
<input type="submit" aria-hidden="true" aria-label="Hidden button" style="width:0; height: 0; visibility: hidden;">
</form>
#
<form action="#" autocomplete="off" aria-label="Search form 4">
<input type="search" class="orig" placeholder="Search here..." name="phrase" value="" aria-label="Search input 4" autocomplete="off">
<input type="text" class="autocomplete" name="phrase" value="" aria-label="Search autocomplete, ignore please" aria-hidden="true" autocomplete="off" disabled="">
<input type="submit" aria-hidden="true" aria-label="Hidden button" style="width:0; height: 0; visibility: hidden;">
</form>
#
<form action="#" autocomplete="off" aria-label="Search form 2">
<input type="search" class="orig" placeholder="Search here..." name="phrase" value="" aria-label="Search input 2" autocomplete="off">
<input type="text" class="autocomplete" name="phrase" value="" aria-label="Search autocomplete, ignore please" aria-hidden="true" autocomplete="off" disabled="">
<input type="submit" aria-hidden="true" aria-label="Hidden button" style="width:0; height: 0; visibility: hidden;">
</form>
#
<form action="#" autocomplete="off" aria-label="Search form 4">
<input type="search" class="orig" placeholder="Search here..." name="phrase" value="" aria-label="Search input 4" autocomplete="off">
<input type="text" class="autocomplete" name="phrase" value="" aria-label="Search autocomplete, ignore please" aria-hidden="true" autocomplete="off" disabled="">
<input type="submit" aria-hidden="true" aria-label="Hidden button" style="width:0; height: 0; visibility: hidden;">
</form>
#
<form action="#" autocomplete="off" aria-label="Search form 4">
<input type="search" class="orig" placeholder="Search here..." name="phrase" value="" aria-label="Search input 4" autocomplete="off">
<input type="text" class="autocomplete" name="phrase" value="" aria-label="Search autocomplete, ignore please" aria-hidden="true" autocomplete="off" disabled="">
<input type="submit" aria-hidden="true" aria-label="Hidden button" style="width:0; height: 0; visibility: hidden;">
</form>
Name: options —
<form name="options" class="asp-fss-flex" autocomplete="off">
<input type="hidden" style="display:none;" name="current_page_id" value="2460">
<input type="hidden" name="qtranslate_lang" style="display:none;" value="0">
<input type="hidden" name="filters_changed" style="display:none;" value="0">
<input type="hidden" name="filters_initial" style="display:none;" value="1">
<fieldset class="asp_filter_generic asp_filter_id_1 asp_filter_n_0">
<legend>Generic filters</legend>
<div class="asp_option asp-o-last">
<div class="asp_option_inner">
<input type="checkbox" value="exact" id="set_exact4_2" aria-label="Exact matches only" name="asp_gen[]">
<label aria-hidden="true" for="set_exact4_2"> Hidden label </label>
</div>
<div class="asp_option_label"> Exact matches only </div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="title" id="set_title4_2" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_title4_2"> Hidden label </label>
</div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="content" id="set_content4_2" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_content4_2"> Hidden label </label>
</div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="excerpt" id="set_excerpt4_2" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_excerpt4_2"> Hidden label </label>
</div>
</div>
</fieldset> <input type="checkbox" style="display: none !important;" value="post" aria-label="Hidden label" aria-hidden="true" id="4_2customset_4_2100" name="customset[]" checked="checked">
<input type="checkbox" style="display: none !important;" value="page" aria-label="Hidden label" aria-hidden="true" id="4_2customset_4_2101" name="customset[]" checked="checked">
<div style="clear:both;"></div>
</form>
Name: options —
<form name="options" class="asp-fss-flex" autocomplete="off">
<input type="hidden" style="display:none;" name="current_page_id" value="2460">
<input type="hidden" name="qtranslate_lang" style="display:none;" value="0">
<input type="hidden" name="filters_changed" style="display:none;" value="0">
<input type="hidden" name="filters_initial" style="display:none;" value="1">
<fieldset class="asp_filter_generic asp_filter_id_1 asp_filter_n_0">
<legend>Generic filters</legend>
<div class="asp_option asp-o-last">
<div class="asp_option_inner">
<input type="checkbox" value="exact" id="set_exact2_1" aria-label="Exact matches only" name="asp_gen[]">
<label aria-hidden="true" for="set_exact2_1"> Hidden label </label>
</div>
<div class="asp_option_label"> Exact matches only </div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="title" id="set_title2_1" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_title2_1"> Hidden label </label>
</div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="content" id="set_content2_1" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_content2_1"> Hidden label </label>
</div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="excerpt" id="set_excerpt2_1" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_excerpt2_1"> Hidden label </label>
</div>
</div>
</fieldset> <input type="checkbox" style="display: none !important;" value="post" aria-label="Hidden label" aria-hidden="true" id="2_1customset_2_1100" name="customset[]" checked="checked">
<input type="checkbox" style="display: none !important;" value="page" aria-label="Hidden label" aria-hidden="true" id="2_1customset_2_1101" name="customset[]" checked="checked">
<div style="clear:both;"></div>
</form>
Name: options —
<form name="options" class="asp-fss-flex" autocomplete="off">
<input type="hidden" style="display:none;" name="current_page_id" value="2460">
<input type="hidden" name="qtranslate_lang" style="display:none;" value="0">
<input type="hidden" name="filters_changed" style="display:none;" value="0">
<input type="hidden" name="filters_initial" style="display:none;" value="1">
<fieldset class="asp_filter_generic asp_filter_id_1 asp_filter_n_0">
<legend>Generic filters</legend>
<div class="asp_option asp-o-last">
<div class="asp_option_inner">
<input type="checkbox" value="exact" id="set_exact4_3" aria-label="Exact matches only" name="asp_gen[]">
<label aria-hidden="true" for="set_exact4_3"> Hidden label </label>
</div>
<div class="asp_option_label"> Exact matches only </div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="title" id="set_title4_3" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_title4_3"> Hidden label </label>
</div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="content" id="set_content4_3" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_content4_3"> Hidden label </label>
</div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="excerpt" id="set_excerpt4_3" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_excerpt4_3"> Hidden label </label>
</div>
</div>
</fieldset> <input type="checkbox" style="display: none !important;" value="post" aria-label="Hidden label" aria-hidden="true" id="4_3customset_4_3100" name="customset[]" checked="checked">
<input type="checkbox" style="display: none !important;" value="page" aria-label="Hidden label" aria-hidden="true" id="4_3customset_4_3101" name="customset[]" checked="checked">
<div style="clear:both;"></div>
</form>
Name: options —
<form name="options" class="asp-fss-flex" autocomplete="off">
<input type="hidden" style="display:none;" name="current_page_id" value="2460">
<input type="hidden" name="qtranslate_lang" style="display:none;" value="0">
<input type="hidden" name="filters_changed" style="display:none;" value="0">
<input type="hidden" name="filters_initial" style="display:none;" value="1">
<fieldset class="asp_filter_generic asp_filter_id_1 asp_filter_n_0">
<legend>Generic filters</legend>
<div class="asp_option asp-o-last">
<div class="asp_option_inner">
<input type="checkbox" value="exact" id="set_exact4_2" aria-label="Exact matches only" name="asp_gen[]">
<label aria-hidden="true" for="set_exact4_2"> Hidden label </label>
</div>
<div class="asp_option_label"> Exact matches only </div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="title" id="set_title4_2" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_title4_2"> Hidden label </label>
</div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="content" id="set_content4_2" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_content4_2"> Hidden label </label>
</div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="excerpt" id="set_excerpt4_2" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_excerpt4_2"> Hidden label </label>
</div>
</div>
</fieldset> <input type="checkbox" style="display: none !important;" value="post" aria-label="Hidden label" aria-hidden="true" id="4_2customset_4_2100" name="customset[]" checked="checked">
<input type="checkbox" style="display: none !important;" value="page" aria-label="Hidden label" aria-hidden="true" id="4_2customset_4_2101" name="customset[]" checked="checked">
<div style="clear:both;"></div>
</form>
Name: options —
<form name="options" class="asp-fss-flex" autocomplete="off">
<input type="hidden" style="display:none;" name="current_page_id" value="2460">
<input type="hidden" name="qtranslate_lang" style="display:none;" value="0">
<input type="hidden" name="filters_changed" style="display:none;" value="0">
<input type="hidden" name="filters_initial" style="display:none;" value="1">
<fieldset class="asp_filter_generic asp_filter_id_1 asp_filter_n_0">
<legend>Generic filters</legend>
<div class="asp_option asp-o-last">
<div class="asp_option_inner">
<input type="checkbox" value="exact" id="set_exact4_3" aria-label="Exact matches only" name="asp_gen[]">
<label aria-hidden="true" for="set_exact4_3"> Hidden label </label>
</div>
<div class="asp_option_label"> Exact matches only </div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="title" id="set_title4_3" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_title4_3"> Hidden label </label>
</div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="content" id="set_content4_3" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_content4_3"> Hidden label </label>
</div>
</div>
<div class="asp_option hiddend" aria-hidden="true">
<div class="asp_option_inner">
<input type="checkbox" value="excerpt" id="set_excerpt4_3" data-origvalue="1" name="asp_gen[]" checked="checked">
<label for="set_excerpt4_3"> Hidden label </label>
</div>
</div>
</fieldset> <input type="checkbox" style="display: none !important;" value="post" aria-label="Hidden label" aria-hidden="true" id="4_3customset_4_3100" name="customset[]" checked="checked">
<input type="checkbox" style="display: none !important;" value="page" aria-label="Hidden label" aria-hidden="true" id="4_3customset_4_3101" name="customset[]" checked="checked">
<div style="clear:both;"></div>
</form>
Text Content
* Search * WHY EXAGO? * IT’S BUILT FOR SAAS * Flexible Embedding * Flat-Rate Pricing * Client Support * COMPANY * About Us * Leadership * Careers * SOFTWARE * PRODUCT * Reports * Dashboards * Request a Demo * INTEGRATION * Application Integration * Data Integration * Customization & Extension * RESOURCES * BUYER’S GUIDE * Build or Buy? * Assessing Product Fit * Deployment Options * CONTENT LIBRARY * Customer Stories * Whitepapers & Ebooks * Brochures & Infographics * Gallery * Webinars * Videos * Podcast * Blog * Search * WHY EXAGO? * IT’S BUILT FOR SAAS * Flexible Embedding * Flat-Rate Pricing * Client Support * COMPANY * About Us * Leadership * Careers * SOFTWARE * PRODUCT * Reports * Dashboards * Request a Demo * INTEGRATION * Application Integration * Data Integration * Customization & Extension * RESOURCES * BUYER’S GUIDE * Build or Buy? * Assessing Product Fit * Deployment Options * CONTENT LIBRARY * Customer Stories * Whitepapers & Ebooks * Brochures & Infographics * Gallery * Webinars * Videos * Podcast * Blog Search REQUEST A DEMO * Search * WHY EXAGO? * IT’S BUILT FOR SAAS * Flexible Embedding * Flat-Rate Pricing * Client Support * COMPANY * About Us * Leadership * Careers * SOFTWARE * PRODUCT * Reports * Dashboards * Request a Demo * INTEGRATION * Application Integration * Data Integration * Customization & Extension * RESOURCES * BUYER’S GUIDE * Build or Buy? * Assessing Product Fit * Deployment Options * CONTENT LIBRARY * Customer Stories * Whitepapers & Ebooks * Brochures & Infographics * Gallery * Webinars * Videos * Podcast * Blog * Search * WHY EXAGO? * IT’S BUILT FOR SAAS * Flexible Embedding * Flat-Rate Pricing * Client Support * COMPANY * About Us * Leadership * Careers * SOFTWARE * PRODUCT * Reports * Dashboards * Request a Demo * INTEGRATION * Application Integration * Data Integration * Customization & Extension * RESOURCES * BUYER’S GUIDE * Build or Buy? * Assessing Product Fit * Deployment Options * CONTENT LIBRARY * Customer Stories * Whitepapers & Ebooks * Brochures & Infographics * Gallery * Webinars * Videos * Podcast * Blog 3 MISTAKES TO AVOID WHEN CALCULATING CHURN by Nicole Hitner | Dashboards & Data Viz, Reporting “Well, in our country,” said Alice, still panting a little, “you’d generally get to somewhere else — if you run very fast for a long time, as we’ve been doing.” “A slow sort of country!” said the Queen. “Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!” — Lewis Carroll, Alice Through the Looking Glass Though customer retention certainly matters to businesses operating on non-recurring revenue, for software-as-a-service (SaaS) providers and other subscription-based companies, it’s a vital sign. Churn — the proportion of customers who leave your service in a given span of time — reflects how much work your teams will have to do just to maintain their existing recurring revenue. Churn Rate = Number of Churned Customers/Total Customers The formula for calculating churn may look simple, but looks can be deceptive. According to Maeve Kneafsey of CloudKPI, who has made it her business to know such things, there are a whopping 43 different ways to calculate churn. The reason this number is so high is due to variation in how companies 1) count customers, 2) define the moment of churn, and 3) include or exclude customers from the time frame in question. Still, regardless of your particular methodology in calculating churn, there are best practices you can (and should) be following to benefit from the results. Below are three mistakes Kneafsey urges SaaS companies to avoid as they set about tracking their churn. 1. COUNTING CUSTOMERS INCONSISTENTLY “You can count your customers in quite a few different ways, but the most important way is that you consistently count them the same way,” says Kneafsey. Without consistency, comparing churn rates becomes an exercise in futility; and without comparison, it’s hard to draw conclusions about a company’s trajectory. Once you’ve settled on what qualifies as a customer, record that definition, adopt it universally throughout the company, and stick to it over time. Ensure that new recruits, especially those involved in reporting, are aware of the definition before they go preparing status updates and board presentations. If the numbers don’t look good for a given quarter, don’t bend the rules to compensate. When crafting your customer count methodology, remember to take these nuances into account: 1. Contract vs Logo: It’s usually possible for a single client to hold multiple subscriptions to the same SaaS product. In that case, do you count the client as a single customer (by logo) or as multiple customers (by contract)? Kneafsey recommends picking one but keeping an eye on both, as the disparity between the two can say a lot about your Customer Success team’s land-and-expand efforts. 2. Point of Conversion: Is a customer a customer upon contract signing or as of the contract start date? This will help determine whether a customer who signed in December 2018 but whose contract began in January 2019 should be counted as a Q4 2018 customer. 3. Paying Customers vs Freemium Customers: Make sure your company knows to distinguish between revenue-generating customers and freemium customers, who might be worth tracking with a separate churn rate. 4. Total vs Churnable Total: Some companies opt to divide the number of churned customers not by the total number of customers but by the number of churnable customers for a given period. Some customers may not be able to churn in a given month or quarter due to an exit clause or their limbo status (see below). Don’t forget about your churn denominator! 2. TREATING CUSTOMER STATUS AS BINARY There are so many points at which a customer may be neither active nor churned, such as: * When a customer has made their final payment but not yet renewed. * When a contract is over and a new contract is being negotiated. * When a customer is paying for a product but not actively using it. * When a customer is delinquent on a payment and not bound by an exit clause. * When a customer enters a renewal “grace period” of a length defined by the SaaS provider. Kneafsey calls these “limbo” customers because “they’re not active, but they’re not gone.” Companies should identify these corner cases and decide whether to include or exclude them from churn calculations. A good rule of thumb, according to Kneafsey, is to abide by the classic definition for point of churn: “Churn happens when a customer who should be renewing doesn’t renew.” What that means for your churn rate will depend on your company’s practices; again, just be sure to document them and work to retain customers at risk of churning away. 3. ANALYZING CHURN IN A VACUUM After all that work defining terms, gathering data, and performing calculations, you come to the determination that your churn rate averages at about 4 percent per month. Great! Now what? “That number alone isn’t going to tell you anything,” says Kneafsey. Companies sometimes become so consumed with calculating churn on behalf of VCs and other investors that they forget to use the metric to their own advantage. “Where you begin to understand possibly why they’re churning or where the churn is happening, you need to slice and dice that data in a different way or more specific ways.” How you drill into that data will depend a great deal on the questions you’re trying to answer. Maybe you want to know if you’re seeing seasonal churn or whether churn varies between products you offer. Perhaps you want to analyze a particular feature enhancement’s effects on churn, or a new customer success practice. You can compare churn over time or your churn rates against benchmark rates for companies of a similar size and vertical. The analytical combinations are virtually infinite, and they’re all better than a churn rate taken in isolation. To lower your churn, you need to understand what’s driving it. Drill in. So, to sum up, when calculating churn, be mindful of the three C’s: consistency, caveats, and comparison. Pick a method, clarify your policy around corner cases, and then work to understand the forces influencing your churn rate to get the most out of that metric. And for those of you who want more KPI wisdom from Maeve Kneafsey, be sure to check out her guest appearances on the Data Talks podcast. -------------------------------------------------------------------------------- Originally published with Software Business Growth. Stay up-to-date on all things SaaS and analytics with fresh content each month. Sign up RELATED POSTS Embedded BI: An Antidote to Churn KPIs and Metrics for SaaS Success The Right Way to Calculate 3 Critical SaaS KPIs What Is Ad Hoc Reporting? READY TO SEE EXAGO BI IN ACTION? REQUEST A DEMO Please fill out the form and we’ll be in touch to arrange a personalized demo. Just want a quick overview? Check out our webinar. IT’S BUILT FOR SAAS Flexible Embedding Flat Rate Pricing Client Support COMPANY Leadership About Us PRODUCT Reports Dashboards Request Demo INTEGRATION Application Integration Data Integration Customization & Extension BUYER’S GUIDE Build or Buy? Assessing Product Fit Deployment Options CONTENT LIBRARY Customer Stories Whitepapers & Ebooks Brochures & Infographics Gallery Webinar Videos Podcast Blog Contact Careers Support Privacy * Follow * Follow * Follow *HIDDEN ACCORDION* Your content goes here. Edit or remove this text inline or in the module Content settings. You can also style every aspect of this content in the module Design settings and even apply custom CSS to this text in the module Advanced settings. IT'S BUILT FOR SAAS Flexible Embedding Flat Rate Pricing Client Support COMPANY Management About Us PRODUCT Reports Dashboards Request Demo INTEGRATION Application Integration Data Integration Customization & Extenstion BUYER'S GUIDE Build or Buy? Assessing Product Fit Deployment Options CONTENT LIBRARY Customer Stories Whitepapers & Ebooks Brochures & Infographics Gallery Webinars Videos Podcast Blog Support Careers Contact Us Privacy (203) – 225 – 0876 sales@exagobi.com * Follow * Follow * Follow * * * Share This * Facebook * Twitter * LinkedIn ╳ Generic filters Hidden label Exact matches only Hidden label Hidden label Hidden label More results… Generic filters Hidden label Exact matches only Hidden label Hidden label Hidden label More results... Generic filters Hidden label Exact matches only Hidden label Hidden label Hidden label More results… Generic filters Hidden label Exact matches only Hidden label Hidden label Hidden label More results… Generic filters Hidden label Exact matches only Hidden label Hidden label Hidden label More results…