What is SaaS Dunning? | DealHub AI
");vwo_$('head').append(_vwo_sel);return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("HEAD")}}, C_685337_91_1_2_1:{ fn:function(log,nonce=''){return (function(x) {var ctx=vwo_$(x),el; /*vwo_debug log("addElement","BODY"); vwo_debug*/; el=vwo_$("BODY"); el; el.each(function(t,e) {var el=vwo_$(e); ; !el.find('[vwo-op-1788253837034=""], [vwo-element-id="1788253837034"]').length && el.performOp(1788253837034).vwoElement({"position":"append","layout":"notification-bar","id":1787205946629,"widgetId":"notificationBar","html":"
The #1 Agentic Quote To Revenue Platform for Salesforce.
","sks":{"d":0},"sw":null,"rec":null,"hw":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.28192402","filters":[]}],"dslv":2}},"opId":1788253837034,"js":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.28110667","filters":[]}],"dslv":2}}})});;})("BODY")}}, C_685337_93_1_3_0:{ fn:function(log,nonce=''){return (function(x) { try{ var _vwo_sel = vwo_$(""); !vwo_$("head").find('#1786540972765').length && vwo_$('head').append(_vwo_sel);}catch(e) {VWO._.vAEH(e);} try{}catch(e) {VWO._.vAEH(e);} try{}catch(e) {VWO._.vAEH(e);} return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("head")}}, C_685337_93_1_4_0:{ fn:function(log,nonce=''){return (function(x) { try{ var _vwo_sel = vwo_$(""); !vwo_$("head").find('#1786540972766').length && vwo_$('head').append(_vwo_sel);}catch(e) {VWO._.vAEH(e);} try{}catch(e) {VWO._.vAEH(e);} try{}catch(e) {VWO._.vAEH(e);} return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("head")}}, ct_5015b6a159fc5ff37238b015fe5d4a35:{ fn:function(executeTrigger, vwo_$) { (function(){let e=JSON.parse(localStorage.getItem('vwo_w_1787205946629')),t=null,l=null;e&&e.l_ts>0&&(t=(new Date).toISOString().slice(0,10),l=new Date(JSON.parse(e.l_ts)).toISOString().slice(0,10)),(t||l)&&t===l||executeTrigger()})() }}, ct_90d59e9398aefc27dc1aba5ec75ed860:{ fn:function(executeTrigger, vwo_$) { (function(){setTimeout((function(){var t=document.querySelector("[vwo-widget-id='1787205946629']");t&&function(){var t=window._vwo_handleMutations||function(t,e){e()},e=this,n="1787205946629",o=this.querySelector(".vwo-notification-bar").offsetHeight+"px",i="vwo-notification-bar-margin-"+n,c="vwo-margin-"+n;this.querySelector(".vwo-notification-bar__close-button").onclick=function(){t(this.parentNode,function(){this.parentNode&&this.parentNode.removeChild(this),d(),document.body.classList.remove(i),this.dispatchEvent(new Event("close_button_clicked"))}.bind(this))}.bind(this);var d=function(){var t=document.getElementById(c);t.parentNode.removeChild(t)};t(e,function(){var n=this,a=function(t){var e="."+i+" { margin-top: "+t+" !important}";document.getElementById(c)&&d();var n=document.createElement("style");n.type="text/css",n.id=c,n.appendChild(document.createTextNode(e)),document.head.appendChild(n)};a(o),document.body.classList.add(i),new ResizeObserver((function(){t(e,function(){a(this.querySelector(".vwo-notification-bar").offsetHeight+"px")}.bind(n))})).observe(document.querySelector(".vwo-notification-bar"))}.bind(this))}.bind(t)()})),setTimeout((function(){document.dispatchEvent(new Event('vwo_widget_added_1787205946629'))}))})() }}, ce6a8ee1fa28070_4_1:{ fn:function(executeTrigger, vwo_$) { (function() { var clear = function () { executeTrigger(); clearInterval(interval); } var interval = setInterval(function () { if (window.vwo_factors_company_details) { clear(); } }, 10); setTimeout(function () { clear(); }, 10000); } )() }}, js_9f966e309f333113b412b3c7cbaab7eb:{ fn:function() { return window.wingify_factors_company_details.segments.indexOf('HS CRM Companies') }}, ce89_4_1:{ fn:function(executeTrigger, vwo_$) { (function() { var clear = function () { executeTrigger(); clearInterval(interval); } var interval = setInterval(function () { if (window.vwo_factors_company_details) { clear(); } }, 10); setTimeout(function () { clear(); }, 10000); } )() }}, C_685337_93_1_2_0:{ fn:function(log,nonce=''){return (function(x) {;var _vwo_sel=vwo_$("");vwo_$('head').append(_vwo_sel);return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("HEAD")}}, GL_685337_64_post:{ fn:function(VWO_CURRENT_CAMPAIGN, VWO_CURRENT_VARIATION,nonce = ""){}}, GL_685337_64_pre:{ fn:function(VWO_CURRENT_CAMPAIGN, VWO_CURRENT_VARIATION,nonce = ""){try{ ;(function(){try{var findReactInternalInstanceKey=function(element){return Object.keys(element).find(function(n){return n.startsWith("__reactInternalInstance$")||n.startsWith("__reactFiber$")})},getFiberNode=function(DOMNode,reactInternalsKey){if(DOMNode&&reactInternalsKey)return DOMNode[reactInternalsKey]},updateFiberNode=function(node,fiber,reactInternalsKey){var nodeName=(nodeName=node.nodeName)&&nodeName.toLowerCase();fiber.stateNode=node,fiber.child=null,fiber.tag=node.nodeType===Node.ELEMENT_NODE?5:6,fiber.type&&(fiber.type=fiber.elementType="vwo-"+nodeName),fiber.alternate&&(fiber.alternate.stateNode=node),node[reactInternalsKey]=fiber},updatePropsNode=function(option,el){function vwoAttrTimeout(){var key=Object.keys(el).find(function(n){return n.startsWith("__reactProps$")})||"",endTime=Date.now();if(key&&el[key])switch(option.name){case"href":el[key].href=option.value;break;case"onClick":el[key].onClick&&delete el[key].onClick;break;case"onChange":el[key].onChange&&el[key].onChange({target:el})}key||3e3/gm,""),e.__vwoExpInnerHTML=n)});var node,reactInternalsKey=findReactInternalInstanceKey(this[0]);return reactInternalsKey&&n&&((node=document.createElement("div")).innerHTML=n),void 0===n?this[0]&&this[0].innerHTML:this.each(function(t,e){var isFirstChildReferred=!1,fiber=(reactInternalsKey&&node&&(isFirstChildReferred=1===e.childNodes.length&&1===node.childNodes.length),getFiberNode(isFirstChildReferred?e.firstChild:e,reactInternalsKey));e.innerHTML=n,fiber&&e&&updateFiberNode(isFirstChildReferred?e.firstChild:e,fiber,reactInternalsKey)})},vwo_$.fn.vwoReplaceWith=function(){if(this.length){var content=this[0].outerHTML;if(content)return vwo_$(this).replaceWith(content)}return this},vwo_$.fn.vwoAttr&&!window.originalVwoAttrBeforeReact&&(window.originalVwoAttrBeforeReact=vwo_$.fn.vwoAttr),vwo_$.fn.vwoAttr=function(){var newHref_1;return this.length&&1===arguments.length&&arguments[0].href&&(newHref_1=arguments[0].href,this.each(function(i,el){updatePropsNode({name:"onClick"},el),updatePropsNode({name:"href",value:newHref_1},el)})),originalVwoAttrBeforeReact.apply(this,[].slice.call(arguments))}}catch(e){console.info(e)}})();(function(){try{var getFiberNode=function(DOMNode,reactInternalsKey){if(DOMNode&&reactInternalsKey)return DOMNode[reactInternalsKey]};window.originalBeforeReact||(window.originalBeforeReact=vwo_$.fn.before),vwo_$.fn.before=function(i){try{if(!this.length)return this;var isInputANode=!1,reactInternalsKey=("object"==typeof i&&(isInputANode=!0),element=this[0],Object.keys(element).find(function(n){return n.startsWith("__reactInternalInstance$")||n.startsWith("__reactFiber$")}));if(reactInternalsKey){if(!i)return this;var nodeToBeInserted_1=i[0]||i;if(!nodeToBeInserted_1)return this;this.each(function(t,e){var _c,element,fiber=getFiberNode(e,reactInternalsKey);document.createElement("div");fiber&&isInputANode&&(fiber=(null==(fiber=getFiberNode(e,reactInternalsKey))?void 0:fiber.return)!==getFiberNode(e.parentNode,reactInternalsKey)||!(null!=(fiber=getFiberNode(e.parentNode,reactInternalsKey))&&fiber.stateNode),_c=(null==(_c=getFiberNode(nodeToBeInserted_1,reactInternalsKey))?void 0:_c.return)!==getFiberNode(nodeToBeInserted_1.parentNode,reactInternalsKey)||!(null!=(_c=getFiberNode(nodeToBeInserted_1.parentNode,reactInternalsKey))&&_c.stateNode),!!(element=e)&&Object.keys(element).some(function(n){return n.startsWith("__reactInternalInstance$")})&&(fiber||_c)||(nodeToBeInserted_1.previousElementSibling&&null!=(element=getFiberNode(nodeToBeInserted_1.previousElementSibling,reactInternalsKey))&&element.sibling&&(getFiberNode(nodeToBeInserted_1.previousElementSibling,reactInternalsKey).sibling=getFiberNode(nodeToBeInserted_1.nextElementSibling,reactInternalsKey)),(null==(fiber=nodeToBeInserted_1.parentNode)?void 0:fiber.firstChild)===nodeToBeInserted_1&&nodeToBeInserted_1.nextElementSibling&&null!=(_c=getFiberNode(nodeToBeInserted_1.parentNode,reactInternalsKey))&&_c.child&&(getFiberNode(nodeToBeInserted_1.parentNode,reactInternalsKey).child=getFiberNode(nodeToBeInserted_1.nextElementSibling,reactInternalsKey)),e.previousElementSibling&&null!=(element=getFiberNode(e.previousElementSibling,reactInternalsKey))&&element.sibling&&(getFiberNode(e.previousElementSibling,reactInternalsKey).sibling=getFiberNode(nodeToBeInserted_1,reactInternalsKey)),nodeToBeInserted_1&&null!=(fiber=getFiberNode(nodeToBeInserted_1,reactInternalsKey))&&fiber.sibling&&(getFiberNode(nodeToBeInserted_1,reactInternalsKey).sibling=getFiberNode(e,reactInternalsKey)),nodeToBeInserted_1&&null!=(_c=getFiberNode(nodeToBeInserted_1,reactInternalsKey))&&_c.return&&(getFiberNode(nodeToBeInserted_1,reactInternalsKey).return=getFiberNode(e.parentNode,reactInternalsKey)),e.parentNode.firstChild===e&&null!=(element=getFiberNode(e.parentNode,reactInternalsKey))&&element.child&&(getFiberNode(e.parentNode,reactInternalsKey).child=getFiberNode(nodeToBeInserted_1,reactInternalsKey)),nodeToBeInserted_1.previousElementSibling&&null!=(_c=null==(fiber=getFiberNode(nodeToBeInserted_1.previousElementSibling,reactInternalsKey))?void 0:fiber.alternate)&&_c.sibling&&(getFiberNode(nodeToBeInserted_1.previousElementSibling,reactInternalsKey).alternate.sibling=null==(element=getFiberNode(nodeToBeInserted_1.nextElementSibling,reactInternalsKey))?void 0:element.alternate),(null==(fiber=nodeToBeInserted_1.parentNode)?void 0:fiber.firstChild)===nodeToBeInserted_1&&nodeToBeInserted_1.nextElementSibling&&null!=(element=null==(_c=getFiberNode(nodeToBeInserted_1.parentNode,reactInternalsKey))?void 0:_c.alternate)&&element.child&&(getFiberNode(nodeToBeInserted_1.parentNode,reactInternalsKey).alternate.child=null==(fiber=getFiberNode(nodeToBeInserted_1.nextElementSibling,reactInternalsKey))?void 0:fiber.alternate),e.previousElementSibling&&null!=(element=null==(_c=getFiberNode(e.previousElementSibling,reactInternalsKey))?void 0:_c.alternate)&&element.sibling&&(getFiberNode(e.previousElementSibling,reactInternalsKey).alternate.sibling=null==(fiber=getFiberNode(nodeToBeInserted_1,reactInternalsKey))?void 0:fiber.alternate),nodeToBeInserted_1&&null!=(element=null==(_c=getFiberNode(nodeToBeInserted_1,reactInternalsKey))?void 0:_c.alternate)&&element.sibling&&(getFiberNode(nodeToBeInserted_1,reactInternalsKey).alternate.sibling=null==(fiber=getFiberNode(e,reactInternalsKey))?void 0:fiber.alternate),nodeToBeInserted_1&&null!=(element=null==(_c=getFiberNode(nodeToBeInserted_1,reactInternalsKey))?void 0:_c.alternate)&&element.return&&(getFiberNode(nodeToBeInserted_1,reactInternalsKey).alternate.return=null==(fiber=getFiberNode(e.parentNode,reactInternalsKey))?void 0:fiber.alternate),e.parentNode.firstChild===e&&null!=(element=null==(_c=getFiberNode(e.parentNode,reactInternalsKey))?void 0:_c.alternate)&&element.child&&(getFiberNode(e.parentNode,reactInternalsKey).alternate.child=null==(fiber=getFiberNode(nodeToBeInserted_1,reactInternalsKey))?void 0:fiber.alternate)))})}}catch(e){}var element;return originalBeforeReact.apply(this,[].slice.call(arguments))}}catch(e){console.info(e)}})();; var _vwoCurrentPageUrl = window.location.href; var matchRegex = VWO._.matchRegex;vwo_$('[vwo-widget-id]').remove();vwo_$('html').get(0).classList.forEach((cl)=>{var mpClass=cl.match(/(?:\s|^)(vwo_p_s_[0-9a-f]{32})(?:\s|$)/);mpClass && (['vwo_p_s_b2c79ad7dcf03ba266dc0885e1266675','vwo_p_s_532c28d5412dd75bf975fb951c740a30'].indexOf(mpClass[1])!=-1) && vwo_$('html').removeClass(mpClass[1]);});if(VWO._.allSettings.dataStore.plugins.UA.dt === 'desktop'){vwo_$('html').addClass('vwo_p_s_b2c79ad7dcf03ba266dc0885e1266675')} else if(VWO._.allSettings.dataStore.plugins.UA.dt === 'mobile'){vwo_$('html').addClass('vwo_p_s_532c28d5412dd75bf975fb951c740a30')} }catch(e){}}}, C_685337_91_1_2_2:{ fn:function(log,nonce=''){return (function(x) {var ctx=vwo_$(x),el; /*vwo_debug log("content",".vwo-notification-bar__wrapper > span:nth-of-type(1)"); vwo_debug*/; el=vwo_$(".vwo-notification-bar__wrapper > span:nth-of-type(1)"); el.replaceWith2(`See how at Dreamforce`); el=vwo_$(".vwo-notification-bar__wrapper > span:nth-of-type(1)"); el;})(".vwo-notification-bar__wrapper > span:nth-of-type(1)")}}, C_685337_91_1_3_0:{ fn:function(log,nonce=''){return (function(x) {;var _vwo_sel=vwo_$("");vwo_$('head').append(_vwo_sel);return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("HEAD")}}, C_685337_91_1_3_1:{ fn:function(log,nonce=''){return (function(x) {var ctx=vwo_$(x),el; /*vwo_debug log("addElement","BODY"); vwo_debug*/; el=vwo_$("BODY"); el; el.each(function(t,e) {var el=vwo_$(e); ; !el.find('[vwo-op-1788253887310=""], [vwo-element-id="1788253887310"]').length && el.performOp(1788253887310).vwoElement({"position":"append","layout":"notification-bar","id":1787205946629,"widgetId":"notificationBar","html":"
The #1 Agentic Quote To Revenue Platform for Salesforce.
","sks":{"d":0},"sw":null,"rec":null,"hw":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.28192402","filters":[]}],"dslv":2}},"opId":1788253887310,"js":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.28110667","filters":[]}],"dslv":2}}})});;})("BODY")}}, C_685337_91_1_3_2:{ fn:function(log,nonce=''){return (function(x) {var ctx=vwo_$(x),el; /*vwo_debug log("content",".vwo-notification-bar__wrapper > span:nth-of-type(1)"); vwo_debug*/; el=vwo_$(".vwo-notification-bar__wrapper > span:nth-of-type(1)"); el.replaceWith2(`See how at Dreamforce`); el=vwo_$(".vwo-notification-bar__wrapper > span:nth-of-type(1)"); el;})(".vwo-notification-bar__wrapper > span:nth-of-type(1)")}}, C_685337_64_1_3_0:{ fn:function(log,nonce=''){return (function(x) {var ctx=vwo_$(x),el; /*vwo_debug log("addElement","BODY"); vwo_debug*/; el=vwo_$("html.vwo_p_s_b2c79ad7dcf03ba266dc0885e1266675 BODY"); el; el.each(function(t,e) {var el=vwo_$(e); ; !el.find('[vwo-op-1783498018844=""], [vwo-element-id="1783498018844"]').length && el.performOp(1783498018844).vwoElement({"position":"append","layout":"modal-banner-image","id":1773914149116,"widgetId":"modal","html":"
","sks":{"d":0,"v":0,"l_ts":0},"sw":{"p_dsl":"3"},"rec":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.26810592","filters":[]}],"dslv":2}},"hw":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.26810595","filters":[]}],"dslv":2}},"opId":1783498018844,"js":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.26810598","filters":[]}],"dslv":2}}})});; /*vwo_debug log("addElement","BODY"); vwo_debug*/; el=vwo_$("html.vwo_p_s_532c28d5412dd75bf975fb951c740a30 BODY"); el; !el.find('[vwo-op-1783498018851=""], [vwo-element-id="1783498018851"]').length && el.performOp(1783498018851).vwoElement({"position":"append","layout":"modal-banner-image","id":1774172634980,"widgetId":"modal","html":"
","sks":{"d":0,"v":0,"l_ts":0},"sw":{"p_dsl":"6"},"rec":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.26810601","filters":[]}],"dslv":2}},"hw":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.26810604","filters":[]}],"dslv":2}},"opId":1783498018851,"js":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.26810607","filters":[]}],"dslv":2}}});})("body")}}, C_685337_64_1_2_0:{ fn:function(log,nonce=''){return (function(x) {var ctx=vwo_$(x),el; /*vwo_debug log("addElement","BODY"); vwo_debug*/; el=vwo_$("html.vwo_p_s_b2c79ad7dcf03ba266dc0885e1266675 BODY"); el; el.each(function(t,e) {var el=vwo_$(e); ; !el.find('[vwo-op-1783498018676=""], [vwo-element-id="1783498018676"]').length && el.performOp(1783498018676).vwoElement({"position":"append","layout":"modal-banner-image","id":1773914149116,"widgetId":"modal","html":"
","sks":{"d":0,"v":0,"l_ts":0},"sw":{"p_dsl":"3"},"rec":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.26810592","filters":[]}],"dslv":2}},"hw":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.26810595","filters":[]}],"dslv":2}},"opId":1783498018676,"js":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.26810598","filters":[]}],"dslv":2}}})});; /*vwo_debug log("addElement","BODY"); vwo_debug*/; el=vwo_$("html.vwo_p_s_532c28d5412dd75bf975fb951c740a30 BODY"); el; el.each(function(t,e) {var el=vwo_$(e); ; !el.find('[vwo-op-1783498018684=""], [vwo-element-id="1783498018684"]').length && el.performOp(1783498018684).vwoElement({"position":"append","layout":"modal-banner-image","id":1774172634980,"widgetId":"modal","html":"
","sks":{"d":0,"v":0,"l_ts":0},"sw":{"p_dsl":"6"},"rec":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.26810601","filters":[]}],"dslv":2}},"hw":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.26810604","filters":[]}],"dslv":2}},"opId":1783498018684,"js":{"p_dsl":{"cnds":[{"id":1000,"event":"trigger.26810607","filters":[]}],"dslv":2}}})});;})("body")}}, GL_685337_91_pre:{ fn:function(VWO_CURRENT_CAMPAIGN, VWO_CURRENT_VARIATION,nonce = ""){try{ ;(function(){try{var findReactInternalInstanceKey=function(element){return Object.keys(element).find(function(n){return n.startsWith("__reactInternalInstance$")||n.startsWith("__reactFiber$")})},getFiberNode=function(DOMNode,reactInternalsKey){if(DOMNode&&reactInternalsKey)return DOMNode[reactInternalsKey]},updateFiberNode=function(node,fiber,reactInternalsKey){var nodeName=(nodeName=node.nodeName)&&nodeName.toLowerCase();fiber.stateNode=node,fiber.child=null,fiber.tag=node.nodeType===Node.ELEMENT_NODE?5:6,fiber.type&&(fiber.type=fiber.elementType="vwo-"+nodeName),fiber.alternate&&(fiber.alternate.stateNode=node),node[reactInternalsKey]=fiber},updatePropsNode=function(option,el){function vwoAttrTimeout(){var key=Object.keys(el).find(function(n){return n.startsWith("__reactProps$")})||"",endTime=Date.now();if(key&&el[key])switch(option.name){case"href":el[key].href=option.value;break;case"onClick":el[key].onClick&&delete el[key].onClick;break;case"onChange":el[key].onChange&&el[key].onChange({target:el})}key||3e3/gm,""),e.__vwoExpInnerHTML=n)});var node,reactInternalsKey=findReactInternalInstanceKey(this[0]);return reactInternalsKey&&n&&((node=document.createElement("div")).innerHTML=n),void 0===n?this[0]&&this[0].innerHTML:this.each(function(t,e){var isFirstChildReferred=!1,fiber=(reactInternalsKey&&node&&(isFirstChildReferred=1===e.childNodes.length&&1===node.childNodes.length),getFiberNode(isFirstChildReferred?e.firstChild:e,reactInternalsKey));e.innerHTML=n,fiber&&e&&updateFiberNode(isFirstChildReferred?e.firstChild:e,fiber,reactInternalsKey)})},vwo_$.fn.vwoReplaceWith=function(){if(this.length){var content=this[0].outerHTML;if(content)return vwo_$(this).replaceWith(content)}return this},vwo_$.fn.vwoAttr&&!window.originalVwoAttrBeforeReact&&(window.originalVwoAttrBeforeReact=vwo_$.fn.vwoAttr),vwo_$.fn.vwoAttr=function(){var newHref_1;return this.length&&1===arguments.length&&arguments[0].href&&(newHref_1=arguments[0].href,this.each(function(i,el){updatePropsNode({name:"onClick"},el),updatePropsNode({name:"href",value:newHref_1},el)})),originalVwoAttrBeforeReact.apply(this,[].slice.call(arguments))}}catch(e){console.info(e)}})();(function(){try{var getFiberNode=function(DOMNode,reactInternalsKey){if(DOMNode&&reactInternalsKey)return DOMNode[reactInternalsKey]};window.originalBeforeReact||(window.originalBeforeReact=vwo_$.fn.before),vwo_$.fn.before=function(i){try{if(!this.length)return this;var isInputANode=!1,reactInternalsKey=("object"==typeof i&&(isInputANode=!0),element=this[0],Object.keys(element).find(function(n){return n.startsWith("__reactInternalInstance$")||n.startsWith("__reactFiber$")}));if(reactInternalsKey){if(!i)return this;var nodeToBeInserted_1=i[0]||i;if(!nodeToBeInserted_1)return this;this.each(function(t,e){var _c,element,fiber=getFiberNode(e,reactInternalsKey);document.createElement("div");fiber&&isInputANode&&(fiber=(null==(fiber=getFiberNode(e,reactInternalsKey))?void 0:fiber.return)!==getFiberNode(e.parentNode,reactInternalsKey)||!(null!=(fiber=getFiberNode(e.parentNode,reactInternalsKey))&&fiber.stateNode),_c=(null==(_c=getFiberNode(nodeToBeInserted_1,reactInternalsKey))?void 0:_c.return)!==getFiberNode(nodeToBeInserted_1.parentNode,reactInternalsKey)||!(null!=(_c=getFiberNode(nodeToBeInserted_1.parentNode,reactInternalsKey))&&_c.stateNode),!!(element=e)&&Object.keys(element).some(function(n){return n.startsWith("__reactInternalInstance$")})&&(fiber||_c)||(nodeToBeInserted_1.previousElementSibling&&null!=(element=getFiberNode(nodeToBeInserted_1.previousElementSibling,reactInternalsKey))&&element.sibling&&(getFiberNode(nodeToBeInserted_1.previousElementSibling,reactInternalsKey).sibling=getFiberNode(nodeToBeInserted_1.nextElementSibling,reactInternalsKey)),(null==(fiber=nodeToBeInserted_1.parentNode)?void 0:fiber.firstChild)===nodeToBeInserted_1&&nodeToBeInserted_1.nextElementSibling&&null!=(_c=getFiberNode(nodeToBeInserted_1.parentNode,reactInternalsKey))&&_c.child&&(getFiberNode(nodeToBeInserted_1.parentNode,reactInternalsKey).child=getFiberNode(nodeToBeInserted_1.nextElementSibling,reactInternalsKey)),e.previousElementSibling&&null!=(element=getFiberNode(e.previousElementSibling,reactInternalsKey))&&element.sibling&&(getFiberNode(e.previousElementSibling,reactInternalsKey).sibling=getFiberNode(nodeToBeInserted_1,reactInternalsKey)),nodeToBeInserted_1&&null!=(fiber=getFiberNode(nodeToBeInserted_1,reactInternalsKey))&&fiber.sibling&&(getFiberNode(nodeToBeInserted_1,reactInternalsKey).sibling=getFiberNode(e,reactInternalsKey)),nodeToBeInserted_1&&null!=(_c=getFiberNode(nodeToBeInserted_1,reactInternalsKey))&&_c.return&&(getFiberNode(nodeToBeInserted_1,reactInternalsKey).return=getFiberNode(e.parentNode,reactInternalsKey)),e.parentNode.firstChild===e&&null!=(element=getFiberNode(e.parentNode,reactInternalsKey))&&element.child&&(getFiberNode(e.parentNode,reactInternalsKey).child=getFiberNode(nodeToBeInserted_1,reactInternalsKey)),nodeToBeInserted_1.previousElementSibling&&null!=(_c=null==(fiber=getFiberNode(nodeToBeInserted_1.previousElementSibling,reactInternalsKey))?void 0:fiber.alternate)&&_c.sibling&&(getFiberNode(nodeToBeInserted_1.previousElementSibling,reactInternalsKey).alternate.sibling=null==(element=getFiberNode(nodeToBeInserted_1.nextElementSibling,reactInternalsKey))?void 0:element.alternate),(null==(fiber=nodeToBeInserted_1.parentNode)?void 0:fiber.firstChild)===nodeToBeInserted_1&&nodeToBeInserted_1.nextElementSibling&&null!=(element=null==(_c=getFiberNode(nodeToBeInserted_1.parentNode,reactInternalsKey))?void 0:_c.alternate)&&element.child&&(getFiberNode(nodeToBeInserted_1.parentNode,reactInternalsKey).alternate.child=null==(fiber=getFiberNode(nodeToBeInserted_1.nextElementSibling,reactInternalsKey))?void 0:fiber.alternate),e.previousElementSibling&&null!=(element=null==(_c=getFiberNode(e.previousElementSibling,reactInternalsKey))?void 0:_c.alternate)&&element.sibling&&(getFiberNode(e.previousElementSibling,reactInternalsKey).alternate.sibling=null==(fiber=getFiberNode(nodeToBeInserted_1,reactInternalsKey))?void 0:fiber.alternate),nodeToBeInserted_1&&null!=(element=null==(_c=getFiberNode(nodeToBeInserted_1,reactInternalsKey))?void 0:_c.alternate)&&element.sibling&&(getFiberNode(nodeToBeInserted_1,reactInternalsKey).alternate.sibling=null==(fiber=getFiberNode(e,reactInternalsKey))?void 0:fiber.alternate),nodeToBeInserted_1&&null!=(element=null==(_c=getFiberNode(nodeToBeInserted_1,reactInternalsKey))?void 0:_c.alternate)&&element.return&&(getFiberNode(nodeToBeInserted_1,reactInternalsKey).alternate.return=null==(fiber=getFiberNode(e.parentNode,reactInternalsKey))?void 0:fiber.alternate),e.parentNode.firstChild===e&&null!=(element=null==(_c=getFiberNode(e.parentNode,reactInternalsKey))?void 0:_c.alternate)&&element.child&&(getFiberNode(e.parentNode,reactInternalsKey).alternate.child=null==(fiber=getFiberNode(nodeToBeInserted_1,reactInternalsKey))?void 0:fiber.alternate)))})}}catch(e){}var element;return originalBeforeReact.apply(this,[].slice.call(arguments))}}catch(e){console.info(e)}})(); }catch(e){}}}, C_685337_89_1_2_2:{ fn:function(log,nonce=''){return (function(x) {var ctx=vwo_$(x),el; /*vwo_debug log("content",".vwo-notification-bar__wrapper > span:nth-of-type(1)"); vwo_debug*/; el=vwo_$(".vwo-notification-bar__wrapper > span:nth-of-type(1)"); el.replaceWith2(`Come see it at UNBOUND`); el=vwo_$(".vwo-notification-bar__wrapper > span:nth-of-type(1)"); el;})(".vwo-notification-bar__wrapper > span:nth-of-type(1)")}}, GL_685337_91_post:{ fn:function(VWO_CURRENT_CAMPAIGN, VWO_CURRENT_VARIATION,nonce = ""){}}, C_685337_89_1_2_0:{ fn:function(log,nonce=''){return (function(x) {;var _vwo_sel=vwo_$("");vwo_$('head').append(_vwo_sel);return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("HEAD")}}},rules:[{"triggers":["27711029"],"tags":[{"id":"metric","data":{"type":"m","campaigns":[{"c":93,"g":8}]},"metricId":2884109}]},{"triggers":["27711032"],"tags":[{"id":"metric","data":{"type":"m","campaigns":[{"c":93,"g":9}]},"metricId":2884112}]},{"triggers":["27711035"],"tags":[{"id":"metric","data":{"type":"m","campaigns":[{"c":93,"g":10}]},"metricId":2884115}]},{"triggers":["27755807"],"tags":[{"id":"metric","data":{"type":"m","campaigns":[{"c":93,"g":11}]},"metricId":2892989}]},{"triggers":["27793001"],"tags":[{"id":"metric","data":{"type":"m","campaigns":[{"c":93,"g":12}]},"metricId":2900681}]},{"triggers":["27617489"],"tags":[{"data":{"priority":1,"samplingRate":100},"id":"sampleVisitor"}]},{"triggers":["27076443"],"tags":[{"data":{"priority":2,"samplingRate":0},"id":"sampleVisitor"}]},{"triggers":["28110706"],"tags":[{"id":"metric","data":{"type":"m","campaigns":[{"c":89,"g":5}]},"metricId":2946367}]},{"triggers":["28110691","28110697","28183288"],"tags":[{"data":"campaigns.89","priority":4,"id":"runCampaign"}]},{"triggers":["28110685"],"tags":[{"id":"metric","data":{"type":"m","campaigns":[{"c":91,"g":5}]},"metricId":2946496}]},{"triggers":["28192405","28192411","28337389"],"tags":[{"data":"campaigns.91","priority":4,"id":"runCampaign"}]},{"triggers":["28110682"],"tags":[{"id":"metric","data":{"type":"m","campaigns":[{"c":91,"g":4}]},"metricId":2946118}]},{"triggers":["28112473"],"tags":[{"id":"metric","data":{"type":"m","campaigns":[{"c":89,"g":6}]},"metricId":2946484}]},{"triggers":["26810610"],"tags":[{"data":"campaigns.64","priority":4,"id":"runCampaign"}]},{"triggers":["26810613"],"tags":[{"id":"metric","data":{"type":"g","campaigns":[{"c":64,"g":11}]},"metricId":0}]},{"triggers":["26810616"],"tags":[{"id":"metric","data":{"type":"g","campaigns":[{"c":64,"g":12}]},"metricId":0}]},{"triggers":["26810619"],"tags":[{"id":"metric","data":{"type":"g","campaigns":[{"c":64,"g":13}]},"metricId":0}]},{"triggers":["26810622"],"tags":[{"id":"metric","data":{"type":"g","campaigns":[{"c":64,"g":14}]},"metricId":0}]},{"triggers":["28303708"],"tags":[{"data":"campaigns.93","priority":4,"id":"runCampaign"}]},{"triggers":["27711026"],"tags":[{"id":"metric","data":{"type":"m","campaigns":[{"c":93,"g":7}]},"metricId":2884106}]},{"triggers":["9"],"tags":[{"priority":2,"id":"visibilityService"}]},{"triggers":["2"],"tags":[{"id":"runTestCampaign"}]},{"triggers":["75"],"tags":[{"id":"urlChange"}]},{"triggers":["5"],"tags":[{"id":"checkEnvironment"}]},{"triggers":["11"],"tags":[{"priority":3,"id":"revaluateHiding"}]},{"triggers":["8"],"tags":[{"priority":3,"id":"prePostMutation"},{"priority":2,"id":"groupCampaigns"}]}],pages:{"ec":[{"3657090":{"inc":["o",["url","urlReg","(?i).*"]]}},{"3769780":{"exc":["o",["url","urlReg","(?i).*\\/lp\\/.*"]],"inc":["o",["url","urlReg","(?i).*https?\:\\/\\/(w{3}\.)?dealhub\.io.*"]]}},{"3769978":{"inc":["o",["url","urlReg","(?i)^https?\:\\/\\/(w{3}\.)?dealhub\.io\\/events\\/hubspot\-unbound\-2026\\/?(?:[\?#].*)?$"]]}},{"3777709":{"inc":["o",["url","urlReg","(?i)^https?\:\\/\\/(w{3}\.)?dealhub\.io\\/events\\/dreamforce\-2026\\/?(?:[\?#].*)?$"]]}},{"3657093":{"exc":["o",["url","urlReg","(?i).*dealhub\.io\\/(lp\\/.*|alternative\\/.*|see-dealhub-in-action\\/.*|thank-you|alternative-|resource-center\\/videos\\/deel-case-study\\/|dealhub-ai-readiness\\/|author\\/|enterprise-subscription-agreement-msa\\/|resource-center\\/videos\\/intuit-case-study\\/|careers\\/|resource-center\\/|troubleshooting-chrome-login-failure\\/|subskribe-acquired-by-dealhub\\/)"]],"inc":["o",["url","urlReg","(?i).*https?\:\\/\\/(w{3}\.)?dealhub\.io.*"]]}},{"3785935":{"exc":["o",["url","urlReg","(?i).*https?\:\\/\\/(w{3}\.)?dealhub\.io\\/lp\\/.*"]],"inc":["o",["url","urlReg","(?i)^https?\:\\/\\/(w{3}\.)?dealhub\.io.*"]]}},{"3682785":{"inc":["o",["url","urlReg","(?i)^.*$"]]}}]},pagesEval:{"ec":[3657090,3769780,3657093,3785935,3682785]},stags:{},domPath:{}}})();if(typeof window!=="undefined"&&window._vwoFlow==="link-survey"){window.VWO._.rCS()} ;if(typeof heatmapDevice!=="undefined"&&heatmapDevice&&VWO._.allSettings&&VWO._.allSettings.dataStore.plugins.UA){VWO._.allSettings.dataStore.plugins.UA.dt=heatmapDevice};var commonWrapper=function(argument){if(!argument){argument={integrationName:"",valuesGetter:function(){return{}},valuesSetter:function(){},verifyData:function(){return{}}}}var isWingifyEnabled=false;var sendMonitoringEvent=function(type,elapsedMs,extraPayload){try{if(argument.integrationName!=="factor"){return}var eventName="vwo_debugLogs";var eventPayload={intName:argument.integrationName||"",type:type,msg:elapsedMs,url:window.location.href};if(extraPayload&&typeof extraPayload==="object"){for(var key in extraPayload){if(Object.prototype.hasOwnProperty.call(extraPayload,key)){eventPayload[key]=extraPayload[key]}}}if(window.VWO&&window.VWO._&&typeof window.VWO._.event==="function"){window.VWO._.event(eventName,eventPayload,{enableLogs:1})}}catch(e){}};var getVisitorUuid=function(){if(window._vwo_acc_id>=1037725){return window.VWO&&window.VWO.get("visitor.id")}else{return window.VWO._&&window.VWO._.cookies&&window.VWO._.cookies.get("_vwo_uuid")}};var pollInterval=100;var timeout=6e4;return function(){sendMonitoringEvent("intCallTriggered",0);var accountIntegrationSettings={};var _interval=null;var startTime=performance.now();var hasSentTimingEvent=false;function waitForAnalyticsVariables(){try{accountIntegrationSettings=argument.valuesGetter();accountIntegrationSettings.visitorUuid=getVisitorUuid();accountIntegrationSettings.isWingifyEnabled=isWingifyEnabled}catch(error){accountIntegrationSettings=undefined}if(accountIntegrationSettings&&argument.verifyData(accountIntegrationSettings)){argument.valuesSetter(accountIntegrationSettings);if(!hasSentTimingEvent){hasSentTimingEvent=true;sendMonitoringEvent("intDataPushed",Math.round(performance.now()-startTime))}return 1}return 0}var currentTime=0;_interval=setInterval((function(){currentTime=currentTime||performance.now();var result=waitForAnalyticsVariables();var isTimeout=performance.now()-currentTime>=timeout;if(isTimeout&&!hasSentTimingEvent){hasSentTimingEvent=true;sendMonitoringEvent("intTimeout",Math.round(performance.now()-startTime),{timeout_ms:timeout})}if(result||isTimeout){clearInterval(_interval)}}),pollInterval)}}; commonWrapper({valuesGetter:function(){return{}},valuesSetter:function(data){var ga4_device_id="";if(typeof window.VWO._.cookies!=="undefined"){ga4_device_id=window.VWO._.cookies.get("_ga")||""}if(ga4_device_id){window.vwo_ga4_uuid=ga4_device_id.split(".").slice(-2).join(".");window.wingify_ga4_uuid=window.vwo_ga4_uuid}},verifyData:function(data){if(typeof window.VWO._.cookies!=="undefined"){return window.VWO._.cookies.get("_ga")||""}else{return false}}})(); var serverPushCommonWrapper=function(argument){var serverfiredCamp={};var INTEGRATION_EVENT="vwo_integrationData";var defaultArgument={partner:null,getExperimentList:function(){return[]},accountSettings:function(){return{}},getCampaignSettings:function(){return{}},getServerPushPayload:function(){return null}};argument=argument||{};for(var key in defaultArgument){if(!argument[key]){argument[key]=defaultArgument[key]}}return function(){window.VWO=window.VWO||[];function ensureVwoEvent(){window.VWO=window.VWO||[];window.VWO.event=window.VWO.event||function(){window.VWO.push(["event"].concat([].slice.call(arguments)))}}function getVisitorUuid(){if(window._vwo_acc_id>=1037725){return window.VWO&&window.VWO.get("visitor.id")}return window.VWO._&&window.VWO._.cookies&&window.VWO._.cookies.get("_vwo_uuid")}function isFirstVisit(repeated){return repeated!=="vS"&&repeated!=="vSS"}function triggerServerPush(cData){var expId=cData.expId;var variationId=cData.variationId;var visitorUuid=cData.visitorUuid;var connectS=cData.connectS;var repeated=cData.repeated;if(!isFirstVisit(repeated)){return}if(!connectS||connectS.isServerSidePush!==true){return}var experimentList=argument.getExperimentList();var cId=connectS.cId;var partner=argument.partner;if(!partner||typeof partner!=="string"||!partner.length){return}serverfiredCamp[expId]=serverfiredCamp[expId]||{};if(serverfiredCamp[expId][cId]){return}if(experimentList.indexOf(+expId)===-1){return}var timeout=6e4;var currentTime=0;var interval=setInterval((function(){window.serverExpList=window.serverExpList||{};window.serverExpList[partner]=window.serverExpList[partner]||{};window.serverExpList[partner][cId]=window.serverExpList[partner][cId]||[];if(window.serverExpList[partner][cId].indexOf(expId)!==-1){clearInterval(interval);return}currentTime=currentTime||performance.now();var campaign=window._vwo_exp&&window._vwo_exp[expId];if(!campaign||!campaign.comb_n||!campaign.comb_n[variationId]){return}var defaultPayload={campaignId:expId,variationId:variationId,partner:partner,campaignName:campaign.name,variationName:campaign.comb_n[variationId],connectorId:connectS.cId};var integrationPayload=argument.getServerPushPayload(connectS,{expId:expId,variationId:variationId,visitorUuid:visitorUuid});var payload=Object.assign({},defaultPayload,integrationPayload);if(payload&&payload.partnerId){ensureVwoEvent();window.VWO.event(INTEGRATION_EVENT,payload);serverfiredCamp[expId][cId]=variationId;window.serverExpList[partner][cId].push(expId);clearInterval(interval);return}if(performance.now()-currentTime>=timeout){clearInterval(interval)}}),100)}function callbackFn(data){if(!data){return}var repeated=data[0];var expId=data[1];var variationId=data[2];var visitorUuid=getVisitorUuid();var accountSettings=argument.accountSettings();var allCampaignSettings=argument.getCampaignSettings();var connectors=allCampaignSettings.connectors;if(typeof connectors==="undefined"||connectors===null){connectors=[accountSettings]}var pushSettings=allCampaignSettings.push||{};var campaignConnectors=pushSettings[expId]||[0];var connectCampSettings=campaignConnectors.map((function(id){var connector=connectors[id]||{};return Object.assign({},connector,{cId:id})}));if(expId&&variationId&&["VISUAL_AB","VISUAL","SPLIT_URL"].indexOf(_vwo_exp[expId].type)>-1){connectCampSettings.forEach((function(connectS){triggerServerPush({expId:expId,variationId:variationId,visitorUuid:visitorUuid,connectS:connectS,repeated:repeated})}))}}window.VWO.push(["onVariationApplied",callbackFn]);window.VWO.push(["onVariationShownSent",callbackFn])}}; var pushBasedCommonWrapper=function(argument){var firedCamp={};var defaultArgument={integrationName:"",getExperimentList:function(){return[]},accountSettings:function(){return{}},getCampaignSettings:function(){return{}},pushData:function(){return false},sendData:function(){return false}};argument=argument||{};for(var key in defaultArgument){if(!argument[key]){argument[key]=defaultArgument[key]}}return function(){window.VWO=window.VWO||[];var getVisitorUuid=function(){if(window._vwo_acc_id>=1037725){return window.VWO&&window.VWO.get("visitor.id")}else{return window.VWO._&&window.VWO._.cookies&&window.VWO._.cookies.get("_vwo_uuid")}};var sendDebugLogsOld=function(expId,variationId,errorType,user_type,data){try{var errorPayload={f:argument["integrationName"]||"",a:window._vwo_acc_id,url:window.location.href,exp:expId,v:variationId,vwo_uuid:getVisitorUuid(),user_type:user_type};if(errorType=="initIntegrationCallback"){errorPayload["log_type"]="initIntegrationCallback";errorPayload["data"]=JSON.stringify(data||"")}else if(errorType=="timeout"){errorPayload["timeout"]=true}if(window.VWO._.customError){window.VWO._.customError({msg:"integration debug",url:window.location.href,lineno:"",colno:"",source:JSON.stringify(errorPayload)})}}catch(e){window.VWO._.customError&&window.VWO._.customError({msg:"integration debug failed",url:"",lineno:"",colno:"",source:""})}};var sendDebugLogs=function(expId,variationId,errorType,user_type){var eventName="vwo_debugLogs";var eventPayload={};try{eventPayload={intName:argument["integrationName"]||"",varId:variationId,expId:expId,type:errorType,vwo_uuid:getVisitorUuid(),user_type:user_type};if(window.VWO._.event){window.VWO._.event(eventName,eventPayload,{enableLogs:1})}}catch(e){eventPayload={msg:"integrationevent log failed",url:window.location.href};window.VWO._.event&&window.VWO._.event(eventName,eventPayload)}};var getVariationDetails=function(exp,variation_id){if(!exp)return null;var isPersonalizeV2=exp.iType&&exp.iType.type==="TARGETING"&&exp.iType.v===2;if(isPersonalizeV2){var parts=String(variation_id).split(",");if(parts.length<2)return null;var targetId=String(parts[0]);var targetName=exp.comb_n[targetId];var varId=String(parts[1]);var variationName="";if(exp.sections&&exp.sections[1]&&exp.sections[1].variation_names){variationName=exp.sections[1].variation_names[varId]}return{variation_id:varId,variation_name:variationName||"",target_id:targetId||"",target_name:targetName||""}}var variationNameNormal="";if(exp.comb_n){variationNameNormal=exp.comb_n[variation_id]}return{variation_id:variation_id,variation_name:variationNameNormal||"",target_id:"",target_name:""}};var triggerConnector=function(cData){var expId=cData.expId,variationId=cData.variationId,visitorUuid=cData.visitorUuid,connectS=cData.connectS,repeated=cData.repeated;var experimentList=argument.getExperimentList();var cId=connectS.cId;var singleCall=connectS.singleCall||0;var debug=connectS.debug||0;var integrationName=argument["integrationName"]||"vwo";firedCamp[expId]=firedCamp[expId]||{};if(singleCall&&(repeated==="vS"||repeated==="vSS")||firedCamp[expId][cId]){return}if(debug){sendDebugLogs(expId,variationId,"intCallTriggered",repeated);sendDebugLogsOld(expId,variationId,"initIntegrationCallback",repeated)}if(experimentList.indexOf(+expId)!==-1){firedCamp[expId][cId]=variationId;var pollInterval=100;var currentTime=0;var timeout=6e4;var user_type=_vwo_exp[expId].exec?"vwo-retry":"vwo-new";var interval=setInterval((function(){window.expList=window.expList||{};window.expList[integrationName]=window.expList[integrationName]||{};window.expList[integrationName][cId]=window.expList[integrationName][cId]||[];if(window.expList[integrationName][cId].indexOf(expId)!==-1){clearInterval(interval);return}var isWingifyEnabled=false;connectS.isWingifyEnabled=isWingifyEnabled;var variationDetails=getVariationDetails(window._vwo_exp[expId],variationId);var wingifyData={eN:"wingify",isAbtastyPushFormat:window._vwo_exp[expId].isAbtastyPushFormat,eP:{cN:window._vwo_exp[expId].name,cI:expId,vN:variationDetails.variation_name,vI:variationDetails.variation_id,tN:variationDetails.target_name,tI:variationDetails.target_id,uI:visitorUuid||""}};currentTime=currentTime||performance.now();var pushData=argument.pushData(expId,variationId,visitorUuid,connectS);var sendData=argument.sendData(wingifyData,visitorUuid,connectS);var toClearInterval=pushData||sendData;if(debug&&toClearInterval){sendDebugLogsOld(expId,variationId,"",user_type);sendDebugLogs(expId,variationId,"intDataPushed",user_type)}var isTimeout=performance.now()-currentTime>=timeout;if(isTimeout&&debug){sendDebugLogsOld(expId,variationId,"timeout",user_type);sendDebugLogs(expId,variationId,"intTimeout",user_type)}if(toClearInterval||isTimeout){clearInterval(interval)}if(toClearInterval){window.expList[integrationName][cId].push(expId)}}),pollInterval||100)}};var callbackFn=function(data){if(!data)return;var expId=data[1],variationId=data[2],repeated=data[0];var visitorUuid=getVisitorUuid();var accountSettings=argument.accountSettings();var allCampaignSettings=argument.getCampaignSettings();var connectors=allCampaignSettings["connectors"];if(typeof connectors==="undefined"||connectors===null){connectors=[accountSettings]}var pushSettings=allCampaignSettings["push"]||{};var campaignConnectors=pushSettings[expId]||[0];var connectCampSettings=campaignConnectors.map(id=>({...connectors[id],cId:id}));if(expId&&variationId&&["VISUAL_AB","VISUAL","SPLIT_URL"].indexOf(_vwo_exp[expId].type)>-1){connectCampSettings.forEach(connectS=>{var cData={expId:expId,variationId:variationId,visitorUuid:visitorUuid,connectS:connectS,repeated:repeated};triggerConnector(cData)})}};window.VWO.push(["onVariationApplied",callbackFn]);window.VWO.push(["onVariationShownSent",callbackFn])}}; (function(){var VWOOmniTemp={};window.VWOOmni=window.VWOOmni||{};for(var key in VWOOmniTemp)Object.prototype.hasOwnProperty.call(VWOOmniTemp,key)&&(window.VWOOmni[key]=VWOOmniTemp[key]);commonWrapper({valuesGetter:function(){return {}},valuesSetter:function(data){var ga4_device_id="";if(typeof window.VWO._.cookies!=="undefined"){ga4_device_id=window.VWO._.cookies.get("_ga")||""}if(ga4_device_id){window.vwo_ga4_uuid=ga4_device_id.split(".").slice(-2).join(".");window.wingify_ga4_uuid=window.vwo_ga4_uuid}},verifyData:function(data){if(typeof window.VWO._.cookies!=="undefined"){return window.VWO._.cookies.get("_ga")||""}else{return false}}})(); pushBasedCommonWrapper({integrationName:"GA4",getExperimentList:function(){return [93,91,89,64]},getCampaignSettings:function(){return {"push":{"70":[36278],"71":[36278],"51":[36278],"61":[36278],"89":[36278],"91":[36278],"78":[36278],"79":[36278],"54":[36278],"56":[36278],"82":[36278],"40":[36278],"84":[36278],"58":[36278],"87":[36278],"88":[36278],"46":[36278],"52":[36278],"53":[36278],"92":[36278],"93":[36278],"62":[36278],"63":[36278],"57":[36278],"64":[36278],"55":[36278],"65":[36278],"48":[36278],"90":[36278],"68":[36278],"69":[36278]},"connectors":{}}},accountSettings:function(){var accountIntegrationSettings={"isSegment":true};if(accountIntegrationSettings["debugType"]=="ga4"&&accountIntegrationSettings["debug"]){accountIntegrationSettings["debug"]=1}else{accountIntegrationSettings["debug"]=0}return accountIntegrationSettings},sendData:function(wData,visitorUuid,config){var ga4Setup=config["setupVia"]||"gtag";if(!wData.isAbtastyPushFormat&&(!window.gtag||ga4Setup!="gtag")){return false}if(wData.isAbtastyPushFormat&&config["measurementId"]){window.dataLayer=window.dataLayer||[];if(!window.gtag){window.gtag=window.gtag||function(){window.dataLayer.push(arguments)}}var measurementId=config["measurementId"];window.gtag("config",measurementId);window.gtag("event","abtasty",{exp_variant_string:`ABT-${wData.eP.cI}-${wData.eP.vI}`,abtasty_campaign:`[${wData.eP.cI}] ${wData.eP.cN}`,abtasty_variation:`[${wData.eP.vI}] ${wData.eP.vN}`,send_to:measurementId});return true}else if(config["isWingifyEnabled"]===true){var wingifyMeasurementId=config["measurementId"];var params={exp_variant_string:"wingify-"+wData.eP.cI+"-"+wData.eP.vI};if(typeof wingifyMeasurementId!=="undefined"&&wingifyMeasurementId!==null&&wingifyMeasurementId!==""){window.gtag("config",wingifyMeasurementId);params["send_to"]=wingifyMeasurementId}window.gtag("event","experience_impression",params);return true}else{var vwoMeasurementId=config["measurementId"];var eventName="VWO";var eventParams={vwo_campaign_name:wData.eP.cN+":"+wData.eP.cI,vwo_variation_name:wData.eP.vN+":"+wData.eP.vI};var experienceImpressionParams={exp_variant_string:"VWO-"+wData.eP.cI+"-"+wData.eP.vI};if(wData.eP.tI){experienceImpressionParams.exp_variant_string+=","+wData.eP.tI}if(typeof vwoMeasurementId!=="undefined"&&vwoMeasurementId!==null&&vwoMeasurementId!==""){window.gtag("config",vwoMeasurementId);eventParams["send_to"]=vwoMeasurementId;experienceImpressionParams["send_to"]=vwoMeasurementId}window.gtag("event",eventName,eventParams);window.gtag("event","experience_impression",experienceImpressionParams);return true}}})();pushBasedCommonWrapper({integrationName:"GA4-GTM",getExperimentList:function(){return [93,91,89,64]},getCampaignSettings:function(){return {"push":{"70":[36278],"71":[36278],"51":[36278],"61":[36278],"89":[36278],"91":[36278],"78":[36278],"79":[36278],"54":[36278],"56":[36278],"82":[36278],"40":[36278],"84":[36278],"58":[36278],"87":[36278],"88":[36278],"46":[36278],"52":[36278],"53":[36278],"92":[36278],"93":[36278],"62":[36278],"63":[36278],"57":[36278],"64":[36278],"55":[36278],"65":[36278],"48":[36278],"90":[36278],"68":[36278],"69":[36278]},"connectors":{}}},accountSettings:function(){var accountIntegrationSettings={"isSegment":true};if(accountIntegrationSettings["debugType"]=="gtm"&&accountIntegrationSettings["debug"]){accountIntegrationSettings["debug"]=1}else{accountIntegrationSettings["debug"]=0}return accountIntegrationSettings},sendData:function(wData,visitorUuid,config){if(wData.isAbtastyPushFormat&&config["measurementId"]){return true}var ga4Setup=config["setupVia"]||"gtm";var dataVariable=config["dataVariable"]||"dataLayer";if(typeof window[dataVariable]!=="undefined"&&ga4Setup=="gtm"){if(config["isWingifyEnabled"]===true){var exp_variant_string="wingify-"+wData.eP.cI+"-"+wData.eP.vI;if(wData.eP.tI){exp_variant_string+="-"+wData.eP.tI}window[dataVariable].push({event:wData.eN,wingify_exp_variant_string:exp_variant_string});return true}else{var eventName="vwo-data-push-ga4";var vwo_exp_variant_string="VWO-"+wData.eP.cI+"-"+wData.eP.vI;if(wData.eP.tI){vwo_exp_variant_string+=","+wData.eP.tI}window[dataVariable].push({event:eventName,vwo_exp_variant_string:vwo_exp_variant_string});return true}}return false}})(); serverPushCommonWrapper({partner:"ga4",getExperimentList:function(){return [93,91,89,64]},accountSettings:function(){return {"isSegment":true}},getCampaignSettings:function(){return {"push":{"70":[36278],"71":[36278],"51":[36278],"61":[36278],"89":[36278],"91":[36278],"78":[36278],"79":[36278],"54":[36278],"56":[36278],"82":[36278],"40":[36278],"84":[36278],"58":[36278],"87":[36278],"88":[36278],"46":[36278],"52":[36278],"53":[36278],"92":[36278],"93":[36278],"62":[36278],"63":[36278],"57":[36278],"64":[36278],"55":[36278],"65":[36278],"48":[36278],"90":[36278],"68":[36278],"69":[36278]},"connectors":{}}},getServerPushPayload:function(config){try{let partnerId=null;if(window.gtag&&typeof window.gtag==="function"){window.gtag("get",config["measurementId"],"client_id",clientId=>{partnerId=clientId})}if(!partnerId){if(typeof window.VWO._.cookies!=="undefined"){const deviceId=window.VWO._.cookies.get("_ga")||"";if(deviceId&&typeof deviceId==="string"&&deviceId.length>0){partnerId=deviceId.split(".").slice(-2).join(".")}}}if(partnerId&&typeof partnerId==="string"&&partnerId.length>0){return{partnerId:String(partnerId)}}return null}catch(error){return null}}})(); commonWrapper({integrationName:"factor",valuesGetter:function(){return {"isSegment":true}},valuesSetter:function(){const parsedData=window.FactorsDataLayer.ip_derived_info||{};const segments=window.FactorsDataLayer.segments||[];const segmentNames=segments.map(segment=>segment&&segment.name).filter(Boolean);window.vwo_factors_company_details={...parsedData,segments:segmentNames};window.wingify_factors_company_details=window.vwo_factors_company_details},verifyData:function(){return!!(window.FactorsDataLayer&&window.FactorsDataLayer.ip_derived_info&&window.FactorsDataLayer.segments)}})(); ;})();(function(){window.VWO=window.VWO||[];var pollInterval=100;var _vis_data={};var intervalObj={};var analyticsTimerObj={};var experimentListObj={};window.VWO.push(["onVariationApplied",function(data){if(!data){return}var expId=data[1],variationId=data[2];if(expId&&variationId&&["VISUAL_AB","VISUAL","SPLIT_URL"].indexOf(window._vwo_exp[expId].type)>-1){}}])})();; ;var vD=VWO.data||{};VWO.data={content:{"fns":{"list":{"vn":1,"args":{"1":{}}}}},as:"dev.visualwebsiteoptimizer.com/eu01",dacdnUrl:"https://dev.visualwebsiteoptimizer.com",accountJSInfo:{"url":{},"collUrl":"https:\\/\\/dev.visualwebsiteoptimizer.com\\/eu01\\/","rp":90,"noSS":false,"ts":1788318995,"iqst":1788053257,"mrp":20,"pc":{"t":100,"a":100},"pvn":0,"tpc":{}}};for(var k in vD){VWO.data[k]=vD[k]};var gcpfb=function(a,loadFunc,status,err,success){function vwoErr() {_vwo_err&&_vwo_err({message:"Google_Cdn failing for " + a + ". Trying Fallback..",code:"cloudcdnerr",status:status});} if(a.indexOf("/cdn/")!==-1){loadFunc(a.replace("cdn/",""),err,success); vwoErr(); return true;} else if(a.indexOf("/dcdn/")!==-1&&a.indexOf("evad.js") !== -1){loadFunc(a.replace("dcdn/",""),err,success); vwoErr(); return true;}};window.VWO=window.VWO || [];window.VWO._= window.VWO._ || {};window.VWO._.gcpfb=gcpfb;;window._vwoCc = window._vwoCc || {}; if (typeof window._vwoCc.dAM === 'undefined') { window._vwoCc.dAM = 1; };var d={cookie:document.cookie,URL:document.URL,referrer:document.referrer};var w={VWO:{_:{domains:window.VWO._.domains}},_vwo_cdn:window._vwo_cdn,location:{href:window.location.href,search:window.location.search},_vwoCc:window._vwoCc};;window._vwo_cdn="cdn/";window._vwo_apm_debug_cdn="cdn/";window.VWO._.useCdn=true;window.vwo_eT="br";window._VWO=window._VWO||{};window._VWO.fSeg={};window._VWO.dcdnUrl="/dcdn/settings.js";;window.VWO.sTs=1788259302;window._VWO._vis_nc_lib=window.VWO._.domains.sv+window._vwo_cdn+"edrv/nc-f9ab3363bfe7af435e253936d600557b.br.js";var loadWorker=function(url){_vwo_code.load(url, { dSC: true, onloadCb: function(xhr,a){window._vwo_wt_l=true;if(xhr.status===200 ||xhr.status===304){var code="var window="+JSON.stringify(w)+",document="+JSON.stringify(d)+";window.document=document;"+xhr.responseText;var blob=new Blob([code||"throw new Error('code not found!');"],{type:"application/javascript"}),url=URL.createObjectURL(blob); var CoreWorker = window.VWO.WorkerRef || window.Worker; window.mainThread={webWorker:new CoreWorker(url)};window.vwoChannelFW=new MessageChannel();window.vwoChannelToW=new MessageChannel();window.mainThread.webWorker.postMessage({vwoChannelToW:vwoChannelToW.port1,vwoChannelFW:vwoChannelFW.port2},[vwoChannelToW.port1, vwoChannelFW.port2]);if(!window._vwo_mt_f)return window._vwo_wt_f=true;_vwo_code.addScript({text:window._vwo_mt_f});delete window._vwo_mt_f}else{if(gcpfb(a,loadWorker,xhr.status)){return;}_vwo_code.finish("&e=loading_failure:"+a)}}, onerrorCb: function(a){if(gcpfb(a,loadWorker)){return;}window._vwo_wt_l=true;_vwo_code.finish("&e=loading_failure:"+a);}})};loadWorker(window.VWO._.domains.sv +"cdn/edrv/worker-d1465c2fa6101b9e26256b6e05f49649.br.js");;var _vis_opt_file;var _vis_opt_lib;var check_vn=function f(){try{var[r,n,t]=window.jQuery.fn.jquery.split(".").map(Number);return 2===r||1===r&&(4-1&&!check_vn()){_vis_opt_file=vaGqFile}}window._vwo_library_timer=setTimeout((function(){vwoCode.removeLoaderAndOverlay&&vwoCode.removeLoaderAndOverlay();_vwo_code.finish();}),vwoCode.library_tolerance&&typeof vwoCode.library_tolerance()!=="undefined"?vwoCode.library_tolerance():2500),_vis_opt_lib=typeof _vis_opt_lib=="undefined"?window._vwo_cdn+_vis_opt_file:_vis_opt_lib;_vis_opt_lib=window.VWO._.domains.sv+_vis_opt_lib;if(window.location.search.includes("trackingOff=true")){return}var loadLib=function(url){_vwo_code.load(url, { dSC: true, onloadCb:function(xhr,a){window._vwo_mt_l=true;if(xhr.status===200 || xhr.status===304){if(!window._vwo_wt_f)return window._vwo_mt_f=xhr.responseText;_vwo_code.addScript({text:xhr.responseText});delete window._vwo_wt_f;}else{if(gcpfb(a,loadLib,xhr.status)){return;}_vwo_code.finish("&e=loading_failure:"+a);}}, onerrorCb: function(a){if(gcpfb(a,loadLib)){return;}window._vwo_mt_l=true;_vwo_code.finish("&e=loading_failure:"+a);}})};loadLib(_vis_opt_lib);VWO.load_co=function(u,opts){return window._vwo_code.load(u,opts);};;window.VWO._=window.VWO._||{};window.VWO._.langMap={"zh-TW":"zh-Hant","es-AR":"es-AR","el-GR":"gr","pt-BR":"pt-BR","es-419":"es-419","zh":"zh-Hans","nb-No":"no","zh-CN":"zh-Hans"};;;;}}catch(e){_vwo_code.finish();;_vwo_code.removeLoaderAndOverlay&&_vwo_code.removeLoaderAndOverlay();_vwo_err(e);window.VWO.caE=1}})();
- Synonyms
- Why SaaS Dunning Matters for Revenue and Churn
- Common Causes of Payment Failures in SaaS
- How the Dunning Process Works
- Dunning Emails and Customer Communication
- Dunning Management and Automation
- SaaS Dunning Strategy and Best Practices
- Measuring Dunning Performance and Recovery Rate
- People Also Ask
- Related Topics
Table of Contents
SaaS dunning is the process software companies use to recover failed subscription payments. When a customer’s card is declined or a payment does not go through, the system automatically retries the charge and sends reminders to update billing details. It is built into subscription billing platforms and follows a set workflow.
Dunning is useful because it prevents involuntary churn, which happens when customers lose access due to payment issues rather than a decision to cancel. By recovering these failed payments, SaaS companies protect recurring revenue and keep active customers from dropping off due to avoidable billing problems.
Synonyms
- Automated payment recovery
- Billing recovery process
- Failed payment recovery
- Payment retry management
- Subscription payment recovery
Why SaaS Dunning Matters for Revenue and Churn
Revenue leaks in small, avoidable amounts when payments fail and accounts quietly lapse. SaaS dunning addresses that hidden loss by recovering revenue that would otherwise be written off.
Cash Flow and Growth Implications
Recurring revenue depends on collection discipline. Even small failure rates create noticeable cash flow disruption at scale.
Consider this example:
- 10,000 customers
- 3% payment failure rate
- $100 average monthly subscription
That equals $30,000 in at-risk revenue in a single billing cycle.
If the recovery rate is 60%, $12,000 is lost. If the recovery rate improves to 80%, only $6,000 is lost. The difference compounds month after month.
Payment recovery directly affects cash predictability. It also influences how finance teams forecast revenue and manage working capital.
Scale and Revenue Risk
At small scale, failed payments look manageable. At enterprise scale, they multiply quickly. As subscription volume grows:
- Card expirations increase
- Bank declines become routine
- Geographic payment complexity expands
Without a strong dunning framework, these small failures accumulate into material revenue loss.
According to Stripe, 43% of corporate executives do not know the amount of revenue lost due to involuntary churn, yet are interested in learning it. Additionally, 79% have not implemented any retry strategies to lessen the impact of declined payments.
43%
Execs who do not know amount of lost revenue due to involuntary churn
79%
Execs who have not implemented retry strategies for declined payments
Dunning supports revenue stability. It protects customer lifetime value by preserving accounts that still want the product. Over time, stronger recovery rates contribute to healthier growth metrics and more predictable subscription revenue streams.
Common Causes of Payment Failures in SaaS
Most failed payments are operational. Customers often want to stay subscribed, but something in the payment processing chain breaks. Understanding the root causes explains the need for dunning workflows.
Expired Credit Cards
Card expiration is one of the most common reasons for failed subscription payments. Customers receive new cards but forget to update their billing details. Recurring billing systems attempt the charge, receive a decline response, and flag the account for retry or notification.
Insufficient Funds
Some transactions fail due to temporary lack of funds. This is common with debit cards and smaller businesses managing tight cash flow. These are often recoverable through scheduled retries spaced across several days.
Declined Transactions
Banks may decline transactions due to fraud detection rules, unusual purchase patterns, or geographic flags. In many cases, the customer is unaware the bank blocked the charge until they receive a notification.
Outdated or Incorrect Payment Details
Customers change billing addresses, switch banks, or replace cards. If subscription records are not updated, charges fail. Simple form errors during checkout can also trigger recurring billing problems later.
Payment Gateway and Network Issues
Not all failures originate from the customer side. Gateway timeouts, processor outages, and network errors can interrupt successful transactions. These are typically classified as soft declines and may succeed on retry.
Billing Configuration Errors
Incorrect tax calculations, currency mismatches, or invoice timing errors can result in rejected payments. As billing complexity grows, configuration accuracy becomes more important.
How the Dunning Process Works
Once a payment fails, the system follows a defined sequence. The goal is to recover revenue before access is interrupted. The dunning process is structured, time-based, and rule-driven. Here is how it typically unfolds:
Step 1: Failure Detection
The process begins when a scheduled charge is declined.
The billing platform receives a decline code from the payment gateway or bank. That code determines whether the failure is soft, such as insufficient funds, or hard, such as a closed account.
At this point, the account is marked as “past due,” and the dunning workflow is triggered automatically.
Step 2: Automated Retry
After the initial failure, the system attempts to process the payment again.
Retries follow predefined logic. Some companies retry after 24 hours. Others space attempts across several days based on decline type. Smart retry logic may vary timing depending on historical success patterns.
If the retry succeeds, the subscription continues without interruption.
Step 3: Customer Notification
If the payment remains unresolved, customer communication begins.
Automated emails notify the customer of the failed charge and request updated billing details. These messages typically include:
- The reason for failure if available
- A secure link to update payment information
- A clear deadline before service impact
Step 4: Escalation and Suspension
As the retry window progresses, messaging becomes more urgent.
If payment is still unresolved after multiple attempts, the system may restrict certain features, place the account in a grace period or temporarily suspend access.
The timeline varies by company. Some allow 7 days. Others extend to 14 or 30 days depending on customer segment.
Step 5: Recovery and Reinstatement
If the customer updates payment details and the charge succeeds, the account is restored to active status.
Access resumes immediately in most SaaS platforms. The subscription cycle continues, often without resetting the original billing date.
If no resolution occurs after the defined window, the subscription is suspended or canceled according to company policy.
Typical Dunning Timeline
Day 0
Payment Fails
Day 1
First Retry
Day 3
Reminder Email
Day 5
Second Retry
Day 7-14
Final Notice
End Suspension or Cancellation
When payments fail, communication becomes the bridge between billing systems and customer action. The way a company handles these messages often determines whether revenue is recovered or the subscription lapses.
Dunning Emails and Customer Communication
Types of Dunning Emails
Dunning emails typically follow a structured sequence.
Reminder Emails
Sent shortly after the first failed attempt. These are informational. They explain that a payment did not go through and provide a link to update billing details.
Warning Notices
Sent after additional retry attempts fail. These messages communicate a potential service interruption and provide a deadline.
Escalation Messages
Sent near the end of the retry window. These state that access may be suspended if payment is not resolved.
Payment reminders focus on resolution. Traditional dunning letters, common in legacy industries, often focus on debt collection. SaaS communication centers on keeping the subscription active.
Dunning Management and Automation
As subscription volume grows, manual follow-up breaks down. Dunning management helps with payment recovery operations. It refers to the configuration, monitoring, and optimization of payment recovery workflows inside billing systems.
This is the operational layer that governs how failed payments are handled across the customer base.
Automation vs. Manual Recovery
Manual recovery often relies on finance teams reviewing failed payments and sending individual reminders. That approach may work for a small customer base. But it does not hold up under growth. Automation changes the game completely.
Here is how they compare:
| Feature | Manual | Automated |
|---|---|---|
| Retry scheduling | Ad hoc | Rule-based and timed |
| Customer notifications | Sent individually | Triggered automatically |
| Tracking | Spreadsheet-based | Dashboard reporting |
| Scalability | Limited | Designed for volume |
Automation reduces response time and improves consistency. It also removes guesswork from retry timing.
Key Capabilities of Dunning Software
Modern dunning systems typically include:
- Smart retries: Retry logic based on decline type, geography, or past payment behavior.
- Retry optimization: Dynamic scheduling that adjusts based on historical recovery data.
- Payment recovery tracking: Visibility into recovery rates, failure reasons, and aging accounts.
- Integration with billing platforms: Connection to subscription management, invoicing, and revenue systems.
SaaS Dunning Strategy and Best Practices
A strong dunning strategy is not about sending more reminders. It is about designing clear rules that protect revenue while preserving the customer relationship. Structure matters. Timing matters. Segmentation matters.
Below are the core pillars of an effective approach.
1. Escalation Policy Design
An escalation policy defines what happens when payment is not resolved within a set time frame. It outlines retry attempts, communication stages, grace periods, and the exact moment when access is restricted or suspended.
Without clear escalation rules, teams make inconsistent decisions. Some accounts may be suspended too quickly. Others may remain past due for weeks, creating reporting confusion and revenue exposure.
Document your escalation timeline in writing. Define how many retries occur, how many emails are sent, and the exact day suspension happens. Align that policy with product access rules. Then review it quarterly. If recovery rates drop or customer complaints rise, adjust the timing rather than reacting account by account.
2. Customer Segmentation Strategy
Not all customers carry the same revenue weight or risk profile. A $29 monthly self-serve account should not follow the same recovery path as a six-figure enterprise contract.
Segmentation allows different retry windows, communication tone, and escalation thresholds based on account value, geography, payment method, or tenure.
To apply this, start with three tiers: low, mid, and high value accounts. Assign different retry windows and grace periods to each. For enterprise customers, involve account managers before suspension. For self-serve customers, rely on automation and shorter timelines. This balance protects revenue without overwhelming internal teams.
3. Retry Window and Timing Optimization
Retry timing influences recovery success. Too frequent attempts can trigger additional declines. Too few attempts leave recoverable revenue on the table.
Banks and payment networks often approve transactions at predictable times. Intelligent scheduling increases the likelihood of approval without increasing friction.
Begin by analyzing decline codes and retry outcomes. Identify which days and intervals yield higher recovery rates. Adjust retry spacing accordingly. Instead of retrying daily out of habit, align attempts with data. Small timing adjustments can materially improve recovery percentages.
4. Preventive Payment Optimization
The most effective dunning strategy starts before a payment fails. Preventive measures reduce the volume entering the recovery pipeline. Card updater services, pre-expiration reminders, and clear billing descriptors reduce decline rates and customer confusion.
Send automated reminders 30 days before card expiration. Use recognizable billing descriptors that match your brand name. Offer multiple payment methods for global customers. Prevention lowers failure rates, which lowers involuntary churn before dunning even begins.
5. Balancing Recovery and Retention
Aggressive recovery tactics can protect short-term revenue but damage long-term relationships. Overly lenient policies protect experience but increase revenue leakage.
Strong dunning strategy balances financial discipline with customer context.
Start by defining acceptable revenue-at-risk thresholds. Then evaluate suspension timing against churn data. If customers frequently return after brief suspension, your window may be too short. If accounts linger unpaid with no resolution, your window may be too long. Let data guide adjustments instead of emotion.
Measuring Dunning Performance and Recovery Rate
Payment recovery should be measured with the same discipline as acquisition and retention. Without clear metrics, it is difficult to know whether recovery policies are working or silently leaking revenue.
Strong measurement turns dunning from a background billing function into a visible revenue driver.
Core Dunning Metrics
Several metrics define dunning performance.
Failed Payment Rate measures the percentage of transactions that decline during a billing cycle. A rising rate may signal billing friction, pricing strain, or gateway issues.
Recovery Rate measures how much of that failed revenue is successfully collected. This reflects the effectiveness of retry logic, communication, and escalation timing.
Retry Success Rate tracks how often a second or third attempt results in approval. This helps optimize retry spacing and logic rules.
Time to Recovery measures how long it takes, on average, to resolve a failed payment. Shorter recovery windows reduce revenue aging and improve cash flow visibility.
Involuntary Churn Rate isolates subscription churn caused by payment failure rather than customer cancellation. This metric directly reflects dunning effectiveness.
Recovery Rate Formula
Recovery rate is typically calculated as:
Recovery Rate
=
Recovered Revenue
÷
Total Failed Revenue
For example, if $50,000 in subscription charges fail during a billing cycle and $35,000 is later collected through retries and customer updates, the recovery rate is 70 percent.
Even a five-point increase in recovery rate can materially change monthly recurring revenue at scale.
People Also Ask
How long should a SaaS dunning cycle last?
Most SaaS companies run dunning cycles between 7 and 30 days, depending on customer segment and pricing model. Short cycles limit outstanding balances, while longer cycles give customers more time to resolve banking or internal approval delays.
The right duration depends on account value and risk tolerance. High-value enterprise contracts often justify longer grace periods and flexible dunning processes, while self-serve subscriptions typically follow shorter timelines to maintain billing discipline.
Should SaaS companies suspend access immediately after a failed payment?
Immediate suspension is rare in subscription software. Most companies provide a grace period to allow retries and customer updates before restricting access.
Access policies should reflect product dependency. If customers rely on the platform for daily operations, sudden suspension can damage trust. Structured grace periods protect revenue without creating unnecessary friction.
Related Topics
SaaS Reporting CPQ in SaaS SaaS Lifetime Value SaaS Sales Tax SaaS Metering Hybrid SaaS
The #1 Agentic Quote To Revenue Platform for Salesforce.