{"id":1686,"date":"2021-12-30T17:29:27","date_gmt":"2021-12-30T17:29:27","guid":{"rendered":"https:\/\/sellingsherpa.com\/?p=1686"},"modified":"2022-04-09T02:31:05","modified_gmt":"2022-04-09T02:31:05","slug":"pipeline-coverage-treasure-or-trash","status":"publish","type":"post","link":"https:\/\/sellingsherpa.com\/index.php\/2021\/12\/30\/pipeline-coverage-treasure-or-trash\/","title":{"rendered":"Pipeline Coverage: Forecasting Treasure or Trash?"},"content":{"rendered":"<div class=\"nolwrap\">\n<p>I&#8217;ve always <em>felt<\/em> that pipeline coverage is a lazy and inaccurate metric for forecasting.  It made my usually well-tuned mathematical spidey sense tingle&#8230; and not in a good way.  My concern was that pipeline coverage would vary wildly during the quarter such that one would actually need different target coverage ratios at different points in time. Moreover, a decent amount of business gets created and closed during the quarter &#8211; even in Enterprise. However, I&#8217;d never properly done the math.<\/p>\n\n\n\n<p>Recall that pipeline coverage is defined as follows:<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=pipeline+%5Cthinspace+coverage+%3D+%5Cfrac%7Bopen+%5Cthinspace+pipeline++%5Cthinspace+with++%5Cthinspace+close++%5Cthinspace+dates++%5Cthinspace+in++%5Cthinspace+qtr%7D%7Bbookings+%5Cthinspace+target+-+bookings+%5Cthinspace+already+%5Cthinspace+closed+%5Cthinspace+in+%5Cthinspace+qtr%7D+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"pipeline &#92;thinspace coverage = &#92;frac{open &#92;thinspace pipeline  &#92;thinspace with  &#92;thinspace close  &#92;thinspace dates  &#92;thinspace in  &#92;thinspace qtr}{bookings &#92;thinspace target - bookings &#92;thinspace already &#92;thinspace closed &#92;thinspace in &#92;thinspace qtr} \" class=\"latex\" \/><\/p>\n\n\n\n<p>The general rule of thumb is that pipeline coverage should be <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Cfrac%7B1%7D%7Bwin+%5Cthinspace+rate%7D+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"&#92;frac{1}{win &#92;thinspace rate} \" class=\"latex\" \/>. So, with a win rate of 33% you&#8217;d want a 3x coverage ratio. If one&#8217;s win rate were 20%, then 5x. In fact, this range of 3x to 5x is pretty common. <\/p>\n\n\n\n<p>As I mentioned, one of the things that has bothered me about pipeline coverage is that a decent amount quarterly bookings come from deals that don&#8217;t even exist in CRM at a given point in time.  While that could be because reps are &#8216;hiding&#8217; deals, it happens naturally for deals with shorter sales cycles such as most SMB deals or even incremental upgrades in Enterprise.  But, it struck me (I assume I&#8217;m not the first one to think of this) that one can adjust the pipeline coverage goal formula as follows:<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=target+%5Cthinspace+coverage%3D%5Cfrac%7B1-%28create+%5Cthinspace+%5C%26+%5Cthinspace+close+%5Cthinspace+%5C%25%29%7D%7Bwin+%5Cthinspace+rate%7D+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"target &#92;thinspace coverage=&#92;frac{1-(create &#92;thinspace &#92;&amp; &#92;thinspace close &#92;thinspace &#92;%)}{win &#92;thinspace rate} \" class=\"latex\" \/><\/p>\n\n\n\n<p>By way of example, imagine the win rate for deals in the pipeline at the start of any given quarter were 20% and 30% of bookings have been created &amp; closed in any given quarter.  Then, the target pipeline coverage ratio would be:<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=target+%5Cthinspace+coverage%3D%5Cfrac%7B1-0.3%7D%7B0.2%7D%3D%5Cfrac%7B0.7%7D%7B0.2%7D%3D3.5x++&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"target &#92;thinspace coverage=&#92;frac{1-0.3}{0.2}=&#92;frac{0.7}{0.2}=3.5x  \" class=\"latex\" \/>  <\/p>\n\n\n\n<p>That is all well and good for the start of quarter pipeline coverage target. But, does the target need to vary as the quarter progresses in order to forecast accurately?<\/p>\n\n\n\n<p>To get to that answer, I found it helpful to make the following simplifying assumptions:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>The open pipeline of deals with close dates in the quarter only contains deals that existed on Day 1 of the quarter.  While this is more likely to be true for Enterprise new business, we are still fine for upgrades across all segments and for SMB new business which are both accounted for in the create &amp; close percentage.<\/li><li>Create &amp; close bookings occur evenly throughout the quarter. In other words, 1\/90th of deals created &amp; closed get booked on any given day.  I&#8217;ve looked at this in multiple businesses and it is a fairly decent assumption. <\/li><li>Pipeline is closed won or lost evenly throughout the quarter.  Everyone knows that deals are backend loaded. However, we are still fine.  Imagine an extreme case where 100% of the pipeline closes one way or the other on the last day of the quarter. In that case, the coverage ratio would be unchanging and accurate the whole time.<\/li><\/ul>\n\n\n\n<p>With those assumptions, target bookings of $100, a 20% win rate, and a 30% create &amp; close rate, we can actually look at what happens over time.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"663\" data-attachment-id=\"1703\" data-permalink=\"https:\/\/sellingsherpa.com\/index.php\/2021\/12\/30\/pipeline-coverage-treasure-or-trash\/bookings-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/bookings-1.jpg?fit=2342%2C1517&amp;ssl=1\" data-orig-size=\"2342,1517\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"bookings-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/bookings-1.jpg?fit=1024%2C663&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/bookings-1.jpg?resize=1024%2C663&#038;ssl=1\" alt=\"\" class=\"wp-image-1703\" srcset=\"https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/bookings-1.jpg?resize=1024%2C663&amp;ssl=1 1024w, https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/bookings-1.jpg?resize=300%2C194&amp;ssl=1 300w, https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/bookings-1.jpg?resize=768%2C497&amp;ssl=1 768w, https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/bookings-1.jpg?resize=1536%2C995&amp;ssl=1 1536w, https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/bookings-1.jpg?resize=2048%2C1327&amp;ssl=1 2048w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p>Using this data, we discover that pipeline coverage does not vary over time!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"615\" data-attachment-id=\"1702\" data-permalink=\"https:\/\/sellingsherpa.com\/index.php\/2021\/12\/30\/pipeline-coverage-treasure-or-trash\/pipeline-coverage\/\" data-orig-file=\"https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/pipeline-coverage.jpg?fit=1653%2C993&amp;ssl=1\" data-orig-size=\"1653,993\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"pipeline-coverage\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/pipeline-coverage.jpg?fit=1024%2C615&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/pipeline-coverage.jpg?resize=1024%2C615&#038;ssl=1\" alt=\"\" class=\"wp-image-1702\" srcset=\"https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/pipeline-coverage.jpg?resize=1024%2C615&amp;ssl=1 1024w, https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/pipeline-coverage.jpg?resize=300%2C180&amp;ssl=1 300w, https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/pipeline-coverage.jpg?resize=768%2C461&amp;ssl=1 768w, https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/pipeline-coverage.jpg?resize=1536%2C923&amp;ssl=1 1536w, https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/pipeline-coverage.jpg?w=1653&amp;ssl=1 1653w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Advanced Version<\/h2>\n\n\n\n<p>If you are still with me, let&#8217;s take a moment to derive an even more advanced version of the target pipeline coverage ratio. We have the following variables:<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=b+%3D+bookings+%5Cthinspace+target+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"b = bookings &#92;thinspace target \" class=\"latex\" \/><br><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=w+%3D+win+%5Cthinspace+rate%3D%5Cfrac%7B%5C%23+%5Cthinspace+deals+%5Cthinspace+won%7D%7B%28%5C%23+%5Cthinspace+deals+%5Cthinspace+won%2B%5C%23+%5Cthinspace+deals+%5Cthinspace+lost%29%7D+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"w = win &#92;thinspace rate=&#92;frac{&#92;# &#92;thinspace deals &#92;thinspace won}{(&#92;# &#92;thinspace deals &#92;thinspace won+&#92;# &#92;thinspace deals &#92;thinspace lost)} \" class=\"latex\" \/><br><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=r+%3D+pipeline+%5Cthinspace+coverage+%5Cthinspace+ratio+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"r = pipeline &#92;thinspace coverage &#92;thinspace ratio \" class=\"latex\" \/><br><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=c+%3D+bookings+%5Cthinspace+created+%5Cthinspace+and+%5Cthinspace+closed+%5Cthinspace+during+%5Cthinspace+the+%5Cthinspace+period+%5Cthinspace+as+%5Cthinspace+a+%5Cthinspace+%5C%25+%5Cthinspace+of+%5Cthinspace+bookings+%5Cthinspace+target+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"c = bookings &#92;thinspace created &#92;thinspace and &#92;thinspace closed &#92;thinspace during &#92;thinspace the &#92;thinspace period &#92;thinspace as &#92;thinspace a &#92;thinspace &#92;% &#92;thinspace of &#92;thinspace bookings &#92;thinspace target \" class=\"latex\" \/><br><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=s+%3D+%5C%25+%5Cthinspace+of+%5Cthinspace+deals+%5Cthinspace+that+%5Cthinspace+slip+%5Cthinspace+out+%5Cthinspace+of+%5Cthinspace+the+%5Cthinspace+period+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"s = &#92;% &#92;thinspace of &#92;thinspace deals &#92;thinspace that &#92;thinspace slip &#92;thinspace out &#92;thinspace of &#92;thinspace the &#92;thinspace period \" class=\"latex\" \/><br><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=p+%3D+pipeline+%5Cthinspace+at+%5Cthinspace+start+%5Cthinspace+of+%5Cthinspace+quarter+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"p = pipeline &#92;thinspace at &#92;thinspace start &#92;thinspace of &#92;thinspace quarter \" class=\"latex\" \/><\/p>\n\n\n\n<p>Assuming actual bookings hit the target (<em>b<\/em>), the following holds true: <\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=b+%3D+w%2A%5Bp%2A%281-s%29%5D+%2B+c%2Ab+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"b = w*[p*(1-s)] + c*b \" class=\"latex\" \/><\/p>\n\n\n\n<p>The term <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=p%2A%281-s%29+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"p*(1-s) \" class=\"latex\" \/> requires some explanation.  The entire pipeline includes business that was closed as well as business that will ultimately slip in to future periods. But, win rate (<em>w<\/em>) only applies to business that was <em>closed<\/em>, won or lost, and not the portion that slips.  Hence, we need to adjust for the slippage (aka push) factor.<\/p>\n\n\n\n<p>Here comes the next trick.  If we get the pipeline coverage ratio spot-on, then it will have been the case that <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=b%3Dp%2Fr++&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"b=p\/r  \" class=\"latex\" \/>.  Substituting this in the the equation above, we get:<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Cfrac%7Bp%7D%7Br%7D+%3D+w%2A%5Bp%2A%281-s%29%5D+%2B+c%2A%5Cfrac%7Bp%7D%7Br%7D+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"&#92;frac{p}{r} = w*[p*(1-s)] + c*&#92;frac{p}{r} \" class=\"latex\" \/><\/p>\n\n\n\n<p>Finally, we solve for <em>r<\/em>:<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Cfrac%7B1%7D%7Br%7D+%3D+w%2A%5B%281-s%29%5D+%2B+%5Cfrac%7Bc%7D%7Br%7D+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"&#92;frac{1}{r} = w*[(1-s)] + &#92;frac{c}{r} \" class=\"latex\" \/><br><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=1+%3D+r%2Aw%2A%5B%281-s%29%5D+%2B+c+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"1 = r*w*[(1-s)] + c \" class=\"latex\" \/><br><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%281-c%29+%3D+r%2Aw%2A%5B%281-s%29%5D+&#038;bg=ffffff&#038;fg=000&#038;s=1&#038;c=20201002\" alt=\"(1-c) = r*w*[(1-s)] \" class=\"latex\" \/><br><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Cmathbf%7Br+%3D+%5Cfrac%7B1-c%7D%7Bw%2A%281-s%29%7D%7D+&#038;bg=ffffff&#038;fg=000&#038;s=2&#038;c=20201002\" alt=\"&#92;mathbf{r = &#92;frac{1-c}{w*(1-s)}} \" class=\"latex\" \/><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bottom Line<\/h2>\n\n\n\n<p>As it turns out, pipeline coverage is reasonably stable and accurate <em>as long as<\/em> win rate is modeled based on opportunities open at the start of the period and <em>as long as<\/em> one has a good estimate for bookings created and closed in the period as a percent of target.  <\/p>\n\n\n\n<p>While I still prefer to forecast bookings using stage or forecast category weighting (or better, an AI\/ML model), I have to admit that pipeline coverage is more treasure than trash.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve always felt that pipeline coverage is a lazy and inaccurate metric for forecasting. It made my usually well-tuned mathematical spidey sense tingle&#8230; and not in a good way. My concern was that pipeline coverage would vary wildly during the quarter such that one would actually need different target coverage ratios at different points in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1693,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":false,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":{"0":"post-1686","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-uncategorized","8":"entry"},"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/sellingsherpa.com\/wp-content\/uploads\/2021\/12\/pipeline-1.jpg?fit=1200%2C700&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9j2qV-rc","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/sellingsherpa.com\/index.php\/wp-json\/wp\/v2\/posts\/1686","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sellingsherpa.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sellingsherpa.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sellingsherpa.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sellingsherpa.com\/index.php\/wp-json\/wp\/v2\/comments?post=1686"}],"version-history":[{"count":46,"href":"https:\/\/sellingsherpa.com\/index.php\/wp-json\/wp\/v2\/posts\/1686\/revisions"}],"predecessor-version":[{"id":1948,"href":"https:\/\/sellingsherpa.com\/index.php\/wp-json\/wp\/v2\/posts\/1686\/revisions\/1948"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sellingsherpa.com\/index.php\/wp-json\/wp\/v2\/media\/1693"}],"wp:attachment":[{"href":"https:\/\/sellingsherpa.com\/index.php\/wp-json\/wp\/v2\/media?parent=1686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sellingsherpa.com\/index.php\/wp-json\/wp\/v2\/categories?post=1686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sellingsherpa.com\/index.php\/wp-json\/wp\/v2\/tags?post=1686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}