1<!DOCTYPE html><!-- Last Published: Wed Sep 16 2026 15:00:31 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="webflow.funraise.org" data-wf-page="650ab050bb6e81487eea508f" data-wf-site="5d6eb414117b673d211598f2" lang="en" data-wf-collection="650ab04fbb6e81487eea503b" data-wf-item-slug="links-recurring-program-drives-56-of-their-online-revenue"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>LiNKâs Recurring Program Drives 56% of Their Online Revenue</title><meta content="LiNKâs fundraising challenge wasnât finding donors; it was building something that could sustain the mission without depending on any one source. Now 56% of their online income is predictable, sustaining revenue." name="description"/><meta content="LiNKâs Recurring Program Drives 56% of Their Online Revenue" property="og:title"/><meta content="LiNKâs fundraising challenge wasnât finding donors; it was building something that could sustain the mission without depending on any one source. Now 56% of their online income is predictable, sustaining revenue." property="og:description"/><meta content="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a45c0d3877909349534_LINK_CaseStudy_Blog_Thumbnail.jpg" property="og:image"/><meta content="LiNKâs Recurring Program Drives 56% of Their Online Revenue" name="twitter:title"/><meta content="LiNKâs fundraising challenge wasnât finding donors; it was building something that could sustain the mission without depending on any one source. Now 56% of their online income is predictable, sustaining revenue." name="twitter:description"/><meta content="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a45c0d3877909349534_LINK_CaseStudy_Blog_Thumbnail.jpg" name="twitter:image"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="7hAdDcT6Cvxny0SOemq_wCLVvztryh2j1w1ztnwyLkk" name="google-site-verification"/><link href="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/css/funraise-dev.shared.84194696f.min.css" rel="stylesheet" type="text/css" integrity="sha384-hBlGlvYMu8Y4TICw8QGElG23E/oz42ask9Pdjo/GhyHbQqJ7w/4V7In8wXCp0jky" crossorigin="anonymous"/>
1<script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script>
1<link href="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5d8cfccee18d83ccde1c37fd_favicon-32x32.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5d8cfcd64ebd7300b7a48252_android-chrome-256x256.png" rel="apple-touch-icon"/><link href="https://www.funraise.org/blog/links-recurring-program-drives-56-of-their-online-revenue" rel="canonical"/>
1<script type="application/ld+json"> 2{ 3 "@context": "https://schema.org", 4 "@type": "BlogPosting", 5 "headline": "LiNKâs Recurring Program Drives 56% of Their Online Revenue", 6 "description": "LiNKâs fundraising challenge wasnât finding donors; it was building something that could sustain the mission without depending on any one source. Now 56% of their online income is predictable, sustaining revenue. ", 7 "url": "https://www.funraise.org/blog/links-recurring-program-drives-56-of-their-online-revenue", 8 "image": { 9 "@type": "ImageObject", 10 "url": "https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a4106c1a046c2675390_LINK_CaseStudy_Blog_Header.jpg", 11 "caption": "LiNK logo and pictures of Koreans on a black background" 12 }, 13 "datePublished": "2026-09-17", 14 "dateModified": "2026-09-17T22:32:22.564Z", 15 "author": { 16 "@type": "Person", 17 "name": "Erin Booker", 18 "url": "https://www.funraise.org/author/erin-booker", 19 "image": { 20 "@type": "ImageObject", 21 "url": "https://cdn.prod.website-files.com/5da60733afec9db1fb998273/5de58642130f7d42e907cd95_Erin%20headshot.webp" 22 } 23 }, 24 "publisher": { 25 "@type": "Organization", 26 "name": "Funraise", 27 "logo": { 28 "@type": "ImageObject", 29 "url": "https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5d6ecfcf7788c43958f8df80_Funraise_Logo_Dark.svg" 30 } 31 }, 32 "articleSection": "Case Studies", 33 "keywords": "Case Studies", 34 "inLanguage": "en" 35} 36</script>
36<script type="text/javascript">!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.agent='plwebflow';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '214357609356069');fbq('track', 'PageView');</script>
36<!-- META: Site verifications --> 37<meta name="ahrefs-site-verification" content="0fe9b058905dbf479138df8cb312218e9cda5cd5a6f63356170701e82cf2fb02">
38<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.funraise.org/#organization","name":"Funraise","url":"https://www.funraise.org/","logo":{"@type":"ImageObject","@id":"https://www.funraise.org/#logo","url":"https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5d6ecfcf7788c43958f8df80_Funraise_Logo_Dark.svg","caption":"Funraise"},"description":"Funraise is an online fundraising platform powering thousands of nonprofit missions with exceptional donation experiences and donor insights.","foundingDate":"2015","founder":[{"@type":"Person","name":"Justin Wheeler","url":"https://www.funraise.org/author/justin-wheeler"},{"@type":"Person","name":"Jason Swenski"},{"@type":"Person","name":"Tony Sasso"}],"address":{"@type":"PostalAddress","addressLocality":"Long Beach","addressRegion":"CA","addressCountry":"US"},"sameAs":["https://www.linkedin.com/company/funraise","https://x.com/funraise","https://twitter.com/funraise","https://www.facebook.com/funraiseplatform","https://www.instagram.com/funraise/","https://www.youtube.com/channel/UCexHcj-hA3W91OtezjSnnew","https://www.crunchbase.com/organization/funraise","https://www.g2.com/products/funraise/reviews","https://www.capterra.com/p/154623/Funraise/","https://www.softwareadvice.com/crm/funraise-profile/"]},{"@type":"WebSite","@id":"https://www.funraise.org/#website","url":"https://www.funraise.org/","name":"Funraise","publisher":{"@id":"https://www.funraise.org/#organization"},"inLanguage":"en"}]}</script>
38 39 40<!-- FONT PRELOAD (2026-07-31): the two Garnett weights used above the fold. 41 Without this they start only after the 732 KB stylesheet is parsed. --> 42<link rel="preload" as="font" type="font/woff2" crossorigin 43 href="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/668be495d4cd18780d80771d_Garnett-Medium.woff2"> 44<link rel="preload" as="font" type="font/woff" crossorigin 45 href="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/668be49650e49af103d0b23e_Garnett-Semibold.wof"> 46 47<!-- ANTI-FLICKER removed 2026-07-31: it hid the whole page (opacity:0) for 48 up to 1 s on every pageview â a direct LCP/FCP cost. --> 49 50<!-- GTM: Google Tag Manager -->
51<script defer>
vendor: 397 bytes, lines 51-61
51 52 (function(w,d,s,l,i){ 53 w[l]=w[l]||[]; 54 w[l].push({'gtm.start': new Date().getTime(), event:'gtm.js'}); 55 var f = d.getElementsByTagName(s)[0], 56 j = d.createElement(s), 57 dl = l!='dataLayer'?'&l='+l:''; 58 j.async = true; 59 j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 60 f.parentNode.insertBefore(j,f); 61 })(window, document, 'script', 'dataLayer', '
61GTM-P7XD5SD
vendor: 4 bytes, line 61
61');
62</script>
62 63 64<!-- MIDA: A/B Testing Script -->
65<script defer src="https://cdn.mida.so/js/optimize.js?key=XZbzAeVxR9AwKRo9DGmWNy"></script>
65 66 67<!-- GLOBAL CSS (left untouched on purpose) --> 68<style media="screen"> 69 body{ 70-webkit-font-smoothing: antialiased; 71 -moz-osx-font-smoothing: grayscale; 72 } 73@font-face{font-display:swap}.nav-dropdown-menu-box-1,.nav-dropdown-menu-box-2,.nav-dropdown-menu-box-3{transition:opacity .3s,transform .3s;transform:translateY(-10px);opacity:0}.dropdown-wrap:hover .nav-dropdown-menu-box-1,.dropdown-wrap:hover .nav-dropdown-menu-box-2,.dropdown-wrap:hover .nav-dropdown-menu-box-3{transform:translateY(0);opacity:1}#leadinModal-1013719>div.leadinModal-content>button:hover,.double-text-wrapper:hover .nav-double-col-title-text,.nav-promo-column:hover .nav-promo-text{color:#2979ff}@media screen and (min-device-width:992px) and (max-device-width:1020px){.nav-link.v2{padding-left:10px!important}}.w--open{transition:.2s ease-in-out}@media only screen and (max-height:760px){.dropdown-menu-box{height:calc(100vh - 72px)!important;max-height:calc(100vh - 72px)!important}}@media screen and (min-width:992px) and (max-width:1399px){.content-container{padding-right:3.8em;padding-left:3.8em}.footer-link{font-size:.8em;padding-bottom:8px}
73.dropdown-bg-box .dropdown-bg{left:10%!important}.dropdown.dropdown-hover.resources-dropdown{font-size:.9em}.integration-description{min-height:12em}}@media screen and (min-width:1400px) and (max-width:1679px){.dropdown-bg-box .dropdown-bg{left:10%!important}.dropdown.dropdown-hover.resources-dropdown{font-size:.9em}}@media screen and (min-width:1680px) and (max-width:1800px){.dropdown-bg-box .dropdown-bg{left:18%!important}}#leadinModal-1013719>div.leadinModal-content{border:1px solid #e4e8ec!important;border-radius:5px;background-color:#fff;box-shadow:1px 1px 6px 0 rgb(8 22 45 / 4%);transition:.2s ease-in-out;color:#002042;min-height:440px}#leadinModal-1013719>div.leadinModal-overlay{background-color:rgba(0,32,66,.85)!important}#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9>button.next-button,#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9>div.leadin-button-wrapper>button.leadin-button.leadin-button-primary.leadin-primary.leadin-submit.button-with-gdpr,#leadinModal-content-wrapper-1013719>div>div>div.advance-wrapper>button,#leadinModal-content-wrapper-1013719>div>div>div.thank-you-message>div>a{margin-top:24px;padding:9px 15px!important;color:#fff;font-size:1.125em;font-weight:500!important;text-align:center;text-decoration:none;line-height:188%;background-color:#2979ff!important;transition:.2s ease-in-out;border:0;cursor:pointer}#input-email-015dc492-4fcf-436f-b1c2-8787b44ce5d9:hover label,#leadin-close-button,.nav-link-block:hover .nav-link-block-title{color:#2979ff!important}#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9>button.next-button:hover,#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9>div.leadin-button-wrapper>button.leadin-button.leadin-button-primary.leadin-primary.leadin-submit.button-with-gdpr:hover,#leadinModal-content-wrapper-1013719>div>div>div.advance-wrapper>button:hover,#leadinModal-content-wrapper-1013719>div>div>div.thank-you-message>div>a:hover{background-image:linear-gradient(120deg,#53b1ff,#2979ff)!important;box-shadow:0 2px 6px 0 rgba(8,22,45,.24)}#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9>div.leadin-button-wrapper>button.leadin-button.leadin-button-secondary.leadin-secondary.back-button{padding:5px 15px!important;border:2px solid #2979ff!important;background-color:transparent!important;transition:.2s ease-in-out;outline:0;line-height:188%}#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9>div.leadin-button-wrapper>button.leadin-button.leadin-button-secondary.leadin-secondary.back-button:hover{color:#fff!important;background-image:linear-gradient(120deg,#2979ff,#2979ff)!important}#leadin-close-button{margin-top:0!important;text-decoration:underline!important;font-weight:500;font-size:1.125em!important}#leadin-close-button:hover{color:#2c7cff}#leadinModal-1013719>div.leadinModal-content>button::before{font-size:24px;color:#002042;transition:.2s ease-in-out}#leadinModal-1013719>div.leadinModal-content>button{outline:0;color:#002042;transition:.2s ease-in-out}#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9>div.leadin-button-wrapper{padding-top:32px}#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9>div.leadin-button-wrapper>button.leadin-button.leadin-button-primary.leadin-primary.leadin-submit.button-with-gdpr{margin-top:0}#leadin-content-form-wrapper>div.leadin-message-wrapper>h4,#leadinModal-content-wrapper-1013719>div>div>h4{padding-bottom:8px;font-size:1.5em;font-weight:500;line-height:160%}#leadin-content-form-wrapper>div.leadin-message-wrapper>h4,#leadinModal-content-wrapper-1013719>div>div>h4,#leadinModal-content-wrapper-1013719>div>div>span{color:#002042}#leadinModal-content-wrapper-1013719 p,#leadinModal-content-wrapper-1013719>div>div>span{margin-left:0!important;font-size:1em;line-height:188%;color:#002042}#leadinModal-content-wrapper-1013719>div>div>div.thank-you-message>span>p:first-child{font-size:3em!important;line-height:100%!important}#leadinModal-content-wrapper-1013719>div>div>div.thank-you-message>div{padding-top:0!important}#input-email-015dc492-4fcf-436f-b1c2-8787b44ce5d9{padding:8px 16px;width:100%;height:42px;max-height:42px;border-radius:4px;border:1px solid rgba(127,143,161,.22);background-color:rgba(245,249,250,.4);font-size:.938em;transition:.2s ease-in-out}#input-email-015dc492-4fcf-436f-b1c2-8787b44ce5d9:hover{background-color:#fff;border-color:rgba(41,121,255,.4)}#input-email-015dc492-4fcf-436f-b1c2-8787b44ce5d9:focus{outline:0;border-color:#2979ff!important}.border-bottom-only,.no-border{border-top:none!important}.border-top-only,.no-border{border-bottom:none!important}#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9>div.leadin-input-wrapper.form-fields>div>label{font-weight:500;font-size:.9em;margin-bottom:8px;color:#002042}#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9 .error-text,#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9>div.gdpr-options>span>div:nth-child(8)>label>span{padding:0;margin:0 0 0 4px;text-align:left;font-size:.8em;font-weight:400;color:#e91e63!important;background-color:transparent}#leadinModal-content-wrapper-1013719>div>div>div.thank-you-message{margin-top:24px}#hs-eu-cookie-confirmation #hs-eu-cookie-confirmation-inner #hs-en-cookie-confirmation-buttons-area a#hs-eu-confirmation-button,#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9>div.gdpr-options>span>div:nth-child(4)>label>div>p:nth-child(2),#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9>div.gdpr-options>span>div:nth-child(8)>label>div>p{font-weight:500!important}#leadin-content-form-wrapper>div.leadin-message-wrapper>div.dyno-image,#leadinModal-content-wrapper-1013719>div>div>div.dyno-image{margin:0 auto;display:block;width:100%;float:none}#leadin-content-form-wrapper>div.leadin-message-wrapper>div.dyno-image>div>img,#leadinModal-content-wrapper-1013719>div>div>div.dyno-image>div>img{margin:0 auto 24px;display:block;width:160px;height:auto;max-width:none!important}#leadin-content-form-wrapper>div.leadin-message-wrapper #leadinModal-content-wrapper-1013719 p,#leadin-content-form-wrapper>div.leadin-message-wrapper>h4,#leadin-content-form-wrapper>div.leadin-message-wrapper>span>p:nth-child(2),#leadinModal-content-wrapper-1013719>div>div,#leadinModal-content-wrapper-1013719>div>div>h4{margin:0 auto!important}#hsPopUpForm-015dc492-4fcf-436f-b1c2-8787b44ce5d9,#leadinModal-content-wrapper-1013719 .advance-wrapper{margin:0 auto;width:100%}#hs-eu-cookie-confirmation #hs-eu-cookie-confirmation-inner{width:100%;display:flex;flex-direction:column;margin:0 auto;max-width:1680px!important;background:0 0!important;font-size:1em;font-family:Garnett,Helvetica,Arial;justify-content:space-around;padding:1.5em!important}#hs-eu-cookie-confirmation #hs-eu-cookie-confirmation-inner p{margin:auto!important;padding-left:5px}#hs-eu-cookie-confirmation #hs-eu-cookie-confirmation-inner #hs-en-cookie-confirmation-buttons-area{margin-right:auto!important;justify-content:left;align-items:center}#hs-eu-cookie-confirmation #hs-eu-cookie-confirmation-inner #hs-eu-policy-wording>p{line-height:160%!important;margin-bottom:0!important}#hs-eu-cookie-confirmation #hs-eu-cookie-confirmation-inner #hs-eu-policy-wording>p>a{color:#2979ff!important;font-weight:500!important}@media only screen and (max-width:960px){#hs-eu-cookie-confirmation{width:70%!important}}@media screen and (max-width:480px){#hs-eu-cookie-confirmation #hs-eu-cookie-confirmation-inner{margin-top:10px!important}}.less{margin-top:-56px}
73.mt-0{margin-top:0!important}div#hs-eu-cookie-confirmation{z-index:999!important}.page-link{color:var(--black);border-radius:4px;justify-content:center;align-items:center;padding-left:12px;padding-right:12px;font-weight:500;line-height:32px;text-decoration:none;transition:.2s;display:flex}.page-link.current-page{background-color:rgb(41 122 255 / 9%);color:var(--primary)} 74 75.nav-btn-default, 76.nav-free-btn, 77.nav-btn-default-nav, 78.nav-free-btn-en { 79 display: none; 80} 81 82@media (max-width: 1215px) { 83 #banner-nav-pill { 84 display: none; 85 } 86} 87 88@media (max-width: 996px) { 89.mobile-hidden-important{ 90 display: none !important; 91} 92} 93 .nav-link-wrapper-badge:hover .nav-text-grey{ 94 color: #2979ff; 95 } 96 .nav-link-wrapper-box:hover .nav-text-grey{ 97 color: #2979ff; 98 } 99 100 .feature_page_embed iframe{ 101 border-radius: 12px; 102 } 103</style> 104<!-- IMAGE SIZES RUNTIME PATCH â patches `sizes` attribute for misconfigured images. 105 Source: audits/image-sizes-runtime.js in competitors repo. 106 Verify: document.querySelectorAll('img[data-sizes-patched]').length -->
107<script> 108(function () { 109 'use strict'; 110 const RULES = [ 111 { 112 selector: 'img.image-183', 113 sizes: '(min-width: 992px) 50vw, (min-width: 768px) 49vw, 100vw', 114 }, 115 ]; 116 function patch(img) { 117 for (const rule of RULES) { 118 if (!img.matches(rule.selector)) continue; 119 if (img.getAttribute('sizes') === rule.sizes) return; 120 img.setAttribute('sizes', rule.sizes); 121 img.setAttribute('data-sizes-patched', '1'); 122 if (img.complete && img.currentSrc) { 123 const src = img.src; 124 img.removeAttribute('src'); 125 img.src = src; 126 } 127 return; 128 } 129 } 130 function patchAll(root) { 131 (root || document).querySelectorAll('img').forEach(patch); 132 } 133 if (document.readyState === 'loading') { 134 document.addEventListener('DOMContentLoaded', () => patchAll()); 135 } else { 136 patchAll(); 137 } 138 const observer = new MutationObserver((mutations) => { 139 for (const m of mutations) { 140 m.addedNodes.forEach((n) => { 141 if (n.nodeType !== 1) return; 142 if (n.tagName === 'IMG') patch(n); 143 else if (n.querySelectorAll) patchAll(n); 144 }); 145 } 146 }); 147 if (document.body) { 148 observer.observe(document.body, { childList: true, subtree: true }); 149 } else { 150 document.addEventListener('DOMContentLoaded', () => { 151 observer.observe(document.body, { childList: true, subtree: true }); 152 }); 153 } 154})(); 155</script>
155 156 157<!-- 158 Hero Section Fix â Image Overflow Across All Feature Pages 159 Funraise.org · 2026-05-12 160 161 WHERE TO PASTE THIS: 162 Webflow Designer â Project Settings â Custom Code â "Head Code" 163 Paste entire content of this file (both <style> and
163<script> blocks). 164 Save â Publish. 165 166 WHAT IT DOES: 167 1. Fixes broken `.image-feature-page` in production CSS â restores width: 150% 168 and top: -71px offset so hero image overflows past viewport edge. 169 2. Normalizes `.hero_image-feature` (used on grid-43 pages) to also use width: 150% 170 so it overflows on wide monitors (1920+). 171 3. Normalizes `.grid-43` columns to match `.grid-45` (1fr 1fr). 172 4. Resets to single-column on tablet/mobile (<991px). 173 5. Overrides the `sizes` attribute on all hero <img> elements so the browser 174 loads the high-res srcset variant (1080w/1170w) instead of the small 500w 175 variant â image appears sharp. 176 177 AFFECTED PAGES (24 feature pages): 178 All /features/* pages. Scope is restricted to `.hero--left--fixed-opacity ...` 179 so no other sections are affected. 180 181 ROLLBACK: Remove the contents of this block from Head Code, save, publish. 182--> 183 184<style> 185/* âââ Hero overflow fix · 2026-05-12 âââ */ 186.hero--left--fixed-opacity .image-feature-page { 187 width: 150%; 188 inset: -71px auto auto 0%; 189} 190 191.hero--left--fixed-opacity .hero_image-feature, 192.hero--left--fixed-opacity .hero_image-feature.prev-version { 193 width: 150%; 194 min-width: 0; 195 inset: -71px auto auto 0%; 196} 197 198.hero--left--fixed-opacity .grid-43 { 199 grid-template-columns: 1fr 1fr; 200 grid-column-gap: 20px; 201} 202 203@media (max-width: 991px) { 204 .hero--left--fixed-opacity .image-feature-page, 205 .hero--left--fixed-opacity .hero_image-feature, 206 .hero--left--fixed-opacity .hero_image-feature.prev-version { 207 width: 100%; 208 min-width: 0; 209 max-width: 100%; 210 inset: auto; 211 position: static; 212 } 213} 214</style> 215
216<script> 217(function () { 218 var SIZES = '(max-width: 479px) 100vw, (max-width: 767px) 100vw, (max-width: 991px) 800px, 1100px'; 219 function applySizes() { 220 var imgs = document.querySelectorAll( 221 '.hero--left--fixed-opacity .image-feature-page, .hero--left--fixed-opacity .hero_image-feature' 222 ); 223 imgs.forEach(function (img) { img.setAttribute('sizes', SIZES); }); 224 } 225 if (document.readyState === 'loading') { 226 document.addEventListener('DOMContentLoaded', applySizes); 227 } else { 228 applySizes(); 229 } 230})(); 231</script>
231 232<link href="https://www.funraise.org/blog/links-recurring-program-drives-56-of-their-online-revenue" rel="canonical"/> 233<style> 234.search-2-copy{ 235 display: none; 236} 237.image-wrapper img { 238 -webkit-mask-image: linear-gradient(45deg,#000 25%,rgba(0,0,0,.2) 50%,#000 75%); 239 mask-image: linear-gradient(45deg,#000 25%,rgba(0,0,0,.2) 50%,#000 75%); 240 -webkit-mask-size: 800%; 241 mask-size: 800%; 242 -webkit-mask-position: 0; 243 mask-position: 0; 244} 245 246.image-wrapper img:hover { 247 transition: mask-position 2s ease,-webkit-mask-position 2s ease; 248 -webkit-mask-position: 120%; 249 mask-position: 120%; 250 opacity: 1; 251} 252 253.tocitem { 254 color: #5B6E84; 255 font-size: 12px; 256 font-style: normal; 257 font-weight: 400; 258 letter-spacing: 0.2px; 259 padding: 15px 0; 260 border-bottom: 1px solid #E1E4E8; 261 display: block; 262 overflow: hidden; 263 text-overflow: ellipsis; 264 white-space: normal; 265 line-height: 1.7; 266} 267 268.tocitem span { 269 display: -webkit-box; 270 -webkit-line-clamp: 2; /* Displays a maximum of 2 lines */ 271 -webkit-box-orient: vertical; 272 overflow: hidden; 273 text-overflow: ellipsis; 274} 275.tocitem:hover {
276 color: #2979ff; 277} 278 279.blog_post_sidebar_cta--dark .blog_post_sidebar_cta_img{ 280display: block; 281} 282.blog_post_sidebar_cta--dark .blog_post_sidebar_cta_img--hover{ 283display: none; 284} 285.blog_post_sidebar_cta--dark:hover .blog_post_sidebar_cta_img{ 286display: none; 287} 288.blog_post_sidebar_cta--dark:hover .blog_post_sidebar_cta_img--hover{ 289display: block; 290} 291.generators-wrapper{display:flex!important;flex-wrap:wrap!important;gap:40px!important;justify-content:center!important;align-items:flex-start!important}.funraise-scope .funraise-instance{background:#fff!important;border:1px solid #e1e4e8!important;border-radius:12px!important;padding:24px!important;max-width:800px!important;width:100%!important;box-shadow:0 4px 12px rgba(0,0,0,.04)!important}.funraise-scope .funraise-instance label{display:block!important;font-weight:600!important;margin-bottom:6px!important;font-size:14px!important;color:#002042!important;margin-top:16px!important}.funraise-scope .blog-banner__content p,.funraise-scope .blog-banner__content p strong{font-size:16px!important;line-height:1.4!important;margin:0 0 12px!important}.funraise-scope .funraise-instance input[type=text]{width:100%!important;padding:10px 12px!important;border-radius:6px!important;border:1px solid #d1d5db!important;font-size:14px!important;margin-bottom:12px!important;box-sizing:border-box!important}.funraise-scope .funraise-preview-area{margin:24px 0!important}.funraise-scope .blog-banner{display:flex!important;flex-direction:row!important;align-items:center!important;background:url('https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/683efc95014b4ccd4e48657e_BG.webp') center/cover no-repeat!important;border-radius:16px!important;color:#fff!important;gap:40px!important;padding:36px 41px!important;max-width:700px!important;box-shadow:0 10px 20px rgba(0,0,0,.1)!important;margin:0 auto 30px!important}.funraise-scope .blog-banner__media img{max-height:136px!important;width:auto!important}.funraise-scope .blog-banner__heading{font-size:20px!important;font-weight:700!important;text-transform:uppercase!important;margin:0 0 8px!important;padding-top:0!important;color:#aefffb!important}.funraise-scope .blog-banner__content p strong{color:#2979ff!important}.funraise-scope .blog-banner__button{display:inline-block!important;background:#aefffb!important;color:#002042!important;padding:10px 20px!important;border-radius:30px!important;font-weight:500!important;text-decoration:none!important;font-size:12px!important;line-height:120%!important}.funraise-scope .blog-banner__button:hover{background:#ffce00!important;color:#000!important}.funraise-scope .blog-banner.quote{background:#e8f5fe!important;color:#002042!important;box-shadow:0 2px 10px rgba(0,0,0,.05)!important;padding:32px!important;flex-direction:column!important;align-items:flex-start!important;max-width:700px!important}.funraise-scope .blog-banner.quote .blog-banner__media{display:none!important}.funraise-scope .blog-banner.quote .blog-banner__content p{color:#294c8d!important;font-size:19px!important;font-style:normal!important;font-weight:400!important;line-height:34px!important;text-align:start!important}.funraise-scope .blog-banner.quote .blog-banner__author{font-weight:500!important;font-size:13px!important;margin-bottom:3px!important;line-height:120%!important;margin-top:25px!important}.funraise-scope #blog-banner__role,.funraise-scope .blog-banner.quote .blog-banner__role{font-size:11px!important;font-weight:400!important;color:#555!important;line-height:120%!important}.funraise-scope #blog-banner__author{font-weight:500!important;font-size:13px!important;margin-bottom:3px!important;line-height:120%!important}.funraise-scope .ql-editor{min-height:120px!important;font-size:15px!important;background:#fff!important;border-radius:6px!important}.funraise-scope .ql-toolbar{border-radius:6px 6px 0 0!important}.funraise-scope .ql-container{border-radius:0 0 6px 6px!important;margin-bottom:16px!important}.funraise-scope .funraise-copy-code{background:#2979ff!important;color:#fff!important;padding:8px 16px!important;font-size:14px!important;font-weight:500!important;border:none!important;border-radius:6px!important;cursor:pointer!important;margin-top:8px!important}.funraise-scope .funraise-copy-code:hover{background:#1a5ecc!important}.funraise-scope .funraise-copied-message{display:none!important;color:green!important;font-size:13px!important;margin-top:6px!important}.funraise-scope .funraise-copied-message.show{display:block!important}.funraise-scope pre{background:#f1f5f9!important;padding:10px!important;font-family:Consolas,monospace!important;font-size:13px!important;border-radius:6px!important;overflow-x:auto!important;white-space:pre-wrap!important}.funraise-scope .blog-banner__quote-icon{margin-top:-45px!important;align-self:flex-end!important}.funraise-scope .blog-banner__quote-icon img{width:61px!important;height:auto!important;display:block!important}@media (max-width:768px){.funraise-scope .blog-banner{flex-direction:column!important;text-align:center!important;padding:41px 24px 52px!important;background:url('https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/683efcbf8466d30e522c0b8f_BG%2
2910(1).webp') center/cover no-repeat!important}.funraise-scope .blog-banner__media img{max-width:100%!important;height:167px!important}.funraise-scope .blog-banner__heading{font-size:18px!important}.funraise-scope .blog-banner__button{font-size:16px!important;margin-top:10px!important}.funraise-scope .blog-banner__quote-icon{margin-top:-45px!important;align-self:flex-end!important}.funraise-scope .blog-banner.quote{padding-bottom:48px!important;text-align:justify!important}} 292.funraise-scope .blog-banner.quote{ 293 margin: 30px 0 50px 0; 294 box-shadow: none !important; 295 padding: 32px 52px !important; 296} 297.funraise-scope .blog-banner__quote-icon { 298 margin-top: -90px !important; 299} 300.funraise-scope .blog-banner.quote .blog-banner__content p { 301 font-size: 17px !important; 302} 303</style></head><body class="body"><div class="promo-nav-wrap"><div class="promo-nav-wrap"><a href="/fundraising-events-event-watch" class="fee-banner"><span class="fee-banner-pill">WATCH NOW</span><span class="fee-banner-text">Funraise Events launch event</span></a><div><div id="nav-shade-over" class="nav-shade-over"></div><div class="promo-navbar-wrapper"><div data-collapse="medium" data-animation="over-left" data-duration="300" data-doc-height="1" data-easing2="ease-in-out" data-easing="ease-in-out" role="banner" class="navbar-3 main-nav nav-v2 w-nav"><div class="content-container-4 header-nav v2"><nav role="navigation" class="nav-menu nav-left v2 w-nav-menu"><a id="home" href="/" class="nav-logo w-inline-block"><img width="120" height="72" alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c5895c_Funraise_Logo_Dark.svg" loading="lazy" class="image-233 v2"/></a><div data-delay="300" data-hover="false" class="nav-dropdown w-dropdown"><div id="platform" class="nav-link-2 dopdown-btn v2 w-dropdown-toggle"><div>Platform</div></div><nav class="nav-dropdown-menu w-dropdown-list"><div class="nav-colors-bg-wrapper"><div class="nav-grey-bg"></div><div class="nav-white-bg"></div></div><div class="content-container-4 header-nav v2 p-0"><div class="div-block-439"><div class="platform-dropdown-nav-wrapper-2 space-bet"><div class="div-block-431 hide-sm"><div class="nav-text-grey">The complete nonprofit fundraising platform.</div><div class="sm-nav-text mxw-244">Nonprofit tools, built by nonprofit people, all working together in one easy-to-use platform.</div></div><div class="div-dorpdown-nav-left hidenn"><a href="/free-fundraising-software-for-nonprofits" class="nav-dropdown-pill mobile-sm w-inline-block"><div class="text-block-1427">ð  Get Started for Free</div></a></div><div class="div-block-430"><a href="/contact-sales" class="arrow-link-wrap-3 w-inline-block"><div class="link-container-2 hide"><div class="arrow-link-txt-2">Get a Demo</div><div class="link-arrow">î</div></div></a><a href="/features" class="arrow-link-wrap-3 w-inline-block"><div class="link-container-2"><div class="arrow-link-txt-2">All Features</div><div class="link-arrow">î</div></div></a><a href="/integrations" class="arrow-link-wrap-3 w-inline-block"><div class="link-container-2"><div class="arrow-link-txt-2">Integrations</div><div class="link-arrow">î</div></div></a></div></div><div id="nav-tab-one" class="nav-platform-tab-2 div-block-429"><div class="feature-list-wrapper-2 first"><a href="/features#fundraising" class="nav-link-heading">Fundraising</a><a href="/features/donation-forms" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c58966_donation-forms.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Donation Forms</div></div><div class="link-arrow feature">î</div></a><a href="/features/donation-pages" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c58f6d_donation-pages.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Donation Pages</div></div><div class="link-arrow feature">î</div></a><a href="/features/recurring-giving" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6
303702bad89f47b87835c5895e_recurring-giving.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Recurring Giving</div></div><div class="link-arrow feature">î</div></a><a href="/features/fundraising-websites" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c5895a_fundraising-websites.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Fundraising Websites</div></div><div class="link-arrow feature">î</div></a><a href="/features/peer-to-peer-fundraising" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c58969_peer-to-peer.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Peer-to-peer Fundraising</div></div><div class="link-arrow feature">î</div></a><a href="/features/events-and-ticketing" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c58967_events.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Fundraising Events</div><div class="nav-tag-new">NEW</div></div><div class="link-arrow feature">î</div></a><a href="/features/fundraising-auctions" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c593f6_hammer.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Auctions</div></div><div class="link-arrow feature">î</div></a><a href="/features/company-matching" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c58fef_company-match-icon-sm.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Company Matching</div></div><div class="link-arrow feature">î</div></a></div><div class="feature-list-wrapper-2 _w-230"><a href="/features#crm" class="nav-link-heading">Nonprofit CRM</a><a href="/features/donor-crm" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c58968_supporters.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Donors</div></div><div class="link-arrow feature">î</div></a><a href="/features/donor-prospecting" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67f90e3cba41a670dcf02c02_Wealth.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Wealth Screening</div></div><div class="link-arrow feature">î</div></a><a href="/features/fundraising-intelligence" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c58ecd_donation-analytics.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Reports & Dashboards</div></div><div class="link-arrow feature">î</div></a><a href="/features/donation-management" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c58975_transactions.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Donations</div></div><div class="link-arrow feature">î</div></a><a href="/features/donation-tasks" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c58970_tasks.svg"/><div class="dropdown-link-text feature-single">Automated Tasks</div></div><div class="link-arrow feature">î</div></a><a href="/features/volunteer-management" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/[email protected]" class="feature-single-img"/><div class="dropdown-link-text feature-single">Volunteer Management</div></div><div class="link-arrow feature">î</div></a><a href="/features/donor-portal-app" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="Funraise icon logo." src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/607a1579e9ca4e8f587aebcb_donor-portal-icon-sm.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Donor Portal</div></div><div class="link-arrow feature">î</div></a></div><div class="feature-list-wrapper-2 _w-200"><a href="/features#engagement" class="nav-link-heading">Engagement</a><a href="/features/automated-emails" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6
303702bad89f47b87835c58964_automated-emails.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Email Messaging</div></div><div class="link-arrow feature">î</div></a><a href="/features/text-engagement" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c5896b_sms.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">SMS Messaging</div></div><div class="link-arrow feature">î</div></a><a href="/features/text-engagement" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c5896b_sms.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Text to Give</div></div><div class="link-arrow feature">î</div></a></div><div class="feature-list-wrapper-2 _w-200 sm-hide l-border"><a href="/features#platfrom" class="nav-link-heading">Platform</a><a href="/features/funraise-app" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c59041_Funraise_Icon_app.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Funraise App</div></div><div class="link-arrow feature">î</div></a><a href="/features/subaccounts" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c5922b_%20AppealAI%402x.webp" class="feature-single-img"/><div class="dropdown-link-text feature-single">Subaccounts</div></div><div class="link-arrow feature">î</div></a><a href="/features/funraise-ai" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c5920e_AppealAI_Dropdown.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Funraise AI</div></div><div class="link-arrow feature">î</div></a><a href="/integrations" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c595a5_Integrations%20(1).svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Integrations</div></div><div class="link-arrow feature">î</div></a><a href="/about/security" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c595ad_Security.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Security</div></div><div class="link-arrow feature">î</div></a></div></div></div></div></nav></div><div data-delay="0" data-hover="false" class="nav-dropdown w-dropdown"><div class="nav-link-2 dopdown-btn v2 w-dropdown-toggle"><div>Use Cases</div></div><nav class="nav-dropdown-menu w-dropdown-list"><div class="nav-colors-bg-wrapper"><div class="nav-white-bg"></div><div class="nav-grey-bg"></div></div><div class="content-container-4 header-nav v2 p-0"><div class="div-block-433 pt-10"><div class="us-html w-embed"><section class="frnv" aria-label="Customer video case studies">
304 <div class="frnv__inner"> 305 306 <header class="frnv__head"> 307 <div> 308 <p class="frnv__eyebrow">See Funraise in action</p> 309 </div> 310 <div class="frnv__nav" aria-hidden="false"> 311 <button class="frnv__arrow" data-dir="-1" type="button" aria-label="Previous videos"> 312 <svg viewBox="0 0 24 24" fill="none"><path d="M15 5l-7 7 7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> 313 </button> 314 <button class="frnv__arrow" data-dir="1" type="button" aria-label="Next videos"> 315 <svg viewBox="0 0 24 24" fill="none"><path d="M9 5l7 7-7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> 316 </button> 317 </div> 318 </header> 319 320 <div class="frnv__viewport"> 321 <ul class="frnv__track" id="frnv-track"> 322 <li class="frnv__item"> 323 <button class="frnv__card" type="button" data-media="auirnep9at" data-title="Liberty in North Korea" 324 style="--poster:url('https://embed-ssl.wistia.com/deliveries/788b7fff142b4c477f8b7ffe929a426d.jpg?image_crop_resized=720x960')" 325 aria-label="Play video: Liberty in North Korea"> 326 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 327 <span class="frnv__name">Liberty in North Korea</span> 328 </button> 329 </li> 330 <li class="frnv__item"> 331 <button class="frnv__card" type="button" data-media="9ud9rtsq0y" data-title="Bahati Foundation" 332 style="--poster:url('https://embed-ssl.wistia.com/deliveries/2df6ce3257104ed13105284788cf5a7d.jpg?image_crop_resized=720x960')" 333 aria-label="Play video: Bahati Foundation"> 334 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 335 <span class="frnv__name">Bahati Foundation</span> 336 </button> 337 </li> 338 <li class="frnv__item"> 339 <button class="frnv__card" type="button" data-media="f65h6noxj8" data-title="YMCA of Greater OKC" 340 style="--poster:url('https://embed-ssl.wistia.com/deliveries/c4d3bd25efce0f9182a1c69cb15693b8.jpg?image_crop_resized=720x960')" 341 aria-label="Play video: YMCA of Greater OKC"> 342 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 343 <span class="frnv__name">YMCA of Greater OKC</span> 344 </button> 345 </li> 346 <li class="frnv__item"> 347 <button class="frnv__card" type="button" data-media="pf77uoni1l" data-title="Liberty in North Korea" 348 style="--poster:url('https://embed-ssl.wistia.com/deliveries/386a4bcc31a982045dc55f20e5994053.jpg?image_crop_resized=720x960')" 349 aria-label="Play video: Liberty in North Korea"> 350 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 351 <span class="frnv__name">Liberty in North Korea</span> 352 </button> 353 </li> 354 <li class="frnv__item"> 355 <button class="frnv__card" type="button" data-media="iqbujj6kd5" data-title="Momento Foundation" 356 style="--poster:url('https://embed-ssl.wistia.com/deliveries/ce68e0bd013fdc7817166b3b826d8abe.jpg?image_crop_resized=720x960')" 357 aria-label="Play video: Momento Foundation"> 358 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 359 <span class="frnv__name">Momento Foundation</span> 360 </button> 361 </li> 362 <li class="frnv__item"> 363 <button class="frnv__card" type="button" data-media="8msd1b6kr2" data-title="Dressember" 364 style="--poster:url('https://embed-ssl.wistia.com/deliveries/f0dc9b3745aac6e0afc8f91f4990b7a1.jpg?image_crop_resized=720x960')" 365 aria-label="Play video: Dressember"> 366 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 367 <span class="frnv__name">Dressember</span> 368 </button> 369 </li> 370 <li class="frnv__item"> 371 <button class="frnv__card" type="button" data-media="cfkscchx2x" data-title="BLUE Missions" 372 style="--poster:url('https://embed-ssl.wistia.com/deliveries/190b246a6a212a91ec923384a890a026.jpg?image_crop_resized=720x960')" 373 aria-label="Play video: BLUE Missions">
374 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 375 <span class="frnv__name">BLUE Missions</span> 376 </button> 377 </li> 378 <li class="frnv__item"> 379 <button class="frnv__card" type="button" data-media="aagaqnuyng" data-title="CARE for AIDs" 380 style="--poster:url('https://embed-ssl.wistia.com/deliveries/535f50e10e968426ae6f73d15913efcd.jpg?image_crop_resized=720x960')" 381 aria-label="Play video: CARE for AIDs"> 382 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 383 <span class="frnv__name">CARE for AIDs</span> 384 </button> 385 </li> 386 <li class="frnv__item"> 387 <button class="frnv__card" type="button" data-media="mparjo9415" data-title="Gaston County YMCA" 388 style="--poster:url('https://embed-ssl.wistia.com/deliveries/25e5ba100f7a62265b60114a557e1549.jpg?image_crop_resized=720x960')" 389 aria-label="Play video: Gaston County YMCA"> 390 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 391 <span class="frnv__name">Gaston County YMCA</span> 392 </button> 393 </li> 394 <li class="frnv__item"> 395 <button class="frnv__card" type="button" data-media="6014ksj1xf" data-title="Maria Droste Counseling Center" 396 style="--poster:url('https://embed-ssl.wistia.com/deliveries/c8e4e74d78b09445c8d8cc83f8bc3c1e.jpg?image_crop_resized=720x960')" 397 aria-label="Play video: Maria Droste Counseling Center"> 398 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 399 <span class="frnv__name">Maria Droste Counseling Center</span> 400 </button> 401 </li> 402 <li class="frnv__item"> 403 <button class="frnv__card" type="button" data-media="1jsrh57u8w" data-title="BeLoved" 404 style="--poster:url('https://embed-ssl.wistia.com/deliveries/aab51eb41ddc727d46d70c1bbc86fb0b.jpg?image_crop_resized=720x960')" 405 aria-label="Play video: BeLoved"> 406 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 407 <span class="frnv__name">BeLoved</span> 408 </button> 409 </li> 410 </ul> 411 <span class="frnv__fade frnv__fade--l" aria-hidden="true"></span> 412 <span class="frnv__fade frnv__fade--r" aria-hidden="true"></span> 413 </div> 414 </div> 415 416 <!-- Lightbox (player injected on first open; moved to <body> on init) --> 417 <div class="frnv__lightbox" id="frnv-lightbox" role="dialog" aria-modal="true" aria-label="Video player" hidden> 418 <button class="frnv__close" type="button" aria-label="Close video"> 419 <svg viewBox="0 0 24 24" fill="none"><path d="M6 6l12 12M18 6L6 18" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg> 420 </button> 421 <div class="frnv__modal"> 422 <div class="frnv__player" id="frnv-player"></div> 423 </div> 424 </div> 425</section></div><div class="uc-css-hidden w-embed"><style> 426.frnv{ 427 --frnv-dark:#002042; --frnv-blue:#2979ff; --frnv-border:#e1e4e8; --frnv-radius:16px; 428 /* Sized as the LEFT region of the Use Cases flex row (sits next to "Case Studies"). 429 width gives the flex child a predictable basis; max-width:100% lets it shrink. */ 430 position:relative; width:810px; max-width:100%; padding:0; 431 font-family:inherit; color:var(--frnv-dark); 432 -webkit-font-smoothing:antialiased; box-sizing:border-box; overflow-x:clip; 433} 434.frnv *{box-sizing:border-box;} 435.frnv__inner{width:100%; max-width:810px; margin:0 auto;} 436 437/* ---------- Header ---------- */ 438.frnv__head{display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin:0 0 18px;} 439.frnv__eyebrow{font-weight:600; font-size:12px; letter-spacing:.06em; text-transform:uppercase; 440 color:var(--frnv-blue); margin:0 0 6px;} 441.frnv__title{font-weight:600; font-size:22px; line-height:1.14; letter-spacing:.2px; margin:0;} 442 443.frnv__nav{display:flex; gap:10px; flex:0 0 auto;} 444.frnv__arrow{width:40px; height:40px; border-radius:50%; border:1px solid var(--frnv-border); 445 background:#fff; color:var(--frnv-dark); cursor:pointer; display:flex; align-items:center; 446 justify-content:center; transition:background .2s ease, border-color .2s ease, opacity .2s ease;} 447.frnv__arrow svg{width:20px; height:20px;} 448.frnv__arrow:hover{background:var(--frnv-dark); color:#fff; border-color:var(--frnv-dark);} 449.frnv__arrow:disabled{opacity:.35; cursor:default;} 450.frnv__arrow:disabled:hover{background:#fff; color:var(--frnv-dark); border-color:var(--frnv-border);} 451.frnv__arrow:focus-visible{outline:2px solid var(--frnv-blue); outline-offset:3px;} 452 453/* ---------- Track (scroll-snap carousel) ---------- */ 454.frnv__viewport{position:relative;} 455.frnv__track{display:flex; gap:22px; list-style:none; margin:0; padding:6px 0 8px; 456 overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth; 457 -webkit-overflow-scrolling:touch; scrollbar-width:none; cursor:grab;} 458/* Edge fades â appear only when there is more to scroll on that side (hidden on mobile, see media query) */ 459.frnv__fade{position:absolute; top:0; bottom:0; width:56px; pointer-events:none; z-index:3; 460 opacity:0; transition:opacity .25s ease;} 461.frnv__fade--l{left:0; background:linear-gradient(to right, #fff 12%, rgba(255,255,255,0));} 462.frnv__fade--r{right:0; background:linear-gradient(to left, #fff 12%, rgba(255,255,255,0));} 463.frnv__viewport.has-prev .frnv__fade--l{opacity:1;} 464.frnv__viewport.has-next .frnv__fade--r{opacity:1;} 465.frnv__track::-webkit-scrollbar{display:none;} 466.frnv__track.is-dragging{cursor:grabbing; scroll-snap-type:none; scroll-behavior:auto; user-select:none;} 467.frnv__item{flex:0 0 auto; scroll-snap-align:start;} 468 469/* width 200px keeps the whole block <=~400px tall so it isn't clipped when the 470 menu is capped at 440px + overflow:hidden on screens >=1920px. */ 471.frnv__card{display:block;
471 width:200px; padding:0; border:0; background:transparent; 472 cursor:pointer; font:inherit; color:inherit; text-align:left;} 473.frnv__track.is-dragging .frnv__card{cursor:grabbing;} 474.frnv__poster{position:relative; display:block; width:100%; aspect-ratio:5/7; border-radius:var(--frnv-radius); 475 overflow:hidden; background:var(--frnv-border) var(--poster) center/cover no-repeat; 476 box-shadow:0 10px 30px rgba(0,32,66,.10); transition:transform .35s cubic-bezier(.16,.84,.34,1), box-shadow .35s ease;} 477.frnv__poster::after{content:""; position:absolute; inset:0; 478 background:linear-gradient(180deg, rgba(0,32,66,0) 55%, rgba(0,32,66,.28) 100%); opacity:.9;} 479.frnv__card:hover .frnv__poster{transform:translateY(-4px); box-shadow:0 16px 40px rgba(0,32,66,.18);} 480.frnv__card:focus-visible{outline:none;} 481.frnv__card:focus-visible .frnv__poster{outline:3px solid var(--frnv-blue); outline-offset:3px;} 482 483/* Play button */ 484.frnv__play{position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:2; 485 width:54px; height:54px; border-radius:50%; background:rgba(255,255,255,.92); 486 box-shadow:0 6px 20px rgba(0,32,66,.25); transition:transform .25s ease, background .25s ease;} 487.frnv__play::before{content:""; position:absolute; top:50%; left:53%; transform:translate(-50%,-50%); 488 border-style:solid; border-width:8px 0 8px 13px; border-color:transparent transparent transparent var(--frnv-blue);} 489.frnv__card:hover .frnv__play{transform:translate(-50%,-50%) scale(1.08); background:#fff;} 490 491.frnv__name{display:block; margin-top:10px; font-weight:600; font-size:14px; line-height:1.35; color:var(--frnv-dark);} 492 493/* ---------- Lightbox ---------- */ 494.frnv__lightbox{position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center; 495 padding:24px; background:rgba(0,32,66,.82); opacity:0; transition:opacity .25s ease;} 496.frnv__lightbox.is-open{opacity:1;} 497.frnv__lightbox[hidden]{display:none;} 498.frnv__modal{position:relative; width:100%; max-width:1040px; transform:scale(.97); transition:transform .3s cubic-bezier(.16,.84,.34,1);} 499.frnv__lightbox.is-open .frnv__modal{transform:none;} 500.frnv__player{position:relative; width:100%; aspect-ratio:16/9; background:#001329; border-radius:12px; overflow:hidden;} 501.frnv__player::after{content:""; position:absolute; top:50%; left:50%; width:42px; height:42px; margin:-21px; 502 border:3px solid rgba(255,255,255,.25); border-top-color:#fff; border-radius:50%; animation:frnv-spin 1s linear infinite;} 503.frnv__player.is-ready::after{display:none;} 504@keyframes frnv-spin{to{transform:rotate(360deg);}} 505.frnv__player wistia-player{display:block; width:100%; height:100%;} 506.frnv__close{position:absolute; top:18px; right:18px; z-index:1; width:44px; height:44px; border-radius:50%; 507 border:0; background:rgba(255,255,255,.14); color:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center; 508 transition:background .2s ease;} 509.frnv__close:hover{background:rgba(255,255,255,.28);} 510.frnv__close svg{width:24px; height:24px;} 511.frnv__close:focus-visible{outline:2px solid #fff; outline-offset:3px;} 512 513/* ---------- Responsive (nav collapses to vertical mobile menu at <=991px) ---------- */ 514@media (max-width:991px){ 515 .frnv__inner{max-width:100%;} 516 .frnv__title{font-size:21px;} 517 .frnv__head{margin-bottom:18px;} 518 .frnv__nav{display:none;} /* drag / swipe instead */ 519 .frnv__card{width:76vw; max-width:300px;} 520} 521@media (max-width:767px){ 522 .frnv__fade{display:none;} /* no edge fades on mobile */ 523} 524@media (max-width:479px){ 525 .frnv__title{font-size:19px;} 526 .frnv__card{width:80vw; max-width:300px;} 527 .frnv__name{font-size:14px;} 528} 529 530/* ---------- Reduced motion ---------- */ 531@media (prefers-reduced-motion:reduce){ 532 .frnv *{transition:none !important; animation:none !important;} 533 .frnv__track{scroll-behavior:auto;} 534 /* the lightbox is moved to <body>, so target it directly too */ 535 .frnv__lightbox, .frnv__lightbox *{transition:none !important; animation:none !important;} 536} 537</style></div><div class="uc-js-hidden w-embed w-script">
537<script> 538(function(){ 539 var cs = document.currentScript; // capture now; it's null inside the deferred callback 540 function init(){ 541 var root = (cs && cs.closest('section.frnv')) || document.querySelector('section.frnv'); 542 if(!root) return; 543 544 var track = root.querySelector('#frnv-track'); 545 var cards = [].slice.call(root.querySelectorAll('.frnv__card')); 546 var arrows = [].slice.call(root.querySelectorAll('.frnv__arrow')); 547 var viewport= root.querySelector('.frnv__viewport'); 548 var box = root.querySelector('#frnv-lightbox'); 549 var lastFocus = null, wistiaLoading = false; 550 var isDown = false, startX = 0, startScroll = 0, dragged = false; 551 552 /* ---- Move the lightbox to <body> so the nav's CSS transform doesn't clip a position:fixed overlay ---- */ 553 if(box && box.parentNode !== document.body){ document.body.appendChild(box); } 554 var player = box.querySelector('#frnv-player'); 555 var closeBtn = box.querySelector('.frnv__close'); 556 557 /* Keep the Webflow dropdown OPEN while the lightbox is up. The lightbox lives on 558 <body> (outside the dropdown), so Webflow treats clicks/focus on it as an 559 "outside" interaction and auto-closes the dropdown. Swallow those events so they 560 never bubble up to Webflow's document-level close handlers. */ 561 function swallow(e){ e.stopPropagation(); } 562 ['pointerdown','mousedown','mouseup','click'].forEach(function(ev){ box.addEventListener(ev, swallow); }); 563 564 /* ---- Carousel arrows ---- */ 565 function step(){ 566 var first = track.querySelector('.frnv__item'); 567 if(!first) return 200; 568 return first.getBoundingClientRect().width + 22; // card + gap 569 } 570 function updateArrows(){ 571 var max = track.scrollWidth - track.clientWidth - 1; 572 var atStart = track.scrollLeft <= 1, atEnd = track.scrollLeft >= max; 573 if(viewport){ // edge fades: left only after scrolling, right only when more remains 574 viewport.classList.toggle('has-prev', !atStart); 575 viewport.classList.toggle('has-next', !atEnd); 576 } 577 if(arrows.length){ arrows[0].disabled = atStart; arrows[1].disabled = atEnd; } 578 } 579 arrows.forEach(function(a){ 580 a.addEventListener('click', function(){ 581 track.scrollBy({ left: (+a.dataset.dir) * step() * 2, behavior:'smooth' }); 582 }); 583 }); 584 track.addEventListener('scroll', updateArrows, {passive:true}); 585 window.addEventListener('resize', updateArrows); 586 /* The embed loads while the dropdown is display:none, so the track has no 587 layout yet (scrollWidth/clientWidth = 0) and arrows/fades compute wrong. 588 A ResizeObserver fires when the track gains size (dropdown opens) -> recompute. */ 589 if(window.ResizeObserver){ new ResizeObserver(function(){ updateArrows(); }).observe(track); } 590 591 /* ---- Drag to scroll (mouse / pen; touch uses native swipe) ---- */ 592 track.addEventListener('pointerdown', function(e){ 593 if(e.pointerType === 'touch') return; 594 isDown = true; dragged = false; startX = e.clientX; startScroll = track.scrollLeft; 595 track.classList.add('is-dragging'); 596 }); 597 track.addEventListener('pointermove', function(e){ 598 if(!isDown) return; 599 var dx = e.clientX - startX; 600 if(Math.abs(dx) > 4) dragged = true; 601 track.scrollLeft = startScroll - dx; 602 }); 603 function endDrag(){ if(!isDown) return; isDown = false; track.classList.remove('is-dragging'); updateArrows(); } 604 track.addEventListener('pointerup', endDrag); 605 track.addEventListener('pointerleave', endDrag); 606 track.addEventListener('pointercancel', endDrag); 607 track.addEventListener('dragstart', function(e){ e.preventDefault(); }); // no native img/text drag 608 609 /* ---- Wistia loader (once; shared-safe with the homepage block) ---- */ 610 function ensureWistia(){ 611 if(window.customElements && customElements.get('wistia-player')) return; 612 if(wistiaLoading) return; 613 wistiaLoading = true; 614 var s = document.createElement('script'); 615 s.src = 'https://fast.wistia.com/player.js'; s.async = true; 616 document.head.appendChild(s); 617 } 618 619 /* ---- Lightbox ---- */ 620 function openVideo(card){ 621 var id = card.dataset.media; 622 lastFocus = card; 623 ensureWistia(); 624 player.classList.remove('is-ready'); 625 player.innerHTML = ''; 626 var el = document.createElement('wistia-player'); 627 el.setAttribute('media-id', id); 628 el.setAttribute('aspect', '1.7777777777777777'); 629 el.setAttribute('autoplay', 'true'); 630 el.addEventListener('wistia-player-ready', onReady, {once:true}); 631 player.appendChild(el); 632 // fallback in case the ready event name varies across versions 633 setTimeout(function(){ player.classList.add('is-ready'); }, 1200); 634 635 box.hidden = false;
636 document.body.style.overflow = 'hidden'; 637 requestAnimationFrame(function(){ box.classList.add('is-open'); }); 638 closeBtn.focus(); 639 /* capture phase + swallow so neither our Esc/focus handling nor Webflow's 640 reaches the dropdown's auto-close logic (focusing the body-level close 641 button moves focus out of the dropdown, which would otherwise close it). */ 642 document.addEventListener('keydown', onKey, true); 643 document.addEventListener('focusout', swallow, true); 644 } 645 function onReady(){ player.classList.add('is-ready'); } 646 647 function closeVideo(){ 648 box.classList.remove('is-open'); 649 document.removeEventListener('keydown', onKey, true); 650 document.removeEventListener('focusout', swallow, true); 651 document.body.style.overflow = ''; 652 var done = function(){ 653 box.hidden = true; 654 player.innerHTML = ''; // removing the player stops playback 655 box.removeEventListener('transitionend', done); 656 }; 657 box.addEventListener('transitionend', done); 658 setTimeout(done, 320); // safety if transitionend doesn't fire 659 if(lastFocus){ lastFocus.focus(); lastFocus = null; } 660 } 661 function onKey(e){ 662 if(e.key === 'Escape'){ e.stopPropagation(); closeVideo(); } // close video, not the dropdown 663 else if(e.key === 'Tab'){ e.preventDefault(); closeBtn.focus(); } // trap focus on close btn 664 } 665 666 cards.forEach(function(c){ c.addEventListener('click', function(){ if(dragged){ dragged=false; return; } openVideo(c); }); }); 667 closeBtn.addEventListener('click', closeVideo); 668 box.addEventListener('click', function(e){ if(e.target === box) closeVideo(); }); 669 670 updateArrows(); 671 } 672 673 /* Defer init until the whole document is parsed. The embed sits high in the nav, 674 so running mid-parse â and moving the lightbox to <body> â disturbs the HTML 675 parser / Webflow's interaction binding, which broke the mobile hamburger button. */ 676 if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', init); } 677 else { init(); } 678})(); 679</script>
679</div></div><div class="platform-dropdown-nav-wrapper-2-copy sm-hide"><a href="/category/case-studies" class="nav-link-heading">Case Studies</a><div class="div-block-432"><div class="w-dyn-list"><div role="list" class="collection-list-30 w-dyn-items"><div role="listitem" class="w-dyn-item"><a href="/blog/links-recurring-program-drives-56-of-their-online-revenue" aria-current="page" class="nav-collection-link w-inline-block w--current"><img loading="lazy" src="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a4106c1a046c2675390_LINK_CaseStudy_Blog_Header.jpg" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a4106c1a046c2675390_LINK_CaseStudy_Blog_Header-p-500.jpg 500w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a4106c1a046c2675390_LINK_CaseStudy_Blog_Header-p-800.jpg 800w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a4106c1a046c2675390_LINK_CaseStudy_Blog_Header-p-1080.jpg 1080w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a4106c1a046c2675390_LINK_CaseStudy_Blog_Header.jpg 1600w" class="nav-thumbnail"/><div class="nav-collection-text">LiNKâs Recurring Program Drives 56% of Their Online Revenue</div></a></div><div role="listitem" class="w-dyn-item"><a href="/blog/bahati-foundation-case-study" class="nav-collection-link w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a9236053f5d212d36731bfa_BahatiFoundationCaseStudy_Blog_Header.jpg" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a9236053f5d212d36731bfa_BahatiFoundationCaseStudy_Blog_Header-p-500.jpg 500w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a9236053f5d212d36731bfa_BahatiFoundationCaseStudy_Blog_Header-p-800.jpg 800w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a9236053f5d212d36731bfa_BahatiFoundationCaseStudy_Blog_Header-p-1080.jpg 1080w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a9236053f5d212d36731bfa_BahatiFoundationCaseStudy_Blog_Header.jpg 1600w" class="nav-thumbnail"/><div class="nav-collection-text">Bahati Foundation Used Funraise to Grow Online Donation Revenue 44% in a Single Year</div></a></div><div role="listitem" class="w-dyn-item"><a href="/blog/ymca-okc-p2p" class="nav-collection-link w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a752e61205f26561aaaf144_YMCAOKCCaseStudy_Blog_Header.jpg" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a752e61205f26561aaaf144_YMCAOKCCaseStudy_Blog_Header-p-500.jpg 500w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a752e61205f26561aaaf144_YMCAOKCCaseStudy_Blog_Header-p-800.jpg 800w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a752e61205f26561aaaf144_YMCAOKCCaseStudy_Blog_Header-p-1080.jpg 1080w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a752e61205f26561aaaf144_YMCAOKCCaseStudy_Blog_Header.jpg 1600w" class="nav-thumbnail"/><div class="nav-collection-text">YMCA OKC grew their online donor base 218% in less than a year with Funraise P2P</div></a></div></div></div></div></div></div></nav></div><div data-delay="300" data-hover="false" class="nav-dropdown w-dropdown"><div class="nav-link-2 dopdown-btn v2 w-dropdown-toggle"><div>Resources</div></div><nav class="nav-dropdown-menu w-dropdown-list"><div class="nav-colors-bg-wrapper"><div class="nav-white-bg"></div><div class="nav-grey-bg"></div></div><div class="content-container-4 header-nav v2 p-0 start"><div id="nav-tab-one" class="nav-platform-tab-2 div-block-429-copy-2 padding"><div class="div-block-436"><div class="feature-list-wrapper-2 pl-0 fr-chat-col"><div id="chat-now-nav" class="fr-chat-card"><div class="fr-chat-avatars"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a62115383029517895a8605_T1FJW7S3B-U64DAER5G-17e693fb8b71-512.avif" loading="lazy" alt="" class="fr-chat-avatar"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a621152cac723180f9359be_T1FJW7S3B-U03LU5NSSNQ-7d18228019b6-512.avif" loading="lazy" alt="" class="fr-chat-avatar"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a621152932e325ca0e05ee5_T1FJW7S3B-U0A1TG2LG4F-6bf307640bfc-512.avif" loading="lazy" alt="" class="fr-chat-avatar"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a621151c22620ebba118db1_T1FJW7S3B-U1FJG0NF6-53984e6266ec-512.avif" loading="lazy" alt="" class="fr-chat-avatar"/><span class="fr-chat-status"></span></div><div class="fr-chat-title">Weâre here to help!</div><div class="fr-chat-cta">Chat with us</div></div></div><div class="feature-list-wrapper-2 pl-0"><a href="/support" class="nav-link-heading">Support</a><a href="https://help.funraise.io/en/" target="_blank" class="dropdown-link-3 feature hover-bg-transparent w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6
679702bad89f47b87835c5930f_search.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Knowledge Base</div></div><div class="link-arrow feature">î</div></a><a href="https://university.funraise.org/" target="_blank" class="dropdown-link-3 feature hover-bg-transparent w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c59310_ondemand_video.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Funraise University</div></div><div class="link-arrow feature">î</div></a><a href="/for-developers" target="_blank" class="dropdown-link-3 feature hover-bg-transparent w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c5930b_code.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Developer Docs</div></div><div class="link-arrow feature">î</div></a><a href="https://funraise.stoplight.io/docs/funraise/44e37c461ba67-funraise-api" class="dropdown-link-3 feature hover-bg-transparent w-inline-block"><div class="feature-link-content"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a621f68681baf4f21bddad8_nav-icon-api.svg" loading="lazy" alt="Developers icon." class="feature-single-img"/><div class="dropdown-link-text feature-single">Funraise API</div></div><div class="link-arrow feature">î</div></a><a href="https://community.funraise.org/" target="_blank" class="dropdown-link-3 feature hover-bg-transparent w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c59308_forum.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Community Forum</div></div><div class="link-arrow feature">î</div></a></div><div class="feature-list-wrapper-2 padding"><h4 class="nav-link-heading">Strategy</h4><a href="/blog" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c5930f_search.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Blog!</div></div><div class="link-arrow feature">î</div></a><a href="/webinars" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/675956aecbb423cc934f7293_Vector.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Webinars</div></div><div class="link-arrow feature">î</div></a><a href="/podcast" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c5930e_mic.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Podcast</div></div><div class="link-arrow feature">î</div></a><a href="/category/case-studies" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c5930c_category-kopia.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Case Studies</div></div><div class="link-arrow feature">î</div></a><a href="/downloads" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c5930a_Group-kopia%202.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Guides</div></div><div class="link-arrow feature">î</div></a><a href="/appealai" target="_blank" class="dropdown-link-3 feature w-inline-block"><div class="feature-link-content"><img alt="" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/671a64991881136502dd27f4_Group.svg" class="feature-single-img"/><div class="dropdown-link-text feature-single">Appeal AI</div></div><div class="link-arrow feature">î</div></a></div><div class="feature-list-wrapper-2 padding fr-tools-col"><div class="fr-tools-head"><a href="/tools" class="nav-link-heading">Templates <!-- -->&<!-- --> Calculators</a></div><a href="/tools/online-raffle-generator" class="dropdown-link-3 feature hover-bg-transparent w-inline-block"><div class="feature-link-content"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a621f64dabdb49836bc9ac0_nav-icon-celebration.svg" loading="lazy" alt="" class="feature-single-img"/><div class="dropdown-link-text feature-single">Raffle Wheel Generator</div></div><div class="link-arrow feature">î</div></a><a href="/tools/donation-page-conversion-rate-calculator" class="dropdown-link-3 feature hover-bg-transparent w-inline-block"><div class="feature-link-content"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a621f65f2b4362dc0a53354_nav-icon-calculate.svg" loading="lazy" alt="" class="feature-single-img"/><div class="dropdown-link-text feature-single">Page Conversion Calculator</div></div><div class="link-arrow feature">î</div></a><a href="/tools/gift-range-chart-calculator" class="dropdown-link-3 feature hover-bg-transparent w-inline-block"><div class="feature-link-content"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a621f652c950f407f8b8ddb_nav-icon-redeem.svg" loading="lazy" alt="" class="feature-single-img"/><div class="dropdown-link-text feature-single">Gift Range Calculator</div></div><div class="link-arrow feature">î</div></a><a href="/tools/nonprofit-fundraising-event-planning-template" class="dropdown-link-3 feature hover-bg-transparent w-inline-block"><div class="feature-link-content"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a621f66175dd9d611806654_nav-icon-calendar-month.svg" loading="lazy" alt="" class="feature-single-img"/><div class="dropdown-link-text feature-single">Event Planning Template</div></div><div class="link-arrow feature">î</div></a><a href="/tools/nonprofit-development-plan-template" class="dropdown-link-3 feature hover-bg-transparent w-inline-block"><div class="feature-link-content"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a621f66cc63bb053520de83_nav-icon-trending-up.svg" loading="lazy" alt="" class="feature-single-img"/><div class="dropdown-link-text feature-single">Development Plan</div></div><div class="link-arrow feature">î</div></a><a href="/tools/nonprofit-board-meeting-agenda-minutes-template" class="dropdown-link-3 feature hover-bg-transparent w-inline-block"><div class="feature-link-content"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a621f67f2b4362dc0a534da_nav-icon-groups.svg" loading="lazy" alt="" class="feature-single-img"/><div class="dropdown-link-text feature-single">Board Meeting Template</div></div><div class="link-arrow feature">î</div></a><a href="/tools/donor-stewardship-plan-template" class="dropdown-link-3 feature hover-bg-transparent w-inline-block"><div class="feature-link-content"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a621f67616821f4aa97c747_nav-icon-volunteer-activism.svg" loading="lazy" alt="" class="feature-single-img"/><div class="dropdown-link-text feature-single">Stewardship Plan</div></div><div class="link-arrow feature">î</div></a></div></div></div></div></nav></div><a id="pricing" href="/reviews" class="nav-link-2 v2 w-nav-link">Reviews</a><a id="pricing" href="/pricing" class="nav-link-2 v2 w-nav-link">Pricing</a><div id="fr-notif-src" class="hide w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="w-dyn-item"><a id="banner-nav-pill" href="https://www.funraise.org/fundraising-events-event-watch" class="nav-link-2-copy v2-copy w-inline-block"><div class="link-block-40"><div class="text-block-1388">Product Release</div><div class="text-block-1383">The Future of Fundraising Events</div></div></a></div><div role="listitem" class="w-dyn-item"><a id="banner-nav-pill" href="https://www.funraise.org/blog/the-numbers-are-in-heres-how-funraise-customers-grew-online" class="nav-link-2-copy v2-copy w-inline-block"><div class="link-block-40"><div class="text-block-1388">Report</div><div class="text-block-1383">OMG! 26% average growth in 2025</div></div></a></div><div role="listitem" class="w-dyn-item"><a id="banner-nav-pill" href="https://www.funraise.org/blog/blue-missions-p2p" class="nav-link-2-copy v2-copy w-inline-block"><div class="link-block-40"><div class="text-block-1388">Case Study</div><div class="text-block-1383">BLUE Missions' $2M P2P campaign</div></div></a></div></div></div><div id="fr-notif-def-blog" class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="w-dyn-item"><a href="/blog/best-ai-tools-for-nonprofits" class="w-inline-block"><div>34 Best AI Tools for Your Nonprofitâs Every Need (Free and Paid) </div></a></div></div></div><div id="fr-notif-def-webinar" class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="w-dyn-item"><a href="/resources/fundraising-dashboards" class="w-inline-block"><div>Four fundraising dashboards that really matter</div></a></div></div></div><div id="fr-notif-def-case" class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="w-dyn-item"><a href="/blog/links-recurring-program-drives-56-of-their-online-revenue" aria-current="page" class="w-inline-block w--current"><div>LiNKâs Recurring Program Drives 56% of Their Online Revenue</div></a></div></div></div></nav><div class="nav-right v2"><div class="w-embed"><div class="fr-notif" data-seen="false"><button type="button" class="fr-notif-btn" aria-haspopup="true" aria-expanded="false" aria-label="What's new"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 8a6 6 0 0 0-12 0c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.7 21a2 2 0 0 1-3.4 0"/></svg>
679<span class="fr-notif-dot" aria-hidden="true"></span></button><div class="fr-notif-panel" role="region" aria-label="Latest from Funraise"><div class="fr-notif-panel-header"><div class="fr-notif-panel-title">What’s new</div></div><div class="fr-notif-items"></div><div class="fr-notif-footer"><a href="/subscribe" class="button-11 nav fr-notif-subscribe w-button">Subscribe to awesome<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></a></div></div></div></div><a href="https://platform.funraise.io/" class="nav-link-2 v2 pt-0 w-nav-link">Log in</a><div class="nav-btn-default-nav"><a id="nav_demo" href="/contact-sales" class="button-11 nav nav_contact_sales w-button">Get a Demo</a></div><div class="nav-free-btn-en"><a id="nav_demo_free" href="/free-signup" class="button-11 nav nav_contact_sales w-button">Sign up for Free</a><a id="nav_demo" href="/contact-sales" class="button white cta-secondary nav w-button">Contact Sales</a></div></div></div><div class="mobile-logo-box-2"><div class="nav-logo-wrapper"><a href="/" class="header-nav-logo mobile-logo w-nav-brand"><img width="120" src="https://cdn.prod.website-files.com/6702bad89f47b87835c58955/6702bad89f47b87835c5895c_Funraise_Logo_Dark.svg" alt="" class="mobile-logo-img"/></a><a href="/resources/giving-tuesday-toolkit" class="nav-link-2 v2 mobile center mobile-hide w-inline-block"><div class="link-block-40"><div class="text-block-1388">NEW!</div><div class="text-block-1383">#GivingTuesday 2023 Toolkit</div></div></a><div class="w-embed"><div class="fr-notif fr-notif--mobile" data-seen="false"><button type="button" class="fr-notif-btn" aria-haspopup="true" aria-expanded="false" aria-label="What's new"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 8a6 6 0 0 0-12 0c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.7 21a2 2 0 0 1-3.4 0"/></svg><span class="fr-notif-dot" aria-hidden="true"></span></button><div class="fr-notif-panel" role="region" aria-label="Latest from Funraise"><div class="fr-notif-panel-header"><div class="fr-notif-panel-title">What’s new</div></div><div class="fr-notif-items"></div><div class="fr-notif-footer"><a href="/subscribe" class="button-11 nav fr-notif-subscribe w-button">Subscribe to awesome<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></a></div></div></div></div><div class="nav-btn-default"><a id="nav_demo" href="/contact-sales" class="button-11 nav nav_contact_sales w-button">Get a Demo<br/></a></div></div></div><div class="funraise-menu-button-v2-open"><div class="text-block-1386">î</div></div></div></div></div><div class="w-embed"><style>#fr-notif-src,#fr-notif-def-blog,#fr-notif-def-webinar,#fr-notif-def-case{display:none !important}.fr-notif{position:relative;display:flex;align-items:center;margin:0 4px}.fr-notif-btn{position:relative;display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer;color:#1a1b1f;transition:background-color .15s ease}.fr-notif-btn:hover{background:rgba(41,121,255,.08)}.fr-notif-btn:focus-visible{outline:2px solid #2979ff;outline-offset:2px}.fr-notif-btn svg{display:block;transform-origin:50% 4px}.fr-notif-btn:hover svg{animation:fr-notif-ring .8s ease-in-out 1}@keyframes fr-notif-ring{0%{transform:rotate(0)}20%{transform:rotate(13deg)}40%{transform:rotate(-11deg)}60%{transform:rotate(7deg)}80%{transform:rotate(-4deg)}100%{transform:rotate(0)}}.fr-notif-dot{position:absolute;top:7px;right:8px;width:8px;height:8px;border-radius:50%;background:#ff3b30;pointer-events:none}.fr-notif-dot::after{content:'';position:absolute;inset:0;border-radius:50%;background:#ff3b30;animation:fr-notif-pulse 2s ease-out infinite}@keyframes fr-notif-pulse{0%{transform:scale(1);opacity:.6}70%,100%{transform:scale(2.2);opacity:0}
679}.fr-notif[data-seen='true'] .fr-notif-dot{display:none}.fr-notif-panel{position:absolute;top:calc(100% + 14px);right:-8px;width:372px;background:#fff;border-radius:16px;border:1px solid rgba(26,27,31,.07);box-shadow:0 24px 48px -12px rgba(1,59,168,.22),0 4px 12px rgba(26,27,31,.06);opacity:0;visibility:hidden;transform:translateY(-8px) scale(.96);transform-origin:top right;transition:opacity .22s ease,visibility .22s,transform .32s cubic-bezier(.34,1.56,.64,1);z-index:999;overflow:hidden}.fr-notif.is-open .fr-notif-panel{opacity:1;visibility:visible;transform:translateY(0) scale(1)}.fr-notif-panel-header{display:flex;align-items:center;gap:8px;padding:18px 18px 14px}.fr-notif-panel-title{font-size:15px;font-weight:700;color:#1a1b1f}.fr-notif-item,.fr-notif-footer{opacity:0;transform:translateY(10px);transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.fr-notif.is-open .fr-notif-item,.fr-notif.is-open .fr-notif-footer{opacity:1;transform:translateY(0)}.fr-notif.is-open .fr-notif-item:nth-child(1){transition-delay:.
67908s}.fr-notif.is-open .fr-notif-item:nth-child(2){transition-delay:.16s}.fr-notif.is-open .fr-notif-item:nth-child(3){transition-delay:.24s}.fr-notif.is-open .fr-notif-item:nth-child(4){transition-delay:.32s}.fr-notif.is-open .fr-notif-footer{transition-delay:.38s}.fr-notif-items{display:flex;flex-direction:column;gap:8px;padding:0 14px 16px}.fr-notif-item-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid rgba(26,27,31,.1);border-radius:10px;background:#fff;text-decoration:none;color:#1a1b1f;transition:border-color .15s ease,background-color .15s ease}.fr-notif-item-row:hover{border-color:#2979ff;background:#f4f8ff}.fr-notif-item-text{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.fr-notif-item-title{font-size:14px;line-height:1.45;font-weight:500}.fr-notif-item-row:hover .fr-notif-item-title{color:#2979ff}.fr-notif-item-arrow{margin-left:auto;flex-shrink:0;color:#2979ff;opacity:0;transform:translateX(-6px);transition:opacity .18s ease,transform .18s cubic-bezier(.22,1,.36,1)}.fr-notif-item-row:hover .fr-notif-item-arrow{opacity:1;transform:translateX(0)}.fr-notif-tag{font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#2979ff;white-space:nowrap}.fr-notif-footer{padding:14px;margin-top:0;border-top:1px solid rgba(26,27,31,.07)}.fr-notif-subscribe{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;box-sizing:border-box}.fr-notif-subscribe svg{transition:transform .18s cubic-bezier(.22,1,.36,1)}.fr-notif-subscribe:hover svg{transform:translateX(4px)}@media (prefers-reduced-motion:reduce){.fr-notif-dot::after,.fr-notif-btn:hover svg{animation:none}.fr-notif-panel,.fr-notif-item,.fr-notif-footer{transition-duration:.01s}}@media (min-width:992px){.fr-notif--mobile{display:none}}@media (max-width:991px){.nav-logo-wrapper .w-embed:has(.fr-notif--mobile){order:1;margin-left:8px;margin-right:45px}.nav-logo-wrapper .w-embed .fr-notif--mobile{margin:0}.nav-logo-wrapper .nav-btn-default,.nav-logo-wrapper .nav-free-btn{margin-left:auto;margin-right:0}}@media (max-width:767px){.fr-notif-panel{position:fixed;top:70px;left:12px;right:12px;width:auto}}.fr-tools-head{display:flex;align-items:center;margin-bottom:12px}.fr-tools-head .nav-link-heading{margin-bottom:0}.w-dropdown-list:has(.fr-tools-col) .nav-grey-bg{display:none}.w-dropdown-list:has(.fr-tools-col) .nav-white-bg{width:100%}@media (min-width:992px){.w-dropdown-list:has(.fr-chat-col) .nav-platform-tab-2{width:100%;justify-content:center;padding:0 40px}.w-dropdown-list:has(.fr-chat-col) .div-block-436{width:100%;max-width:1280px;margin:0 auto;justify-content:center}.w-dropdown-list:has(.fr-chat-col) .div-block-436>.feature-list-wrapper-2{flex:1 1 0;min-width:0;max-width:300px;padding:24px 28px !important}.w-dropdown-list:has(.fr-chat-col) .div-block-436>.fr-chat-col{padding-left:0 !important}.w-dropdown-list:has(.fr-chat-col) .div-block-436>.feature-list-wrapper-2.padding:not(.fr-tools-col){max-width:260px}.w-dropdown-list:has(.fr-chat-col) .div-block-436>.fr-tools-col{border-right:0;padding-right:0 !important}}.fr-chat-col{display:flex;align-items:stretch}.fr-chat-card{display:flex;flex-direction:column;justify-content:center;gap:14px;width:100%;padding:28px 24px;border-radius:16px;background:#2979ff;cursor:pointer;transition:transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s ease}.fr-chat-card:hover{transform:translateY(-2px);box-shadow:0 16px 32px -12px rgba(41,121,255,.55)}.fr-chat-avatars{display:flex;position:relative;width:fit-content}.fr-chat-avatar{width:54px;height:54px;border-radius:50%;object-fit:cover;border:2px solid #fff;background:#fff;transition:transform .25s cubic-bezier(.34,1.56,.64,1)}.fr-chat-avatar + .fr-chat-avatar{margin-left:-14px}.fr-chat-card:hover .fr-chat-avatar:nth-child(1){transform:translateY(-4px);transition-delay:0s}.fr-chat-card:hover .fr-chat-avatar:nth-child(2){transform:translateY(-4px);
679transition-delay:.05s}.fr-chat-card:hover .fr-chat-avatar:nth-child(3){transform:translateY(-4px);transition-delay:.1s}.fr-chat-card:hover .fr-chat-avatar:nth-child(4){transform:translateY(-4px);transition-delay:.15s}.fr-chat-status{position:absolute;right:-2px;bottom:2px;width:13px;height:13px;border-radius:50%;background:#2ec66d;border:2.5px solid #2979ff}.fr-chat-title{font-size:18px;font-weight:700;color:#fff;line-height:1.3}.fr-chat-cta{display:flex;align-items:center;gap:9px;color:#fff;font-size:14px;font-weight:700}.fr-chat-cta::after{content:'';width:7px;height:7px;flex-shrink:0;border-top:2px solid #fff;border-right:2px solid #fff;transform:rotate(45deg);transition:transform .18s cubic-bezier(.22,1,.36,1)}.fr-chat-card:hover .fr-chat-cta::after{transform:rotate(45deg) translate(2px,-2px)}</style></div><div class="w-embed"><style>@media (max-width:991px){body.fr-mnav-open{overflow:hidden}.fr-mnav-panel{position:fixed;top:72px;left:0;right:0;bottom:0;background:#fff;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:998;animation:fr-mnav-in .22s ease}.fr-mnav-panel .nav-menu{display:block !important;position:static !important;width:100% !important;height:auto !important;min-height:0 !important;max-height:none !important;margin:0 !important;transform:none !important;padding:4px 0 32px}@keyframes fr-mnav-in{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:none}}body.fr-mnav-open .nav-menu>.nav-logo{display:none}body.fr-mnav-open .nav-menu .w-dropdown{display:block;width:100%;position:static;margin:0}body.fr-mnav-open .nav-menu .w-dropdown-toggle,body.fr-mnav-open .nav-menu>.nav-link-2{display:flex;width:100%;justify-content:space-between;align-items:center;height:auto !important;min-height:0 !important;padding:15px 24px;margin:0;font-size:18px;line-height:1.4;font-weight:600;color:#1a1b1f;white-space:normal}body.fr-mnav-open .nav-menu>.w-dropdown + .w-dropdown .w-dropdown-toggle,body.fr-mnav-open .nav-menu>.nav-link-2{border-top:1px solid rgba(26,27,31,.06)}body.fr-mnav-open .nav-menu .w-dropdown-toggle::after{content:'';width:8px;height:8px;flex-shrink:0;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .2s ease}body.fr-mnav-open .nav-menu .w-dropdown-toggle.w--open{color:#2979ff}body.fr-mnav-open .nav-menu .w-dropdown-toggle.w--open::after{transform:rotate(45deg)}body.fr-mnav-open .nav-menu .nav-dropdown-menu{position:static !important;display:none;width:100%;min-width:0;box-shadow:none;padding:0 0 8px;transform:none !important;opacity:1 !important;height:auto !important;min-height:0 !important}body.fr-mnav-open .nav-menu .nav-dropdown-menu.w--open{display:block}body.fr-mnav-open .nav-dropdown-menu .nav-colors-bg-wrapper{display:none}body.fr-mnav-open .nav-menu .nav-dropdown-menu.w--open{background:transparent;padding-bottom:18px;border-bottom:1px solid rgba(26,27,31,.08)}body.fr-mnav-open .nav-dropdown-menu .content-container-4{display:flex !important;flex-direction:column !important;align-items:stretch !important;justify-content:flex-start !important;width:100%;max-width:none;margin:0;padding:0 24px !important}body.fr-mnav-open .nav-dropdown-menu .div-block-439,body.fr-mnav-open .nav-dropdown-menu .platform-dropdown-nav-wrapper-2,body.fr-mnav-open .nav-dropdown-menu .nav-platform-tab-2,body.fr-mnav-open .nav-dropdown-menu .div-block-436{display:block;width:100%;padding:0;margin:0}body.fr-mnav-open .nav-dropdown-menu .feature-list-wrapper-2{display:block;width:100%;max-width:none;padding:14px 0 0;border:0}body.fr-mnav-open .nav-dropdown-menu .feature-list-wrapper-2.sm-hide{display:block !important}body.fr-mnav-open .fr-tools-head{margin:18px 0 4px}body.fr-mnav-open .nav-dropdown-menu .nav-link-heading{display:block;margin:18px 0 6px;padding:0;border-bottom:0;font-size:11px;font-weight:800;letter-spacing:.08em;line-height:1.6;height:auto;min-height:0;text-transform:uppercase;color:#2979ff;text-decoration:none}body.fr-mnav-open .fr-tools-head .nav-link-heading{font-size:15px;font-weight:700;color:#1a1b1f;text-transform:none;letter-spacing:0;margin:0}body.fr-mnav-open .nav-dropdown-menu .dropdown-link-3{margin:0;padding:12px 0;width:100%}body.fr-mnav-open .nav-dropdown-menu .feature-link-content{padding:0;margin:0}body.fr-mnav-open .nav-dropdown-menu .feature-single-img{width:18px;height:18px}body.fr-mnav-open .nav-dropdown-menu .dropdown-link-text{font-size:15px;line-height:1.4}body.fr-mnav-open .nav-dropdown-menu .link-arrow.feature{display:none !important}body.fr-mnav-open .nav-dropdown-menu .div-block-439{display:flex !important;flex-direction:column !important;align-items:stretch !important;background:transparent;padding:0;margin:0;width:100%}body.fr-mnav-open .nav-dropdown-menu .div-block-439>.platform-dropdown-nav-wrapper-2{order:9;padding-top:8px}body.fr-mnav-open .nav-dropdown-menu .div-block-430 .arrow-link-wrap-3{margin:0 !important}body.fr-mnav-open .nav-dropdown-menu .arrow-link-wrap-3:has(>.link-container-2.hide){display:none}body.fr-mnav-open .nav-dropdown-menu .platform-dropdown-nav-wrapper-2{display:flex;flex-direction:column;align-items:flex-start;gap:2px;background:transparent;padding:0;margin:0}body.fr-mnav-open .nav-dropdown-menu .platform-dropdown-nav-wrapper-2 .arrow-link-wrap-3{padding:12px 0}body.fr-mnav-open .nav-dropdown-menu .arrow-link-txt-2{font-size:15px;line-height:1.4;font-weight:600;
679color:#1a1b1f}body.fr-mnav-open .nav-dropdown-menu .div-block-433{display:none}body.fr-mnav-open .nav-dropdown-menu .platform-dropdown-nav-wrapper-2-copy.sm-hide{display:flex !important;flex-direction:column;align-items:flex-start;background:transparent;padding:0;margin:0;width:100%}body.fr-mnav-open .nav-dropdown-menu .nav-collection-link{display:flex;align-items:center;gap:12px;padding:10px 0;width:100%;margin:0}body.fr-mnav-open .nav-dropdown-menu .w-dyn-list,body.fr-mnav-open .nav-dropdown-menu .w-dyn-items,body.fr-mnav-open .nav-dropdown-menu .w-dyn-item,body.fr-mnav-open .nav-dropdown-menu .div-block-432{display:block;height:auto !important;min-height:0 !important;margin:0 !important;padding:0 !important}body.fr-mnav-open .nav-dropdown-menu .nav-collection-link img{width:64px;height:auto;flex-shrink:0;border-radius:6px}body.fr-mnav-open .nav-dropdown-menu .nav-collection-text{font-size:14px;line-height:1.4}body.fr-mnav-open .nav-dropdown-menu .platform-dropdown-nav-wrapper-2{height:auto !important;min-height:0 !important;border:0 !important}body.fr-mnav-open .nav-dropdown-menu .platform-dropdown-nav-wrapper-2-copy{border:0 !important}body.fr-mnav-open .nav-dropdown-menu .div-block-439{height:auto !important;min-height:0 !important;border:0}body.fr-mnav-open .nav-dropdown-menu .div-block-430{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:0;margin:0}body.fr-mnav-open .fr-chat-card{flex-direction:row;align-items:center;gap:6px 14px;flex-wrap:wrap;justify-content:flex-start;border-radius:14px;padding:16px;margin:4px 0 0}body.fr-mnav-open .fr-chat-avatar{width:38px;height:38px}body.fr-mnav-open .fr-chat-status{width:11px;height:11px;border-width:2px}body.fr-mnav-open .fr-chat-title{font-size:15px;flex:1;min-width:0}body.fr-mnav-open .fr-chat-cta{width:100%;font-size:13px}body.fr-mnav-open .nav-menu .nav-right{display:flex !important;flex-direction:column;align-items:stretch;justify-content:flex-start;height:auto !important;min-height:0;gap:12px;padding:20px 24px 8px;border-top:1px solid rgba(26,27,31,.08);margin-top:12px}body.fr-mnav-open .nav-menu .nav-right,body.fr-mnav-open .nav-menu .nav-right *{position:static !important;transform:none !important;left:auto !important;right:auto !important;top:auto !important;bottom:auto !important}body.fr-mnav-open .nav-menu .nav-right>div{flex-direction:column;gap:12px;margin:0}body.fr-mnav-open .nav-menu .nav-right .w-button{width:100%;text-align:center;padding:12px 16px;font-size:15px}body.fr-mnav-open .nav-menu .nav-right>.nav-link-2{display:flex !important;padding:8px 0;font-size:16px;height:auto !important;min-height:0 !important}body.fr-mnav-open .nav-menu .nav-right .fr-notif{display:none}body.fr-mnav-open .funraise-menu-button-v2-open .text-block-1386{visibility:hidden}body.fr-mnav-open .funraise-menu-button-v2-open::before,body.fr-mnav-open .funraise-menu-button-v2-open::after{content:'';position:absolute;left:50%;top:50%;width:22px;height:2.5px;background:#1a1b1f;border-radius:2px}body.fr-mnav-open .funraise-menu-button-v2-open::before{transform:translate(-50%,-50%) rotate(45deg)}body.fr-mnav-open .funraise-menu-button-v2-open::after{transform:translate(-50%,-50%) rotate(-45deg)}}</style></div><div class="w-embed"><style>/* Mobile bar CTA: always Get a Demo. Wins over site custom code (display:none default + geo script inline styles). 2026-08-31 */@media (max-width:991px){.nav-logo-wrapper .nav-btn-default{display:flex !important}.nav-logo-wrapper .nav-free-btn{display:none !important}}</style></div><div class="w-embed w-script">
679<script> 680(function(){var boot=function(){ 681(function () { 682 // ===== ZRODLO TRESCI ===== 683 // 1) RECZNY WYBOR marketingu: itemy kolekcji "Notifications Navigations" 684 // z wlaczonym "Show in bell" â ukryta lista #fr-notif-src (max 4). 685 // 2) DEFAULT (gdy nic nie wybrano): najnowszy blog / webinar / case study 686 // z ukrytych list #fr-notif-def-blog / -webinar / -case (limit 1). 687 // 3) Fallback awaryjny ponizej â gdy zadna lista nie istnieje w DOM. 688 var NOTIF_ITEMS = [ 689 { tag: 'Blog', title: 'Essential Fundraising Dashboards', url: '/resources/fundraising-dashboards' }, 690 { tag: 'Webinar', title: 'Fundraising Dashboards â live walkthrough', url: '/webinars/fundraising-dashboards' }, 691 { tag: 'New', title: 'The Must-Have Annual Report Manual', url: '/resources/annual-report-manual' } 692 ]; 693 // reczny wybor: a > .link-block-40 > .text-block-1388 (tag) + .text-block-1383 (tytul) 694 var manualItems = [].slice.call(document.querySelectorAll('#fr-notif-src a[href]')) 695 .map(function (a) { 696 var tagEl = a.querySelector('.text-block-1388') || a.children[0]; 697 var titleEl = a.querySelector('.text-block-1383') || a.children[1]; 698 return { 699 tag: tagEl ? tagEl.textContent.trim() : '', 700 title: titleEl ? titleEl.textContent.trim() : '', 701 url: a.getAttribute('href') 702 }; 703 }) 704 .filter(function (i) { return i.title && i.url; }) 705 .slice(0, 4); 706 // defaulty: tytul = caly tekst linku, tag nadaje JS 707 function readDefault(sel, tag) { 708 var a = document.querySelector(sel + ' a[href]'); 709 if (!a) return null; 710 var title = a.textContent.replace(/\s+/g, ' ').trim(); 711 return title ? { tag: tag, title: title, url: a.getAttribute('href') } : null; 712 } 713 var defaultItems = [ 714 readDefault('#fr-notif-def-blog', 'Blog'), 715 readDefault('#fr-notif-def-webinar', 'Webinar'), 716 readDefault('#fr-notif-def-case', 'Case study')
717 ].filter(Boolean); 718 // 1 wybrany item = wskakuje NA POCZATEK przed defaulty (bez duplikatu URL); 719 // 2+ wybrane = zastepuja defaulty w calosci. 720 // Dedupe po pathname: reczne linki sa absolutne, defaulty wzgledne. 721 function urlPath(u) { 722 try { return new URL(u, location.origin).pathname.replace(/\/+$/, ''); } catch (e) { return u; } 723 } 724 if (manualItems.length >= 2) { 725 NOTIF_ITEMS = manualItems; 726 } else if (manualItems.length === 1) { 727 NOTIF_ITEMS = manualItems 728 .concat(defaultItems.filter(function (d) { return urlPath(d.url) !== urlPath(manualItems[0].url); })) 729 .slice(0, 4); 730 } else if (defaultItems.length) { 731 NOTIF_ITEMS = defaultItems; 732 } 733 // ========================= 734 735 var roots = [].slice.call(document.querySelectorAll('.fr-notif')); 736 if (!roots.length) return; 737 738 // klucz wersji tresci â kropka wraca TYLKO gdy tresc sie zmieni. 739 // localStorage: odkliniecie trzyma sie w przegladarce usera bezterminowo 740 // (nie per sesja), az contentKey przestanie sie zgadzac. 741 var contentKey = NOTIF_ITEMS.map(function (i) { return i.url + '|' + i.title; }).join('~'); 742 var STORAGE_KEY = 'fr-notif-seen'; 743 var seen = false; 744 try { seen = localStorage.getItem(STORAGE_KEY) === contentKey; } catch (e) {} 745 746 function markSeen() { 747 roots.forEach(function (r) { r.setAttribute('data-seen', 'true'); }); 748 try { localStorage.setItem(STORAGE_KEY, contentKey); } catch (e) {} 749 } 750 751 function renderItems(list) { 752 NOTIF_ITEMS.forEach(function (item) { 753 var a = document.createElement('a'); 754 a.href = item.url; 755 a.className = 'fr-notif-item fr-notif-item-row'; 756 a.innerHTML = 757 '<span class="fr-notif-item-text">' + 758 '<span class="fr-notif-tag"></span>' + 759 '<span class="fr-notif-item-title"></span>' + 760 '</span>' + 761 '<svg class="fr-notif-item-arrow" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg>'; 762 a.querySelector('.fr-notif-tag').textContent = item.tag; 763 if (!item.tag) a.querySelector('.fr-notif-tag').style.display = 'none'; 764 a.querySelector('.fr-notif-item-title').textContent = item.title; 765 list.appendChild(a); 766 }); 767 } 768 769 function setOpen(root, open) { 770 root.classList.toggle('is-open', open); 771 var btn = root.querySelector('.fr-notif-btn'); 772 if (btn) btn.setAttribute('aria-expanded', open ? 'true' : 'false'); 773 // <=767px panel jest fixed pod navbarem; pozycja navbara zalezy od strony 774 // (promo bar) â mierzymy dol .w-nav zamiast sztywnego top z CSS 775 if (open && window.matchMedia('(max-width: 767px)').matches) { 776 var bar = root.closest('.w-nav') || document.querySelector('.w-nav'); 777 var panel = root.querySelector('.fr-notif-panel'); 778 if (bar && panel) { 779 panel.style.top = Math.max(0, Math.round(bar.getBoundingClientRect().bottom) + 8) + 'px'; 780 } 781 } 782 if (open) markSeen(); 783 } 784 785 function closeAll() { 786 roots.forEach(function (r) { setOpen(r, false); }); 787 } 788 789 roots.forEach(function (root) { 790 root.setAttribute('data-seen', seen ? 'true' : 'false'); 791 renderItems(root.querySelector('.fr-notif-items')); 792 var btn = root.querySelector('.fr-notif-btn'); 793 btn.addEventListener('click', function (e) { 794 e.stopPropagation(); 795 var willOpen = !root.classList.contains('is-open'); 796 // otwarty panel mobilny przykrylby dropdown (stacking context navbara) 797 // â najpierw zamknij menu klikiem w hamburger (obsluguje mobile-nav.js) 798 if (willOpen && document.body.classList.contains('fr-mnav-open')) { 799 var burger = document.querySelector('.funraise-menu-button-v2-open'); 800 if (burger) burger.click(); 801 } 802 closeAll(); 803 setOpen(root, willOpen); 804 }); 805 }); 806 807 document.addEventListener('click', function (e) { 808 var inside = roots.some(function (r) { return r.contains(e.target); }); 809 if (!inside) closeAll(); 810 }); 811 document.addEventListener('keydown', function (e) { 812 if (e.key === 'Escape') closeAll(); 813 }); 814 815 // podglad do demo: #notif-open otwiera pierwszy widoczny dzwonek 816 if (location.hash === '#notif-open') { 817 var visible = roots.filter(function (r) { return r.offsetParent !== null; })[0] || roots[0]; 818 setOpen(visible, true); 819 } 820})(); 821 822(function () { 823 // Jedna nawigacja: hamburger otwiera desktopowy .nav-menu jako panel. 824 // Na czas otwarcia menu i nav-right sa przenoszone (ten sam wezel, 825 // zero duplikacji) do <body>/<menu>, po zamknieciu wracaja na miejsce. 826 var mq = window.matchMedia('(max-width: 991px)'); 827 var btn = document.querySelector('.funraise-menu-button-v2-open'); 828 var menu = document.querySelector('.nav-menu'); 829 var navRight = document.querySelector('.nav-right'); 830 if (!btn || !menu) return; 831 832 var menuHome = menu.parentElement; 833 var menuNext = menu.nextSibling; 834 var navRightHome = navRight ? navRight.parentElement : null; 835 836 // wlasny fixed kontener â neutralizuje site'owe/webflow style pozycjonowania .w-nav-menu 837 var panel = document.createElement('div'); 838 panel.className = 'fr-mnav-panel'; 839 840 function isOpen() { return document.body.classList.contains('fr-mnav-open'); } 841 842 function open() { 843 // symetria z dzwonkiem: otwarcie menu domyka otwarty dropdown notyfikacji 844 document.querySelectorAll('.fr-notif.is-open .fr-notif-btn').forEach(function (b) { b.click(); }); 845 // panel zaczyna sie pod paskiem nawigacji; jego pozycja rozni sie miedzy 846 // stronami (promo bar nad navbarem), a navbar jest fixed â mierzymy jego dol 847 var bar = btn.closest('.w-nav') || document.querySelector('.promo-navbar-wrapper .w-nav'); 848 var top = 72; 849 if (bar) top = Math.max(0, Math.round(bar.getBoundingClientRect().bottom)); 850 panel.style.top = top + 'px'; 851 document.body.classList.add('fr-mnav-open'); 852 document.body.appendChild(panel); 853 panel.appendChild(menu); // portal: ten sam wezel, zero duplikacji 854 if (navRight) menu.appendChild(navRight); 855 } 856 857 function close() { 858 document.body.classList.remove('fr-mnav-open'); 859 // zwin otwarte akordeony (webflow trzyma stan w klasach w--open) 860 menu.querySelectorAll('.w--open').forEach(function (el) { el.classList.remove('w--open'); }); 861 if (navRight && navRightHome) navRightHome.appendChild(navRight); 862 menuHome.insertBefore(menu, menuNext); 863 if (panel.parentElement) panel.parentElement.removeChild(panel); 864 } 865 866 btn.addEventListener('click', function (e) { 867 e.preventDefault(); 868 e.stopPropagation(); 869 if (isOpen()) close(); else open(); 870 }); 871 872 // zachowanie akordeonow w panelu: jeden otwarty naraz + otwarty wjezdza pod 873 // gorna krawedz; tap w link = zamkniecie panelu (istotne dla linkow #kotwica). 874 // Rodzenstwo domykamy zdejmujac w--open wprost (jak w close()) â programowe
875 // klikanie toggli walczy z opoznieniami data-delay Webflowa. 876 menu.addEventListener('click', function (e) { 877 if (!mq.matches || !isOpen()) return; 878 var toggle = e.target.closest('.w-dropdown-toggle'); 879 if (toggle) { 880 // Webflow przelacza w--open swoim handlerem â sprawdzamy chwile pozniej 881 setTimeout(function () { 882 if (!toggle.classList.contains('w--open')) return; 883 var dd = toggle.closest('.w-dropdown'); 884 panel.querySelectorAll('.w--open').forEach(function (el) { 885 if (dd && !dd.contains(el)) el.classList.remove('w--open'); 886 }); 887 var y = toggle.getBoundingClientRect().top - panel.getBoundingClientRect().top + panel.scrollTop; 888 panel.scrollTo({ top: Math.max(0, y - 6), behavior: 'smooth' }); 889 }, 60); 890 return; 891 } 892 if (e.target.closest('a[href]')) close(); 893 }); 894 895 document.addEventListener('keydown', function (e) { 896 if (e.key === 'Escape' && isOpen()) close(); 897 }); 898 899 // powrot na desktop = sprzatanie 900 mq.addEventListener('change', function () { if (!mq.matches && isOpen()) close(); }); 901})(); 902 903}; 904if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",boot);}else{boot();}})(); 905</script>
905</div><div class="w-embed w-script"><style> 906.fee-banner:hover .fee-banner-text{text-decoration:underline} 907</style>
908<script> 909document.addEventListener('DOMContentLoaded',function(){ 910 var nav=document.querySelector('.promo-navbar-wrapper'); 911 var banner=document.querySelector('.fee-banner'); 912 if(!nav||!banner)return; 913 var t=false; 914 function apply(){nav.style.marginTop=(-Math.min(banner.offsetHeight,window.pageYOffset||0))+'px'} 915 window.addEventListener('scroll',function(){if(t)return;t=true;requestAnimationFrame(function(){apply();t=false})},{passive:true}); 916 window.addEventListener('resize',apply); 917 apply(); 918}); 919</script>
919</div></div></div><div class="resources-hub-navbar"><div class="content-container w-container"><div class="div-block-191"><div class="div-block-200"><a href="/blog" class="link-block-13 w-inline-block"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/63e223a4a45cebb5f8173ac8_Group%2014.svg" loading="lazy" width="80" height="60" alt="Funraise blog logo." class="image-120"/></a><div class="div-block-192"><div data-hover="true" data-delay="0" class="dropdown-2 w-dropdown"><div class="blog-link-item blog-link-dropdown w-dropdown-toggle"><div class="w-icon-dropdown-toggle"></div><div>Topics</div></div><nav class="topics-wrapper w-dropdown-list"><a href="/category/fundraising-ideas" class="topic w-dropdown-link">Fundraising Ideas<br/></a><a href="/category/updates" class="topic w-dropdown-link">Nonprofit Trends <br/></a><a href="/category/best-practices" class="topic w-dropdown-link">How To Nonprofit <br/></a><a href="/category/donation-forms" class="topic w-dropdown-link">The Giving Experience <br/></a><a href="/category/funding-awesome" class="topic w-dropdown-link">Awesome Examples<br/></a><a href="/category/humane-hiring" class="topic w-dropdown-link">Hiring + Jobs<br/></a><a href="/category/ceo-insights" class="topic w-dropdown-link">Leadership & Vision</a><a href="/category/peer-to-peer-fundraising" class="topic w-dropdown-link">P2P Fundraising</a><a href="/category/donor-relations-management" class="topic w-dropdown-link">Donor Engagement</a><a href="/category/tech-report" class="topic w-dropdown-link">Reports and Statistics</a></nav></div><a href="/downloads" class="blog-link-item">Downloads</a><a href="/webinars" class="blog-link-item">Webinars</a><a href="/podcast" class="blog-link-item">Podcast</a><a href="/category/case-studies" class="blog-link-item">Case Studies</a><a href="/subscribe" class="blog-link-item">Subscribe</a></div></div><div><form action="/search" class="search-filed-copy w-form"><input class="search-input w-input" ty="" maxlength="256" name="query" placeholder="Search" type="search" id="search" required=""/><input type="submit" class="button button-search w-button" value="Search"/></form></div><div class="html-embed-11 w-embed"><div><form action="/search" class="search-filed w-form" data-hs-cf-bound="true"><input type="search" class="search-input w-input" maxlength="256" name="query" placeholder="Search" id="search" required=""><input type="submit" value="Search" class="button button-search w-button"></form></div></div></div></div></div><div class="content-section header-section with-promo mt-4 pt-0 mt-10"><div class="content-container"><div class="blog-post-grid"><div id="w-node-_99fb630b-a0bf-c76b-4360-2adfe1812290-7eea508f" class="video-embed-wrap"><div id="w-node-b370c08f-14ef-25fe-bb05-304fe9ffe28f-7eea508f" class="blog-headline-box"><h1 class="blog-headline">LiNKâs Recurring Program Drives 56% of Their Online Revenue</h1><img src="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a4106c1a046c2675390_LINK_CaseStudy_Blog_Header.jpg" loading="eager" width="Auto" height="Auto" alt="LiNK logo and pictures of Koreans on a black background" sizes="100vw" srcset="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a4106c1a046c2675390_LINK_CaseStudy_Blog_Header-p-500.jpg 500w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a4106c1a046c2675390_LINK_CaseStudy_Blog_Header-p-800.jpg 800w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a4106c1a046c2675390_LINK_CaseStudy_Blog_Header-p-1080.jpg 1080w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6aac6a4106c1a046c2675390_LINK_CaseStudy_Blog_Header.jpg 1600w" class="card blog-main-image-box mt-25"/><div class="post-details-box mt-0"><a href="/author/erin-booker" class="blog-post-author w-inline-block"><img width="34" height="34" alt="" src="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/5de58642130f7d42e907cd95_Erin%20headshot.webp" class="author-avatar"/><div class="author-name"><div class="text-block-43">Erin Booker</div></div></a><div class="blog-post-details"><div class="text-block-7">â¢</div><div class="published-date">September 17, 2026</div><div class="text-block-7">â¢</div><div>4 minutes</div></div><div class="bread-crumbs-wrapper"><a href="/blog" class="bread-crumb-link-pill w-inline-block"><div class="bread-crumb-link-pill-text">Nonprofit Trends</div></a><div class="html-embed-6 w-embed"><div id="bread" class="Bread-Crumb-Link-Pill"> 920 <a href="/category/case-studies" class="bread-crumb-link-pill w-inline-block"> 921 <div class="Bread-Crumb-Link-Pill-Text">Case Studies</div> 922 </a> 923</div></div></div></div><div class="div-block-379 w-condition-invisible"><div class="div-block-381"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/66defb35ec315aad2f4e3c57_Group%2033.webp" loading="lazy" alt="" class="image-217"/></div><div class="div-block-380"><div class="text-block-1364">This article is part of a series</div><div class="text-block-1365">Keep learning with related articles.</div></div><div class="w-dyn-list"><div class="empty-state-10 w-dyn-empty"><div class="text-block-1400">Soon..</div></div></div></div></div><div class="blog-content-container"><div class="blog-content-box">
923<div id="toc-content" class="blog-content funraise-rich-content w-richtext"><p>Liberty in North Korea (LiNK) believes they will see a free North Korea in their lifetime, and every step they take is a step toward that day.</p><p>LiNK has been a Funraise customer from nearly the beginning. Over the years, the partnership has grown alongside the organization, through campaigns, galas, platform updates, and a shared commitment to figuring out what nonprofit fundraising should look like. Chelsea Quinn, Assistant Director of Growth, has been in the middle of that work.</p><figure style="padding-bottom:56.206088992974244%" class="w-richtext-align-fullwidth w-richtext-figure-type-video"><div><iframe src="https://www.youtube.com/embed/xgUk-Op2iTM" title="LiNK's Recurring Program Drives 56% of Their Online Revenue" scrolling="no" frameborder="0" allowfullscreen="true"></iframe></div></figure><h2>The Challenge</h2><p>LiNKâs fundraising challenge wasnât finding donors; it was building something that could sustain the mission without depending on any one source.</p><p>Like many nonprofits, LiNK had learned firsthand what it feels like when a major funding relationship shifts. As a result, they turned to diversified, predictable revenue as their fundraising strategy North Star.</p><p>A self-sustaining fundraising engine requires more than a good campaign or two. It requires infrastructure built on purpose: a platform that can handle peer-to-peer fundraising at scale, convert one-time donors into recurring supporters, manage events, and feed clean data into the systems the team already relies on â¦without ballooning into a second job for the people behind the scenes.</p><p>LiNK also needed a platform that felt as intuitive to a new staffer on day one as it did to someone whoâd been using it for years. A six-month learning curve isnât gonna cut it.</p><div class="w-embed"><div class="funraise-scope"> 924 <div class="blog-banner quote"> 925 <div class="blog-banner__content"> 926 <p>âWith some other platforms Iâve used historically, it can take a really long time to get everybody onboarded. You have a new staffer start, and it takes them six months to really know whatâs going on. But with Funraise, when people start, they can dive in immediately. Theyâre building reports, building giving forms, doing all of it. Itâs just really second nature.â</p> 927 <p id="blog-banner__author" class="blog-banner__author">Chelsea Quinn</p> 928 <p id="blog-banner__role" class="blog-banner__role"> Assistant Director of Growth, Liberty in North Korea</p> 929 </div> 930 <div class="blog-banner__quote-icon"> 931 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/684725307efd8468411699dc_%E2%80%9C.svg" alt="Quote" /> 932 </div> 933 </div> 934 </div></div><p>âWith some other platforms Iâve used historically, it can take a really long time to get everybody onboarded. You have a new staffer start, and it takes them six months to really know whatâs going on. But with Funraise, when people start, they can dive in immediately. Theyâre building reports, building giving forms, doing all of it. Itâs just really second nature.â â Chelsea Quinn, Assistant Director of Growth, Liberty in North Korea</p><h2>The Solution</h2><p>Thereâs a reason LiNK and Funraise get along so well: weâre the same people. Been through the same things, faced the same obstacles, celebrated the same wins. </p><div class="w-embed"><div class="funraise-scope"> 935 <div class="blog-banner quote"> 936 <div class="blog-banner__content"> 937 <p>âWhen weâre working with Funraise, youâre talking to people who understand the challenges that nonprofits deal withâthe budget constraints, the staff constraints, just the way things go. Itâs been really awesome to get to work face-to-face with people who really get what we need.â</p> 938 <p id="blog-banner__author" class="blog-banner__author">Chelsea Quinn</p>
939 <p id="blog-banner__role" class="blog-banner__role"> Assistant Director of Growth, Liberty in North Korea</p> 940 </div> 941 <div class="blog-banner__quote-icon"> 942 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/684725307efd8468411699dc_%E2%80%9C.svg" alt="Quote" /> 943 </div> 944 </div> 945 </div></div><p>âWhen weâre working with Funraise, youâre talking to people who understand the challenges that nonprofits deal withâthe budget constraints, the staff constraints, just the way things go. Itâs been really awesome to get to work face to face with people who really get what we need.ââ Chelsea Quinn, Assistant Director of Growth, Liberty in North Korea</p><p>Funraise gives LiNK the tools to run all of their fundraising: peer-to-peer campaigns, events, recurring giving, and custom giving formsâall feeding into a clean, reliable Salesforce integration that keeps the whole team working from the same information.</p><p>The event giving forms have been a particular win. When LiNKâs development team hosts in-person events and needs a fast, trackable way for attendees to give on the spot, they can spin it up in minutes, and nothing falls through the cracks.</p><div class="w-embed"><div class="funraise-scope"> 946 <div class="blog-banner quote"> 947 <div class="blog-banner__content"> 948 <p>âWeâve been able to use Funraise to create giving forms custom to those events. Itâs so simple. We can duplicate a template weâve already built, send people a QR code to make a gift right there on their phone before they leave the room. Itâs made it so easy to track, and then we can do actual good stewardship and really follow up with people.â</p> 949 <p id="blog-banner__author" class="blog-banner__author">Chelsea Quinn</p> 950 <p id="blog-banner__role" class="blog-banner__role"> Assistant Director of Growth, Liberty in North Korea</p> 951 </div> 952 <div class="blog-banner__quote-icon"> 953 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/684725307efd8468411699dc_%E2%80%9C.svg" alt="Quote" /> 954 </div> 955 </div> 956 </div></div><p>âWeâve been able to use Funraise to create giving forms custom to those events. Itâs so simple. We can duplicate a template weâve already built, send people a QR code to make a gift right there on their phone before they leave the room. Itâs made it so easy to track, and then we can do actual good stewardship and really follow up with people.ââ Chelsea Quinn, Assistant Director of Growth, Liberty in North Korea</p><p>And when LiNK has had ideas, feedback, or feature requests, they know where to turn.</p><div class="w-embed"><div class="funraise-scope"> 957 <div class="blog-banner quote"> 958 <div class="blog-banner__content"> 959 <p>âAnytime you have a question or an idea, a real person is going to get back to you. I always feel like theyâre considering it, and weâve definitely seen things come out in Funraise that were things we specifically were excited about and had a need for.â</p> 960 <p id="blog-banner__author" class="blog-banner__author">Chelsea Quinn</p> 961 <p id="blog-banner__role" class="blog-banner__role"> Assistant Director of Growth, Liberty in North Korea</p> 962 </div> 963 <div class="blog-banner__quote-icon"> 964 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/684725307efd8468411699dc_%E2%80%9C.svg" alt="Quote" /> 965 </div> 966 </div> 967 </div></div><p>âAnytime you have a question or an idea, a real person is going to get back to you. I always feel like theyâre considering it, and weâve definitely seen things come out in Funraise that were things we specifically were excited about and had a need for.ââ Chelsea Quinn, Assistant Director of Growth, Liberty in North Korea</p><h2>The Result</h2><p>LiNK has built an extraordinarily well-rounded fundraising programâand their numbers show their success across multiple channels simultaneously.</p><ul role="list"><li>LiNK has raised $9.5 million online from 19,000 donors with Funraise</li><li>56% of online donation revenue came from recurring donorsâin the last 12 months alone</li><li>LiNKâs more than 800 recurring donors have contributed $3.8 million in recurring gifts</li><li>Over 2,600 individual peer-to-peer fundraisers have raised $778,000</li></ul><p>Letâs dive into that 56% <a href="https://www.funraise.org/features/recurring-giving">
967recurring revenue</a> figure! Obviously, it didnât happen overnight, but at this point, more than half of LiNKâs online donation revenue arrives predictably, month after month, from donors who have made an ongoing commitment to their mission. </p><p>Tangent time: Across Funraiseâs platform, <a href="https://www.funraise.org/growth-statistics#recurring-revenue-growth">sustainer retention runs at 78% after 12 months</a>â10% better than the industry average. For LiNK, that retention has compounded over years into a recurring program that now anchors their entire fundraising model.</p><h2>Whatâs Next</h2><p>LiNK is not a static organization. (In fact, weâre laughing at the very idea!) As the mission grows, so does the fundraising infrastructure required to support it.</p><p>With 800+ active sustainers already in place, the opportunity ahead for LiNK is deepening that base further, converting more of their 19,000 online donors into long-term recurring supporters, and continuing to use Funraiseâs tools to identify and cultivate the relationships most likely to grow.</p><p>For an organization whose vision is as urgent as LiNKâs, having a fundraising engine that grows along with them allows the team to stay focused and on mission.</p><div class="w-embed"><div class="funraise-scope"> 968 <div class="blog-banner quote"> 969 <div class="blog-banner__content"> 970 <p>âWorking in the nonprofit space, it can feel really overwhelming sometimes because you have to get so much done with so little resources. Itâs nice to just know that you are going to be working with a good company with good resources, and itâs going to work the way that you need it to.â</p> 971 <p id="blog-banner__author" class="blog-banner__author">Chelsea Quinn</p> 972 <p id="blog-banner__role" class="blog-banner__role"> Assistant Director of Growth, Liberty in North Korea</p> 973 </div> 974 <div class="blog-banner__quote-icon"> 975 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/684725307efd8468411699dc_%E2%80%9C.svg" alt="Quote" /> 976 </div> 977 </div> 978 </div></div><p>âWorking in the nonprofit space, it can feel really overwhelming sometimes because you have to get so much done with so little resources. Itâs nice to just know that you are going to be working with a good company with good resources, and itâs going to work the way that you need it to.ââ Chelsea Quinn, Assistant Director of Growth, Liberty in North Korea</p></div><a id="post-bottom-banner" href="/contact-sales" class="post-bottom-banner image-wrapper shine w-inline-block"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc10bdd324d5d54edb2_General_Horizontal.webp" loading="lazy" sizes="(max-width: 1930px) 100vw, 1930px" srcset="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc10bdd324d5d54edb2_General_Horizontal-p-500.webp 500w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc10bdd324d5d54edb2_General_Horizontal-p-800.webp 800w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc10bdd324d5d54edb2_General_Horizontal-p-1080.webp 1080w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc10bdd324d5d54edb2_General_Horizontal-p-1600.webp 1600w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc10bdd324d5d54edb2_General_Horizontal.webp 1930w" alt="Mobile phone with donation form and donation charts floating around the phone."/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc10bdd324d5d54edb2_General_Horizontal.webp" loading="lazy" sizes="100vw" srcset="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc10bdd324d5d54edb2_General_Horizontal-p-500.webp 500w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc10bdd324d5d54edb2_General_Horizontal-p-800.webp 800w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc10bdd324d5d54edb2_General_Horizontal-p-1080.webp 1080w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc10bdd324d5d54edb2_General_Horizontal-p-1600.webp 1600w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc10bdd324d5d54edb2_General_Horizontal.webp 1930w" alt="Mobile phone with donation form and donation charts floating around the phone." class="w-condition-invisible"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc1c4af64f04b31eac6_Intelligence_Horizontal.webp" loading="lazy" sizes="100vw" srcset="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc1c4af64f04b31eac6_Intelligence_Horizontal-p-500.webp 500w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc1c4af64f04b31eac6_Intelligence_Horizontal-p-800.webp 800w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc1c4af64f04b31eac6_Intelligence_Horizontal-p-1080.webp 1080w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc1c4af64f04b31eac6_Intelligence_Horizontal-p-1600.webp 1600w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc1c4af64f04b31eac6_Intelligence_Horizontal.webp 1932w" alt="Woman looking at fundraising chart with button to book a call." class="w-condition-invisible"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc2badc4b36cf2121e3_Forms%20Horizontal.webp" loading="lazy" sizes="100vw" srcset="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc2badc4b36cf2121e3_Forms%20Horizontal-p-500.webp 500w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc2badc4b36cf2121e3_Forms%20Horizontal-p-800.webp 800w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc2badc4b36cf2121e3_Forms%20Horizontal-p-1080.webp 1080w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc2badc4b36cf2121e3_Forms%20Horizontal-p-1600.webp 1600w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65d46dc2badc4b36cf2121e3_Forms%20Horizontal.webp 1932w" alt="Yellow shapes in background with donation form in front with stylized text, build an intelligence giving experience." class="w-condition-invisible"/></a><a href="#" class="download-blog-post-banner w-inline-block w-condition-invisible"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/63f4bca6bd53031f392ae87c_Star%20Copy%204%402x.svg" loading="lazy" alt="Sparkling star." class="image-124"/><div class="div-block-202"><div class="text-block-1273 w-dyn-bind-empty"></div><div class="button white">Download</div></div><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/63f4bca6bd53031f392ae87c_Star%20Copy%204%402x.svg" loading="lazy" alt="Sparkling star." class="image-123"/></a><div class="blog-form-box w-condition-invisible"><div class="blog-form-card"><div class="form-wrap free-form blog"><div class="sparkle-wrap"><div class="heading-58">Start For Free</div><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5f9723378d5635f55a6970d2_sparkle-funraise-u-1.webp" loading="lazy" alt="Sparkling star." class="image-79"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5f972338086b5ec959535854_sparkle-funraise-u-2.webp" loading="lazy" alt="Sparkling stars." class="image-78"/></div><div class="free-sign-up-form w-embed w-script">
vendor: 64 bytes, line 978
978<script src="https://www.google.com/recaptcha/api.js"></script>
979<script src="https://code.jquery.com/jquery-3.5.0.js" integrity="sha384-AQhQSZGQWTMJhb/TdS7NWpCmOM/8lIEsaevSU5oZtt8pQKoa+uJL4A2WnQ0O5Zj2" crossorigin="anonymous"></script>
vendor: 1 bytes, line 979
979
980<script src="https://twitter.github.io/typeahead.js/releases/latest/typeahead.bundle.min.js" integrity="sha384-BdjsH97+KNxfKcYg/6SnokfwHP6QlMxt/Feedfq5IhIM7QHtYve/dYyKz0sc84fD" crossorigin="anonymous"></script>
vendor: 1 bytes, line 980
980
981<script> 982 function timestamp() { 983 var response = document.getElementById('g-recaptcha-response'); 984 if (response == null || response.value.trim() == '') { 985 var elems = JSON.parse(document.getElementsByName('captcha_settings')[0].value); 986 elems['ts'] = JSON.stringify(new Date().getTime()); 987 document.getElementsByName('captcha_settings')[0].value = JSON.stringify(elems); 988 } 989 } 990 setInterval(timestamp, 500); 991</script>
991 992<form id="get-started" action="https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8" method="POST" novalidate> 993 <input type=hidden name='captcha_settings' value='{"keyname":"FunraiseFreeSignUp","fallback":"true","orgId":"00D36000000JCaL","ts":""}'> 994 <input type=hidden name="oid" value="00D36000000JCaL"> 995 <input type="hidden" id="retURL" name="retURL" value="https://www.funraise.org/success/start-for-free"> 996 <input type="hidden" name="Campaign_ID" value="7011R0000013omVQAQ" /> 997 <input type="hidden" name="member_status" value="Responded" /> 998 <input type="hidden" name="00N1R00000TRqrE" value="Free" /> 999 <input type="hidden" id="company" name="company" value="" /> 1000 <input type="hidden" id="00N1R00000TRk8g" name="00N1R00000TRk8g" value="" /> 1001 <p class="form-title" style="color:#fff;text-align:center;margin-bottom:0;">First, find your nonprofit...</p> 1002 <label htmlFor="ein-typeahead" style="opacity:0;visibility:hidden;width:0;height:0;">Organization</label> 1003 <div id="ein-typeahead-container"> 1004 <i class="material-icons ein-search-icon">search</i> 1005 <div class="ein-input-container" style="position: relative; width: 100%"> 1006 <input placeholder="Enter your nonprofit name or EIN..." id="ein-typeahead" maxlength="100" type="text" required /> 1007 <div id="fr-typeahead-display"> 1008 <div id="fr-typeahead-display-name"></div> 1009 <div id="fr-typeahead-display-ein"></div> 1010 </div> 1011 </div> 1012 <div onclick="clearEin()" class="close-wrap"><i class="material-icons ein-close-icon">close</i></div> 1013 </div> 1014 <span id="einError"></span> 1015 <p class="no-margin" style="color:#ffffff;">If you are not a US based organization or you cannot find your nonprofit in the list above, no worries! <a href="https://www.funraise.org/contact-sales" class="text-link small normal">Talk to Sales.</a></p> 1016 <div class="fr-toggle-form-section"> 1017 <h4 class="form-title">Next, create your account</h4> 1018 <label htmlFor="first_name">First name</label> 1019 <input id="first_name" placeholder="enter first name" maxLength="40" name="first_name" size="20" type="text" required /> 1020 <label htmlFor="last_name">Last name</label> 1021 <input id="last_name" placeholder="enter last name" maxLength="80" name="last_name" size="20" type="text" required /> 1022 <label htmlFor="email">Work email address</label> 1023 <input id="email" placeholder="enter work email address" maxLength="80" name="email" size="20" type="email" required /> 1024 <label htmlFor="phone">Phone</label> 1025 <input id="phone" placeholder="555-555-5555" maxLength="40" name="phone" size="20" type="tel" /> 1026 <div class="recaptcha-box"> 1027 <div id="recaptcha" class="g-recaptcha" data-sitekey="6LcgyNcZAAAAAG4r0jQuWCSQ00VklVwt7DertS-H" data-callback="recaptchaCallback"></div> 1028 </div> 1029 <div class="agreement-box"> 1030 <p id="agreement-message" class="body body-small" style="color:#ffffff;"> 1031 By creating an account, you agree to our <a class="text-link small normal no-margin" href="https://www.funraise.org/about/privacy-policy" target="_blank" style="color:#64D7FF;">Privacy Policy</a> and <a class="text-link small normal no-margin" href="https://www.funraise.org/about/terms-and-conditions" target="_blank" style="color:#64D7FF;">Terms & Conditions</a>. You may receive communications from us and can opt out at any time. 1032 </p> 1033 </div> 1034 <input id="submit" type="submit" name="submit" value="Create Account"> 1035 </div> 1036</form></div><div class="w-embed w-script">
1036<script> 1037 const $einTypeaheadContainer = $('#ein-typeahead-container'); 1038 const $einTypeahead = $('#ein-typeahead'); 1039 const $einInputField = $('#00N1R00000TRk8g'); 1040 const $companyInputField = $('#company'); 1041 const $firstNameInputField = $('#first_name'); 1042 const $lastNameInputField = $('#last_name'); 1043 const $emailInputField = $('#email'); 1044 const $recaptchaField = $('#recaptcha'); 1045 const $selectedResultDisplay = $('#fr-typeahead-display'); 1046 const $selectedResultDisplayName = $('#fr-typeahead-display-name'); 1047 const $selectedResultDisplayEin = $('#fr-typeahead-display-ein'); 1048 const $toggledFormSection = $('.fr-toggle-form-section'); 1049 const $closeIcon = $('.ein-close-icon'); 1050 const $searchIcon = $('.ein-search-icon'); 1051 const errorClassName = 'error-message'; 1052 1053 let recaptchaChecked = false; 1054 function recaptchaCallback() { 1055 recaptchaChecked = true; 1056 } 1057 1058 function createErrorMessage(message) { 1059 return `<p class="${errorClassName}">${message}</p>`; 1060 } 1061 1062 function getFormattedEIN(rawEIN) { 1063 return rawEIN.replace(/(\d{2})(\d)/, "$1-$2"); 1064 } 1065 1066 function isValidEmail(email) { 1067 const emailRegex = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 1068 return emailRegex.test(email); 1069 } 1070 1071 function validate() { 1072 let isValid = true; 1073 $(`.${errorClassName}`).remove(); 1074 1075 // Required validations 1076 $('.fr-toggle-form-section > :input[required]').not(':input[type=submit]').each(function() { 1077 const $field = $(this); 1078 if (!$field.val()) { 1079 $field.after(createErrorMessage('This field is required')); 1080 isValid = false; 1081 } 1082 }); 1083 1084 const email = $emailInputField.val(); 1085 if (!isValidEmail(email)) { 1086 isValid = false; 1087 $emailInputField.after(createErrorMessage('Please enter a valid e-mail')); 1088 } 1089 if (!recaptchaChecked) { 1090 isValid = false; 1091 $recaptchaField.after(createErrorMessage('Please complete the recaptcha')); 1092 } 1093 1094 return isValid; 1095 } 1096 1097 function clearEin() { 1098 $einTypeahead.typeahead('val', ''); 1099 1100 $searchIcon.show(); 1101 $('.twitter-typeahead').show(); 1102 1103 $closeIcon.hide(); 1104 $toggledFormSection.hide(); 1105 $selectedResultDisplay.hide(); 1106 $selectedResultDisplayName.text(''); 1107 $selectedResultDisplayEin.text(''); 1108 1109 $(`.${errorClassName}`).remove(); 1110 1111 $('.fr-toggle-form-section > input').not(':input[type=submit]').each(function() { 1112 $(this).val(''); 1113 }); 1114 $einInputField.val(''); 1115 $companyInputField.val(''); 1116 1117 $toggledFormSection.removeClass('open'); 1118 } 1119 1120 $closeIcon.hide(); 1121 $selectedResultDisplay.hide(); 1122 1123 let einsDictionary = {}; 1124 let einsArray = []; 1125 1126 const debounce = function (cb, timeout) { 1127 let timeoutId = null; 1128 return (...args) => { 1129 if (args.length && args[0].persist) { args[0].persist(); } 1130 if (timeoutId !== null) { clearTimeout(timeoutId); } 1131 timeoutId = setTimeout(() => { cb(...args); }, timeout); 1132 } 1133 }; 1134 1135 const searchByOrgNameOrEIN = debounce((query, process) => { 1136 const formattedQuery = query.replace(/-/g, ''); 1137 $.ajax({ 1138 url: `https://skklpk9yt6.execute-api.us-east-1.amazonaws.com/beta?q=${formattedQuery}*`, 1139 cache: false, 1140 crossDomain: true, 1141 contentType: 'application/json' 1142 }).done((results) => { 1143 einsArray = results.hits.hit.map((field) => field.fields); 1144 1145 let matches = []; 1146 einsArray.forEach((result) => { 1147 const { ein , name } = result; 1148 const formattedEIN = getFormattedEIN(ein); 1149 einsDictionary[name] = formattedEIN; 1150 matches.push({ name, ein: formattedEIN }); 1151 }); 1152 1153 process(matches); 1154 }); 1155 }, 200); 1156 1157 $einTypeahead.typeahead({ 1158 hint: true, 1159 highlight: true, 1160 minLength: 1, 1161 classNames: { 1162 selectable: 'fr-typeahead-selectable' 1163 } 1164 }, {
1165 name: 'ein', 1166 async: true, 1167 source: (query, syncResults, asyncResults) => { 1168 searchByOrgNameOrEIN(query, asyncResults); 1169 }, 1170 display: (selected = {}) => { 1171 return `${selected.name}`; 1172 }, 1173 templates: { 1174 suggestion: (selected = {}) => { 1175 return `<div class="fr-typeahead-selectable-row">${selected.name}<div class="fr-typeahead-selectable-row-caption">${selected.ein}</div></div>` 1176 }, 1177 } 1178 }); 1179 1180 $einTypeahead.bind('typeahead:select', (event, suggestion = {}) => { 1181 $toggledFormSection.addClass('open'); 1182 1183 const $twitterTypeaheadWrapper = $('.twitter-typeahead'); 1184 const $einOrgName = suggestion.name; 1185 const $einValue = einsDictionary[$einOrgName]; 1186 1187 $einInputField.val($einValue); 1188 $companyInputField.val($einOrgName); 1189 1190 $toggledFormSection.show(); 1191 $closeIcon.show(); 1192 $searchIcon.hide(); 1193 $twitterTypeaheadWrapper.hide(); 1194 $selectedResultDisplay.show(); 1195 $selectedResultDisplayName.text($einOrgName); 1196 $selectedResultDisplayEin.text($einValue); 1197 }); 1198 1199 $einTypeahead.bind('typeahead:open', () => { 1200 const $einTypeaheadMenu = $('.tt-menu'); 1201 const einTypeheadContainerPaddingLeft = parseInt($einTypeaheadContainer.css('padding-left').replace('px','')); 1202 const searchIconWidth = $searchIcon.width(); 1203 const position = searchIconWidth + einTypeheadContainerPaddingLeft + 1; // +1 to account for border 1204 1205 $einTypeaheadMenu.css('left', `-${position}px`); 1206 $einTypeaheadMenu.outerWidth($einTypeaheadContainer.outerWidth()); 1207 1208 const currentInputValue = $einTypeahead.val(); 1209 if (!currentInputValue) { 1210 $toggledFormSection.hide(); 1211 $toggledFormSection.removeClass('open'); 1212 } 1213 }); 1214 1215 $('form').submit(function() { 1216 if (validate()) { 1217 $('#retURL').val('https://www.funraise.org/success/start-for-free?email=' + encodeURIComponent($emailInputField.val())); 1218 return true; 1219 } 1220 1221 return false; 1222 }); 1223</script>
1223</div><div class="w-embed"><style media="screen"> 1224 #get-started { 1225 width: 100%; 1226 font-family: "Garnett", Arial, sans-serif; 1227 } 1228 #get-started input[type="text"], 1229 #get-started input[type="email"], 1230 #get-started input[type="tel"], 1231 #get-started #ein-typeahead-container { 1232 margin-bottom: 14px; 1233 padding: 8px 16px; 1234 width: 100%; 1235 height: 56px; 1236 max-height: 56px; 1237 border-radius: 4px; 1238 border: solid 1px #ffffff; 1239 background-color: rgba(245, 249, 250, 0.9); 1240 font-size: 0.938em; 1241 transition: .2s ease-in-out; 1242 } 1243 #get-started input[type="text"]:hover, 1244 #get-started input[type="email"]:hover, 1245 #get-started input[type="tel"]:hover, 1246 #get-started #ein-typeahead-container:hover { 1247 background-color: #ffffff; 1248 border-color: rgba(41, 121, 255, 0.4); 1249 } 1250 #get-started input[type="text"]:hover label, 1251 #get-started input[type="email"]:hover label, 1252 #get-started input[type="tel"]:hover label { 1253 color: #2979ff !important; 1254 } 1255 #get-started input[type="text"]:focus, 1256 #get-started input[type="email"]:focus, 1257 #get-started input[type="tel"]:focus, 1258 #get-started #ein-typeahead-container:focus{ 1259 outline: none; 1260 border-color: #2979ff !important; 1261 } 1262 #get-started label { 1263 font-weight: 500; 1264 font-size: .9em; 1265 margin-bottom:8px; 1266 color: #ffffff; 1267 } 1268 /* EIN typeahead styles */ 1269 #get-started .twitter-typeahead { 1270 width: 100%; 1271 } 1272 #get-started .tt-menu { 1273 overflow: hidden; 1274 box-shadow: 0 4px 6px 0 rgba(0, 32, 66, 0.12), 0 4px 6px 0 rgba(0, 32, 66, 0.12); 1275 border-radius: 0 0 4px 4px; 1276 } 1277 #get-started .tt-dataset { 1278 font-weight: 500; 1279 } 1280 #get-started .tt-hint { 1281 margin: 0; 1282 background: transparent !important; 1283 } 1284 #get-started .tt-open { 1285 width: 100%; 1286 max-height: 206px; 1287 box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.04); 1288 border: 1px solid #e7edf2; 1289 overflow-y: scroll; 1290 } 1291 #get-started .fr-typeahead-selectable-row { 1292 padding: 16px; 1293 background-color: #ffffff; 1294 border-bottom: 1px solid #e7edf2; 1295 color: #002042; 1296 line-height: 1.3em; 1297 cursor: pointer; 1298 transition: all .2s ease-in-out; 1299 } 1300 #get-started .fr-typeahead-selectable-row:hover { 1301 padding: 8px; 1302 background-color: #f7fafb; 1303 color: #2979ff; 1304 } 1305 #get-started .fr-typeahead-selectable-row-caption { 1306 font-size: 12px; 1307 font-weight: 300; 1308 color: #002042; 1309 } 1310 #get-started #ein-typeahead-container { 1311 padding: 16px 24px 16px 16px; 1312 margin: 32px auto; 1313 display: flex; 1314 align-items: center; 1315 background-color: rgba(245, 249, 250, 0.9); 1316 border: 1px solid #e7edf2; 1317 border-radius: 3px; 1318 box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.04); 1319 transition: all .2s ease-in-out; 1320 } 1321 #get-started #fr-typeahead-display-name { 1322 font-size: 14px; 1323 font-weight: 500; 1324 line-height: 100%; 1325 margin-bottom: 4px; 1326 } 1327 #get-started input#ein-typeahead { 1328 border: 0; 1329 box-shadow: none; 1330 box-sizing: border-box; 1331 margin: 0; 1332 } 1333 #get-started #fr-typeahead-display-ein { 1334 font-size: 0.8em; 1335 line-height: 100%;/* EIN number from selected result */ 1336 } 1337 #get-started .ein-search-icon, 1338 #get-started .ein-close-icon { 1339 color: #5b6e84; 1340 transition: opacity .2s ease-in-out; 1341 } 1342 #get-started .ein-close-box { 1343 display: flex; 1344 } 1345 #get-started .ein-close-icon { 1346 cursor: pointer; 1347 } 1348 #get-started .ein-close-icon:hover, 1349 #get-started #ein-typeahead-container:hover .ein-search-icon { 1350 color: #2979ff; 1351 } 1352 /* Form section */ 1353 #get-started .fr-toggle-form-section { 1354 margin-top: 32px; 1355 display: none; 1356 flex-direction: column; 1357 height: 0; 1358 transition-delay: .1s; 1359 transition: all .2s ease-in-out; 1360 opacity: 0; 1361 animation-name: nextStep; 1362 animation-iteration-count: 1; 1363 animation-timing-function: ease-in; 1364 animation-duration: .1s; 1365 } 1366 @keyframes nextStep { 1367 0% { 1368 opacity: 1; 1369 } 1370 100% { 1371 opacity: 0; 1372 } 1373 } 1374 #get-started .fr-toggle-form-section.open { 1375 height: auto; 1376 display: flex; 1377 opacity: 1; 1378 animation-name: nextStep; 1379 animation-iteration-count: 1; 1380 animation-timing-function: ease-in; 1381 animation-duration: .3s; 1382 } 1383 @keyframes nextStep { 1384 0% { 1385 opacity: 0; 1386 } 1387 100% { 1388 opacity: 1; 1389 } 1390 } 1391 #get-started .fr-typeahead-selectable-row { 1392 padding: 8px; 1393 background-color: #ffffff; 1394 border-bottom: 1px solid #e7edf2; 1395 cursor: pointer; 1396 line-height: 1.3em; 1397 } 1398 #get-started .recaptcha-box { 1399 margin: 0; 1400 } 1401 #get-started #submit { 1402 width: 100%; 1403 padding: 14px 24px; 1404 color: #2979ff; 1405 font-size: 1.125em; 1406 font-weight: 500; 1407 text-align: center; 1408 text-decoration: none; 1409 border-radius: 3px; 1410 background-color: #fff; 1411 border: 2px solid #ffffff; 1412 cursor: pointer; 1413 transition: all 0.2s ease-in-out; 1414 } 1415 #get-started #submit:hover { 1416 background-color: #2979ff; 1417 color: #ffffff; 1418 box-shadow: 0 2px 6px 0 rgba(8, 22, 45, 0.24); 1419 } 1420 #get-started .error-message { 1421 display: block; 1422 padding: 0; 1423 margin: 0 0 14px 0; 1424 text-align: left; 1425 font-size: 0.8em; 1426 font-weight: 400; 1427 color: #e91e63; 1428 background-color: transparent; 1429 } 1430 #recaptcha { 1431 margin: 32px 0; 1432 } 1433 #get-started .close-wrap { 1434 display: flex; 1435 } 1436 #get-started .agreement-box { 1437 margin: 0 0 32px; 1438 } 1439 #get-started .agreement-box .agreement-message { 1440 color: #ffffff; 1441 } 1442 #get-started #gdpr-disclaimer { 1443 margin: 14px 0; 1444 } 1445 #get-started .agreement-box .gdpr-disclaimer { 1446 display: flex; 1447 align-items: center; 1448 justify-content: left; 1449 } 1450 #get-started .agreement-box .gdpr-disclaimer input { 1451 transition: all .2s ease-in-out; 1452 } 1453 #get-started .agreement-box .gdpr-disclaimer > label { 1454 margin: 0 0 0 8px; 1455 color: #002042; 1456 font-size:.9em; 1457 font-weight: 500; 1458 letter-spacing: .25px; 1459 } 1460 #get-started .form-title { 1461 color: #ffffff; 1462 font-size: 1.5em !important; 1463 } 1464</style></div></div><div class="pattern-bg"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6046ba950c6b80a22f6a10c1_shape1.webp" loading="lazy" alt="Blue shapes." class="image-77"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6046ba949407e751da811355_shape2.webp" loading="lazy" alt="Blue shapes." class="image-75"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6046ba9370528d0eb80eff97_shape3.webp" loading="lazy" alt="Blue shapes." class="image-76"/></div></div></div><article id="toc-content-2" class="blog-content funraise-rich-content part2 w-condition-invisible w-dyn-bind-empty w-richtext"></article><div class="centered-container blog-cta-box w-condition-invisible"><a href="#" class="button button-large w-dyn-bind-empty w-button"></a></div><div class="share-box"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5dcc3b623d746f40a9373a47_wiggle-divider-sm.svg" alt="Squiggly line drawing." class="wiggle-small"/><h4 class="share-title">Share the love</h4><div class="html-embed-9 w-embed"><ul class="social-links center-aligned"> 1465 <li class="social-link-list share-link-box"> 1466 <a href="https://www.facebook.com/sharer/sharer.php?u=https%3A//www.funraise.org/blog/links-recurring-program-drives-56-of-their-online-revenue" target="_blank" class="social-link share-links w-inline-block"> 1467 <img src="https://assets-global.website-files.com/5d6eb414117b673d211598f2/5d8e51cc167af692661176f7_social-facebook.svg" alt="" class="loading" data-was-processed="true"> 1468 </a> 1469 </li> 1470 <li class="social-link-list share-link-box"> 1471 <a href="https://twitter.com/intent/tweet?text=From%20your%20friends%20at%20%40funraise%20%3C3%0A%20https%3A//www.funraise.org/blog/links-recurring-program-drives-56-of-their-online-revenue" target="_blank" class="social-link share-links w-inline-block"> 1472 <img src="https://assets-global.website-files.com/5d6eb414117b673d211598f2/5d8e51cc20075a9b0e842c84_social-twitter.svg" alt="" class="loading" data-was-processed="true"> 1473 </a> 1474 </li> 1475 <li class="social-link-list share-link-box"> 1476 <a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A//www.funraise.org/blog/links-recurring-program-drives-56-of-their-online-revenue&title=&summary=&source=" target="_blank" class="social-link share-links w-inline-block"> 1477 <img src="https://assets-global.website-files.com/5d6eb414117b673d211598f2/5d8e51cc54697f44bc2b48af_social-linkedin.svg" alt="" class="loading" data-was-processed="true"> 1478 </a> 1479 </li> 1480 <li class="social-link-list share-link-box"> 1481 <a href="https://www.instagram.com/funraise/" target="_blank" class="social-link share-links w-inline-block"> 1482 <img src="https://assets-global.website-files.com/5d6eb414117b673d211598f2/5d8e51ccd39dc0c802935aa5_social-instagram.svg" alt="" class="loading" data-was-processed="true"> 1483 </a> 1484 </li> 1485</ul></div></div></div></div></div>
1485<div id="w-node-fb9c6b52-9198-2f9f-d18c-1db10a2a161e-7eea508f" class="blog-post-grid-right-column"><div class="blog-post-grid-right-column-content-fixed-wrapper"><div id="toc" class="post-toc-wrapper"><div class="body-small black-text">In this Article</div></div><div class="blog-post-sidebar-links-wrapper"><div class="body-small black-text mb-35">Learn more</div><a id="cam" data-w-id="d377fd26-4f40-d9b6-e647-343c9438b26f" href="/features/fundraising-websites" class="blog-post-sidebar-link-block w-inline-block"><div class="blog-post-sidebar-title-wrapper"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5d6edf5559e55178c2fd51fc_fundraising-websites.svg" loading="lazy" alt="Desktop computer icon." class="image-107"/><div id="campaign" class="link-text">Campaign Sites</div><div class="link-arrow">î</div></div><div class="light-grey-text">Raise more online with exceptional, configurable giving websites that showcase your story and brand.</div></a><a id="donation" data-w-id="e8ebe6cf-0ce0-5ef3-346e-2da8cba1cea9" href="/features/donation-forms" class="blog-post-sidebar-link-block w-inline-block"><div class="blog-post-sidebar-title-wrapper"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5fac64abf15ec11959d58874_donation-pages.svg" loading="lazy" alt="Donation page icon." class="image-107"/><div class="link-text">Donation Forms<br/></div><div class="link-arrow">î</div></div><div class="light-grey-text">Transform your website into a streamlined giving experience with customizable online donation forms.</div></a><a id="recurring" data-w-id="ce0a27cc-bced-c982-475e-3475fe20eb51" href="/features/recurring-giving" class="blog-post-sidebar-link-block w-inline-block"><div class="blog-post-sidebar-title-wrapper"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5d6edf5559e5515fb8fd51fd_recurring-giving.svg" loading="lazy" alt="Recurring giving icon." class="image-107"/><div class="link-text">Recurring Giving</div><div class="link-arrow">î</div></div><div class="light-grey-text">Engage your community and raise more by accepting recurring donations online through recurring giving.</div></a><a id="donor" data-w-id="07b5972f-eb5f-7e7f-59e6-01eb21e9d58d" href="/features/donor-crm" class="blog-post-sidebar-link-block w-inline-block"><div class="blog-post-sidebar-title-wrapper"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5d6edf552fd62f37d0204887_supporters.svg" loading="lazy" alt="Donors icon." class="image-107"/><div class="link-text">Donor Management</div><div class="link-arrow">î</div></div><div class="light-grey-text">Easily access, edit, and manage comprehensive donor data in an easy-to-use, nonprofit-centric CRM. </div></a><a id="ptp" data-w-id="dd3147a2-4b4d-39ff-cbd7-f418a71b1b87" href="/features/peer-to-peer-fundraising" class="blog-post-sidebar-link-block w-inline-block"><div class="blog-post-sidebar-title-wrapper"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5d6edf55ee72d9827da7053a_pages.svg" loading="lazy" alt="Peer-to-peer fundraiser icon." class="image-107"/><div class="link-text">Peer-to-Peer Fundraising</div><div class="link-arrow">î</div></div><div class="light-grey-text">Peer-to-peer fundraising fuels your mission by leveraging the networks of your most dedicated supporters.</div></a><a id="events" data-w-id="698ab7ff-7fd0-714e-db1c-e48bcdc447fb" href="/features/events-and-ticketing" class="blog-post-sidebar-link-block w-inline-block"><div class="blog-post-sidebar-title-wrapper"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5d6edf554c483ed5f9c835e2_events.svg" loading="lazy" alt="Calendar icon." class="image-107"/><div class="link-text">Events & Ticketing</div><div class="link-arrow">î</div></div><div class="light-grey-text">Sell tickets, manage guests, and collect donations at your event with an end-to-end event ticketing system.</div></a><a id="text" data-w-id="7ed0ed45-693b-59c4-6016-d8f0a27725ad" href="/features/text-engagement" class="blog-post-sidebar-link-block w-inline-block"><div class="blog-post-sidebar-title-wrapper"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5d6edf551698642dabf96e35_sms.svg" loading="lazy" alt="Text-to-Give icon." class="image-107"/><div class="link-text">Text Engagement</div><div class="link-arrow">î</div></div><div class="light-grey-text">Text fundraising for nonprofits that results in higher donor engagement and donation conversions.</div></a><a id="sec" data-w-id="a9a1062a-b798-bafc-5097-ca2a1813c09d" href="/about/security" class="blog-post-sidebar-link-block w-inline-block"><div class="blog-post-sidebar-title-wrapper"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/637784ea2c8a5c99681989ab_Group%202%20Copy%207.svg" loading="lazy" alt="Secure icon." class="image-107"/><div class="link-text">Security</div><div class="link-arrow">î</div></div><div class="light-grey-text">Your data is one of your most valuable assets, and Funraise is committed to helping you protect it.</div></a><a id="reports" data-w-id="68953ad7-e55e-720d-6069-3a9bd566cde8" href="/features/fundraising-intelligence" class="blog-post-sidebar-link-block w-inline-block"><div class="blog-post-sidebar-title-wrapper"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5e83b9853c3a41604d759070_donation-analytics.svg" loading="lazy" alt="Fundraising intelligence icon." class="image-107"/><div class="link-text">Reports & Dashboards</div><div class="link-arrow">î</div></div><div class="light-grey-text">Your fundraising data holds insights essential to your growth. Get the intelligence you need in realtime.</div></a><a id="support" data-w-id="99f6775f-2e7c-a221-17e8-9d3024b192fc" href="/support" class="blog-post-sidebar-link-block w-inline-block"><div class="blog-post-sidebar-title-wrapper"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/637784de65ea1808edb8fbc1_Group%202%20Copy%209%202.svg" loading="lazy" alt="Pink heat icon." class="image-107"/><div class="link-text">Funraise Support</div><div class="link-arrow">î</div></div><div class="light-grey-text">More than just a leading fundraising platform, Funraise also leads when it comes to customer support.</div></a></div><div class="blog-post-sidebar-get-demo-wrapper"><a id="support" data-w-id="ac03d6b5-be9b-0fcf-5277-b885e29b9ae1" href="/contact-sales" class="blog-post-sidebar-get-demo-link last w-inline-block"><div class="blog-post-sidebar-title-wrapper"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/637784de65ea1808edb8fbc1_Group%202%20Copy%209%202.svg" loading="lazy" alt="Pink heat icon." class="image-107"/><div class="link-text">Get a live demo</div><div class="link-arrow">î</div></div><div class="light-grey-text last">See how Funraiseâs nonprofit fundraising platform enables these strategies.</div></a></div><div class="w-embed"><section class="frbs" aria-label="Customer video case study"> 1486 <div class="frbs__inner"> 1487 1488 <p class="frbs__eyebrow">See Funraise in action</p> 1489 1490 <button class="frbs__card" type="button" data-media="8msd1b6kr2" data-title="Dressember" 1491 style="--poster:url('https://embed-ssl.wistia.com/deliveries/f0dc9b3745aac6e0afc8f91f4990b7a1.jpg?image_crop_resized=720x960')" 1492 aria-label="Play video: Dressember">
1493 <span class="frbs__poster"><span class="frbs__play" aria-hidden="true"></span></span> 1494 </button> 1495 1496 </div> 1497 1498 <!-- Lightbox (player injected on first open; moved to <body> on init) --> 1499 <div class="frbs__lightbox" id="frbs-lightbox" role="dialog" aria-modal="true" aria-label="Video player" hidden> 1500 <button class="frbs__close" type="button" aria-label="Close video"> 1501 <svg viewBox="0 0 24 24" fill="none"><path d="M6 6l12 12M18 6L6 18" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg> 1502 </button> 1503 <div class="frbs__modal"> 1504 <div class="frbs__player" id="frbs-player"></div> 1505 </div> 1506 </div> 1507</section></div></div><div class="blog-post-grid-right-column-content-fixed-100"><div class="w-embed"><style> 1508.frbs{ 1509 --frbs-dark:#002042; --frbs-blue:#2979ff; --frbs-border:#e1e4e8; --frbs-radius:16px; 1510 position:relative; width:100%; 1511 font-family:inherit; color:var(--frbs-dark); 1512 -webkit-font-smoothing:antialiased; box-sizing:border-box; 1513} 1514.frbs *{box-sizing:border-box;} 1515.frbs__inner{width:100%;} 1516/* Stacked under the article on tablet (the sidebar container is ~80vw there): 1517 cap the portrait card so it reads as a card, not a hero */ 1518@media (max-width:991px){ 1519 .frbs{max-width:400px;} 1520} 1521 1522.frbs__eyebrow{font-weight:600; font-size:12px; letter-spacing:.06em; text-transform:uppercase; 1523 color:var(--frbs-blue); margin:0 0 12px;} 1524 1525/* ---------- Portrait poster card ---------- */ 1526.frbs__card{position:relative; display:block; width:100%; padding:0; border:0; background:transparent; 1527 cursor:pointer; font:inherit; color:inherit; text-align:left;} 1528.frbs__poster{position:relative; display:block; width:100%; aspect-ratio:3/4; border-radius:var(--frbs-radius); 1529 overflow:hidden; background:var(--frbs-border) var(--poster) center/cover no-repeat; 1530 box-shadow:0 10px 30px rgba(0,32,66,.12); 1531 transition:transform .35s cubic-bezier(.16,.84,.34,1), box-shadow .35s ease;} 1532.frbs__poster::after{content:""; position:absolute; inset:0; 1533 background:linear-gradient(180deg, rgba(0,32,66,0) 42%, rgba(0,32,66,.58) 100%);} 1534.frbs__card:hover .frbs__poster{transform:translateY(-4px); box-shadow:0 16px 40px rgba(0,32,66,.18);} 1535.frbs__card:focus-visible{outline:none;} 1536.frbs__card:focus-visible .frbs__poster{outline:3px solid var(--frbs-blue); outline-offset:3px;} 1537 1538/* Play button */ 1539.frbs__play{position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:2; 1540 width:58px; height:58px; border-radius:50%; background:rgba(255,255,255,.92); 1541 box-shadow:0 6px 20px rgba(0,32,66,.25); transition:transform .25s ease, background .25s ease;} 1542.frbs__play::before{content:""; position:absolute; top:50%; left:53%; transform:translate(-50%,-50%); 1543 border-style:solid; border-width:9px 0 9px 15px; border-color:transparent transparent transparent var(--frbs-blue);} 1544.frbs__card:hover .frbs__play{transform:translate(-50%,-50%) scale(1.08); background:#fff;} 1545 1546/* Org name overlaid on the bottom of the poster */ 1547.frbs__name{position:absolute; left:16px; right:16px; bottom:14px; z-index:2; display:block; 1548 font-weight:600; font-size:17px; line-height:1.3; color:#fff; text-shadow:0 1px 6px rgba(0,16,40,.35);} 1549 1550.frbs__caption{margin:14px 0 0; font-size:14px; line-height:1.5; color:#4a5b70;} 1551 1552/* ---------- Lightbox ---------- */ 1553.frbs__lightbox{position:fixed; inset:0; z-index:99999; display:flex; align-items:center; justify-content:center; 1554 padding:24px; background:rgba(0,32,66,.82); opacity:0; transition:opacity .25s ease;} 1555.frbs__lightbox.is-open{opacity:1;} 1556.frbs__lightbox[hidden]{display:none;} 1557.frbs__modal{position:relative; width:100%; max-width:1040px; transform:scale(.97); transition:transform .3s cubic-bezier(.16,.84,.34,1);} 1558.frbs__lightbox.is-open .frbs__modal{transform:none;} 1559.frbs__player{position:relative; width:100%; aspect-ratio:16/9; background:#001329; border-radius:12px; overflow:hidden;} 1560.frbs__player::after{content:""; position:absolute; top:50%; left:50%; width:42px; height:42px; margin:-21px; 1561 border:3px solid rgba(255,255,255,.25); border-top-color:#fff; border-radius:50%; animation:frbs-spin 1s linear infinite;} 1562.frbs__player.is-ready::after{display:none;} 1563@keyframes frbs-spin{to{transform:rotate(360deg);}} 1564.frbs__player wistia-player{display:block; width:100%; height:100%;} 1565.frbs__close{position:absolute; top:18px; right:18px; z-index:1; width:44px; height:44px; border-radius:50%; 1566 border:0; background:rgba(255,255,255,.14); color:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center; 1567 transition:background .2s ease;} 1568.frbs__close:hover{background:rgba(255,255,255,.28);} 1569.frbs__close svg{width:24px; height:24px;} 1570.frbs__close:focus-visible{outline:2px solid #fff; outline-offset:3px;} 1571 1572/* ---------- Reduced motion ---------- */ 1573@media (prefers-reduced-motion:reduce){ 1574 .frbs *{transition:none !important; animation:none !important;} 1575 .frbs__lightbox, .frbs__lightbox *{transition:none !important; animation:none !important;} 1576} 1577</style></div><div class="w-embed w-script">
1577<script> 1578(function(){ 1579 var cs = document.currentScript; // capture now; it's null inside the deferred callback 1580 function init(){ 1581 var root = (cs && cs.closest('section.frbs')) || document.querySelector('section.frbs'); 1582 if(!root) return; 1583 1584 var card = root.querySelector('.frbs__card'); 1585 var box = root.querySelector('#frbs-lightbox'); 1586 if(!card || !box) return; 1587 var lastFocus = null, wistiaLoading = false; 1588 1589 /* Move the lightbox to <body> so a sticky / transformed sidebar can't clip the fixed overlay */ 1590 if(box.parentNode !== document.body){ document.body.appendChild(box); } 1591 var player = box.querySelector('#frbs-player'); 1592 var closeBtn = box.querySelector('.frbs__close'); 1593 1594 /* ---- Wistia loader (once; shared-safe with the other video blocks) ---- */ 1595 function ensureWistia(){ 1596 if(window.customElements && customElements.get('wistia-player')) return; 1597 if(wistiaLoading) return; 1598 wistiaLoading = true; 1599 var s = document.createElement('script'); 1600 s.src = 'https://fast.wistia.com/player.js'; s.async = true; 1601 document.head.appendChild(s); 1602 } 1603 1604 /* ---- Lightbox ---- */ 1605 function openVideo(){ 1606 var id = card.dataset.media; 1607 lastFocus = card; 1608 ensureWistia(); 1609 player.classList.remove('is-ready'); 1610 player.innerHTML = ''; 1611 var el = document.createElement('wistia-player'); 1612 el.setAttribute('media-id', id); 1613 el.setAttribute('aspect', '1.7777777777777777'); 1614 el.setAttribute('autoplay', 'true'); 1615 el.addEventListener('wistia-player-ready', onReady, {once:true}); 1616 player.appendChild(el); 1617 setTimeout(function(){ player.classList.add('is-ready'); }, 1200); 1618 1619 box.hidden = false; 1620 document.body.style.overflow = 'hidden'; 1621 requestAnimationFrame(function(){ box.classList.add('is-open'); }); 1622 closeBtn.focus(); 1623 document.addEventListener('keydown', onKey); 1624 } 1625 function onReady(){ player.classList.add('is-ready'); } 1626 1627 function closeVideo(){ 1628 box.classList.remove('is-open'); 1629 document.removeEventListener('keydown', onKey); 1630 document.body.style.overflow = ''; 1631 var done = function(){ 1632 box.hidden = true; 1633 player.innerHTML = ''; // removing the player stops playback 1634 box.removeEventListener('transitionend', done); 1635 }; 1636 box.addEventListener('transitionend', done); 1637 setTimeout(done, 320); // safety if transitionend doesn't fire 1638 if(lastFocus){ lastFocus.focus(); lastFocus = null; } 1639 } 1640 function onKey(e){ 1641 if(e.key === 'Escape'){ closeVideo(); } 1642 else if(e.key === 'Tab'){ e.preventDefault(); closeBtn.focus(); } // trap focus on close btn 1643 } 1644 1645 card.addEventListener('click', openVideo); 1646 closeBtn.addEventListener('click', closeVideo); 1647 box.addEventListener('click', function(e){ if(e.target === box) closeVideo(); }); 1648 } 1649 1650 /* Defer init until the document is parsed â the embed sits inside the article 1651 sidebar, so running mid-parse (and moving the lightbox to <body>) could disturb 1652 the HTML parser / Webflow's interaction binding. */ 1653 if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', init); } 1654 else { init(); } 1655})(); 1656</script>
1656 1657</div><a id="blog-side-cta" href="/free-signup" class="blog_post_sidebar_cta--dark post-sidebar-b hide w-inline-block"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6852da6c70a9087432c3a0c2_Blog_CTA_BG%20(3).webp" loading="eager" sizes="(max-width: 1400px) 100vw, 1400px" srcset="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6852da6c70a9087432c3a0c2_Blog_CTA_BG%20(3)-p-500.webp 500w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6852da6c70a9087432c3a0c2_Blog_CTA_BG%20(3)-p-800.webp 800w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6852da6c70a9087432c3a0c2_Blog_CTA_BG%20(3)-p-1080.webp 1080w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6852da6c70a9087432c3a0c2_Blog_CTA_BG%20(3).webp 1400w" alt="" class="blog_post_sidebar_cta_img"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6852da6c9d45ef09a0b50b74_Blog_CTA_BG%20(2).webp" loading="eager" sizes="(max-width: 1400px) 100vw, 1400px" srcset="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6852da6c9d45ef09a0b50b74_Blog_CTA_BG%20(2)-p-500.webp 500w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6852da6c9d45ef09a0b50b74_Blog_CTA_BG%20(2)-p-800.webp 800w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6852da6c9d45ef09a0b50b74_Blog_CTA_BG%20(2)-p-1080.webp 1080w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6852da6c9d45ef09a0b50b74_Blog_CTA_BG%20(2).webp 1400w" alt="" class="blog_post_sidebar_cta_img--hover"/></a><div class="div-block-551"><div class="ai-link-wrapper w-embed w-script"><!-- 1658 Funraise · Blog sidebar: "Summarize with AI" + Google preferred source 1659 ---------------------------------------------------------------------------- 1660 ⢠Module 1: five AI assistants (ChatGPT, Claude, Perplexity, Google AI Mode, 1661 Copilot) open in a new tab with a prompt preloaded: read this article, then 1662 read funraise.org (llms.txt, case studies, /alternatives, /pricing) and map 1663 the takeaways to Funraise features. Prompts are verbatim from the spec â 1664 do not trim them; every URL in there is a page we want AI fetchers to read. 1665 ⢠Module 2: one fully clickable card opening Google's preferred-sources dialog 1666 with funraise.org pre-filled (domain-level only â never link a subdirectory). 1667 ⢠Nothing is hardcoded per post: the script reads og:title + the canonical 1668 URL, so one embed covers the whole CMS collection. 1669 ⢠Never clickable-and-dead: the block renders [hidden] and is revealed only 1670 after every href is wired. If JS fails, the module never appears. 1671 ⢠Tight fit: below ~270px of module width a container query folds the row to 1672 four â Perplexity drops. CSS only, the anchor stays wired. 1673 ⢠GA4: ai_summary_click { ai_tool, post_slug } + preferred_source_click 1674 { post_slug }. Register ai_tool as a custom dimension in GA4 admin. 1675 ⢠Marks are the official brand paths (ChatGPT knot, Claude spark, Perplexity, 1676 Google G, Copilot gradient icon) â sources in components/ai-summary/README. 1677 1678 KILL SWITCH: add post slugs to KILL_SLUGS in the script to suppress the 1679 module on specific posts. 1680--> 1681 1682<div class="fras" hidden> 1683 <div class="fras__card"> 1684 <div class="fras__head"> 1685 <svg class="fras__spark" viewBox="0 0 24 24" fill="#2979ff" aria-hidden="true"> 1686 <path d="M10.5 2c.62 4.9 2.2 6.48 7.1 7.1-4.9.62-6.48 2.2-7.1 7.1-.62-4.9-2.2-6.48-7.1-7.1 4.9-.62 6.48-2.2 7.1-7.1z"/> 1687 <path d="M18.4 13.8c.37 2.94 1.32 3.89 4.26 4.26-2.94.37-3.89 1.32-4.26 4.26-.37-2.94-1.32-3.89-4.26-4.26 2.94-.37 3.89-1.32 4.26-4.26z" opacity=".8"/> 1688 </svg> 1689 <p class="fras__title">Summarize this with AI</p> 1690 </div> 1691 <div class="fras__row"> 1692 <a class="fras__btn" data-fras-tool="chatgpt" aria-label="Summarize with ChatGPT"> 1693 <span class="fras__ring"> 1694 <svg viewBox="0 0 320 320" fill="#0d0d0d" aria-hidden="true"><path d="m297.06 130.97c7.26-21.79 4.76-45.66-6.85-65.48-17.46-30.4-52.56-46.04-86.84-38.68-15.25-17.18-37.16-26.95-60.13-26.81-35.04-.08-66.13 22.48-76.91 55.82-22.51 4.61-41.94 18.7-53.31 38.67-17.59 30.32
1694-13.58 68.54 9.92 94.54-7.26 21.79-4.76 45.66 6.85 65.48 17.46 30.4 52.56 46.04 86.84 38.68 15.24 17.18 37.16 26.95 60.13 26.8 35.06.09 66.16-22.49 76.94-55.86 22.51-4.61 41.94-18.7 53.31-38.67 17.57-30.32 13.55-68.51-9.94-94.51zm-120.28 168.11c-14.03.02-27.62-4.89-38.39-13.88.49-.26 1.34-.73 1.89-1.07l63.72-36.8c3.26-1.85 5.26-5.32 5.24-9.07v-89.83l26.93 15.55c.29.14.48.42.52.74v74.39c-.04 33.08-26.83 59.9-59.91 59.97zm-128.84-55.03c-7.03-12.14-9.56-26.37-7.15-40.18.47.28 1.3.79 1.89 1.13l63.72 36.8c3.23 1.89 7.23 1.89 10.47 0l77.79-44.92v31.1c.02.32-.13.63-.38.83l-64.41 37.19c-28.69 16.52-65.33 6.7-81.92-21.95zm-16.77-139.09c7-12.16 18.05-21.46 31.21-26.29 0 .55-.03 1.52-.03 2.2v73.61c-.02 3.74 1.98 7.21 5.23 9.06l77.79 44.91-26.93 15.55c-.27.18-.61.21-.91.08l-64.42-37.22c-28.63-16.58-38.45-53.21-21.95-81.89zm221.26 51.49-77.79-44.92 26.93-15.54c.27-.18.61-.21.91-.08l64.42 37.19c28.68 16.57 38.51 53.26 21.94 81.94-7.01 12.14-18.05 21.44-31.2 26.28v-75.81c.03-3.74-1.96-7.2-5.2-9.06zm26.8-40.34c-.47-.29-1.3-.79-1.89-1.13l-63.72-36.8c-3.23-1.89-7.23-1.89-10.47 0l-77.79 44.92v-31.1c-.02-.32.13-.63.38-.83l64.41-37.16c28.69-16.55 65.37-6.7 81.91 22 6.99 12.12 9.52 26.31 7.15 40.1zm-168.51 55.43-26.94-15.55c-.29-.14-.48-.42-.52-.74v-74.39c.02-33.12 26.89-59.96 60.01-59.94 14.01 0 27.57 4.92 38.34 13.88-.49.26-1.33.73-1.89 1.07l-63.72 36.8c-3.26 1.85-5.26 5.31-5.24 9.06l-.04 89.79zm14.63-31.54 34.65-20.01 34.65 20v40.01l-34.65 20-34.65-20z"/></svg> 1695 </span> 1696 <span class="fras__tag">ChatGPT</span> 1697 </a> 1698 <a class="fras__btn" data-fras-tool="claude" aria-label="Summarize with Claude"> 1699 <span class="fras__ring"> 1700 <svg viewBox="0 0 24 24" fill="#d97757" aria-hidden="true"><path d="m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.
17000182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z"/></svg> 1701 </span> 1702 <span class="fras__tag">Claude</span> 1703 </a> 1704 <a class="fras__btn" data-fras-tool="perplexity" aria-label="Summarize with Perplexity"> 1705 <span class="fras__ring"> 1706 <svg viewBox="0 0 24 24" fill="#20808d" aria-hidden="true"><path d="M22.3977 7.0896h-2.3106V.0676l-7.5094 6.3542V.1577h-1.1554v6.1966L4.4904 0v7.0896H1.6023v10.3976h2.8882V24l6.932-6.3591v6.2005h1.1554v-6.0469l6.9318 6.1807v-6.4879h2.8882V7.0896zm-3.4657-4.531v4.531h-5.355l5.355-4.531zm-13.2862.0676 4.8691 4.4634H5.6458V2.6262zM2.7576 16.332V8.245h7.8476l-6.1149 6.1147v1.9723H2.7576zm2.8882 5.0404v-3.8852h.0001v-2.6488l5.7763-5.7764v7.0111l-5.7764 5.2993zm12.7086.0248-5.7766-5.1509V9.0618l5.7766 5.7766v6.5588zm2.8882-5.0652h-1.733v-1.9723L13.3948 8.245h7.8478v8.087z"/></svg> 1707 </span> 1708 <span class="fras__tag">Perplexity</span> 1709 </a> 1710 <a class="fras__btn" data-fras-tool="google_ai_mode" aria-label="Summarize with Google AI Mode"> 1711 <span class="fras__ring"> 1712 <svg viewBox="0 0 24 24" aria-hidden="true"><path fill="#4285f4" d="M23.49 12.27c0-.79-.07-1.54-.19-2.27H12v4.51h6.47c-.29 1.48-1.14 2.73-2.4 3.58v3h3.86c2.26-2.09 3.56-5.17 3.56-8.82z"/><path fill="#34a853" d="M12 24c3.24 0 5.95-1.08 7.93-2.91l-3.86-3c-1.08.72-2.45 1.16-4.07 1.16-3.13 0-5.78-2.11-6.73-4.96H1.29v3.09C3.26 21.3 7.31 24 12 24z"/><path fill="#fbbc05" d="M5.27 14.29A7.2 7.2 0 0 1 4.9 12c0-.8.14-1.57.37-2.29V6.62H1.29A11.97 11.97 0 0 0 0 12c0 1.94.46 3.76 1.29 5.38l3.98-3.09z"/><path fill="#ea4335" d="M12 4.75c1.77 0 3.35.61 4.6 1.8l3.42-3.42C17.95 1.19 15.24 0 12 0 7.31 0 3.26 2.7 1.29 6.62l3.98 3.09C6.22 6.86 8.87 4.75 12 4.75z"/></svg> 1713 </span> 1714 <span class="fras__tag">AI Mode</span> 1715 </a> 1716 <a class="fras__btn" data-fras-tool="copilot" aria-label="Summarize with Copilot"> 1717 <span class="fras__ring"> 1718 <svg viewBox="0 0 120 120" fill="none" aria-hidden="true"><path fill="url(#frasCpa)" d="M85.855 18.313A11.574 11.574 0 0 0 74.75 10h-3.379a11.574 11.574 0 0 0-11.384 9.485L54.2 51.018l1.436-4.913a11.574 11.574 0 0 1 11.11-8.327H86.38l8.235 3.207 7.937-3.207h-2.316a11.574 11.574 0 0 1-11.105-8.313z" /><path fill="url(#frasCpb)" d="M36.326 101.64A11.574 11.574 0 0 0 47.445 110h7.176c6.276 0 11.409-5.002 11.57-11.277l.781-30.405-1.634 5.583a11.574 11.574 0 0 1-11.108 8.321H34.432l-7.058-3.829-7.641 3.83h2.278c5.154 0 9.687 3.408 11.119 8.36z" /><path fill="url(#frasCpc)" d="M74.248 10H34.15c-11.457 0-18.33 15.142-22.913 30.283-5.43 17.939-12.534 41.93 8.02 41.93H36.57c5.174 0 9.716-3.421 11.138-8.396 3.01-10.531 8.286-28.903 12.43-42.889 2.105-7.107 3.86-13.211 6.551-17.012C68.2 11.785 70.715 10 74.248 10" /><path fill="url(#frasCpd)" d="M74.248 10H34.15c-11.457 0-18.33 15.142-22.913 30.283-5.43 17.939-12.534 41.93 8.02 41.93H36.57c5.174 0 9.716-3.421 11.138-8.396 3.01-10.531 8.286-28.903 12.43-42.889 2.105-7.107 3.86-13.211 6.551-17.012C68.2 11.785 70.715 10 74.248 10" /><path fill="url(#frasCpe)" d="M46.744 110h40.099c11.456 0 18.33-15.144 22.913-30.288 5.429-17.942 12.533-41.937-8.02-41.937H84.422a11.576 11.576 0 0 0-11.138 8.396c-3.01 10.533-8.286 28.909-12.43 42.897-2.106 7.109-3.86 13.214-6.552 17.016-1.51 2.131-4.025 3.916-7.558 3.916" /><path fill="url(#frasCpf)" d="M46.744 110h40.099c11.456 0 18.33-15.144 22.913-30.288 5.429-17.942 12.533-41.937-8.02-41.937H84.422a11.576 11.576 0 0 0-11.138 8.396c-3.01 10.533-8.286 28.909-12.43 42.897-2.106 7.109-3.86 13.214-6.552 17.016-1.51 2.131-4.025 3.916-7.558 3.916" /><defs><radialGradient id="frasCpa" cx="0" cy="0" r="1" gradientTransform="matrix(-27.40125 -33.47302 31.47539 -25.76598 95.512 51.286)" gradientUnits="userSpaceOnUse"><stop offset=".096" stop-color="#00AEFF" /><stop offset=".773" stop-color="#2253CE" /><stop offset="1" stop-color="#0736C4" /></radialGradient><radialGradient id="frasCpb" cx="0" cy="0" r="1" gradientTransform="rotate(51.84 -70.254 70.14)scale(39.9779 38.7796)" gradientUnits="userSpaceOnUse"><stop stop-color="#FFB657" /><stop offset=".634" stop-color="#FF5F3D" /><stop offset=".923" stop-color="#C02B3C" /></radialGradient><radialGradient id="frasCpe" cx="0" cy="0" r="1" gradientTransform="matrix(-31.67773 90.58917 -108.5232 -37.949 103.796 30.703)" gradientUnits="userSpaceOnUse"><stop offset=".066" stop-color="#8C48FF" /><stop offset=".5" stop-color="#F2598A" /><stop offset=".896" stop-color="#FFB152" /></radialGradient><linearGradient id="frasCpc" x1="31.75" x2="37.471" y1="18.75" y2="84.938" gradientUnits="userSpaceOnUse"><stop offset=".156" stop-color="#0D91E1" /><stop offset=".487" stop-color="#52B471" /><stop offset=".652" stop-color="#98BD42" /><stop offset=".937" stop-color="#FFC800" /></linearGradient><linearGradient id="frasCpd" x1="36.75" x2="39.874" y1="10" y2="82.213" gradientUnits="userSpaceOnUse"><stop stop-color="#3DCBFF" /><stop offset=".247" stop-color="#0588F7" stop-opacity="0" /></linearGradient><linearGradient id="frasCpf" x1="106.964" x2="106.923" y1="33.365" y2="53.037" gradientUnits="userSpaceOnUse"><stop offset=".058" stop-color="#F8ADFA" /><stop offset=".708" stop-color="#A86EDD" stop-opacity="0" /></linearGradient></defs></svg> 1719 </span>
1720 <span class="fras__tag">Copilot</span> 1721 </a> 1722 </div> 1723 </div> 1724 1725 <a class="fras__card fras__card--source" data-fras-tool="preferred_source" 1726 href="https://www.google.com/preferences/source?q=funraise.org" 1727 target="_blank" rel="noopener noreferrer" 1728 aria-label="Add funraise.org as a preferred source on Google"> 1729 <span class="fras__g"> 1730 <svg viewBox="0 0 24 24" aria-hidden="true"><path fill="#4285f4" d="M23.49 12.27c0-.79-.07-1.54-.19-2.27H12v4.51h6.47c-.29 1.48-1.14 2.73-2.4 3.58v3h3.86c2.26-2.09 3.56-5.17 3.56-8.82z"/><path fill="#34a853" d="M12 24c3.24 0 5.95-1.08 7.93-2.91l-3.86-3c-1.08.72-2.45 1.16-4.07 1.16-3.13 0-5.78-2.11-6.73-4.96H1.29v3.09C3.26 21.3 7.31 24 12 24z"/><path fill="#fbbc05" d="M5.27 14.29A7.2 7.2 0 0 1 4.9 12c0-.8.14-1.57.37-2.29V6.62H1.29A11.97 11.97 0 0 0 0 12c0 1.94.46 3.76 1.29 5.38l3.98-3.09z"/><path fill="#ea4335" d="M12 4.75c1.77 0 3.35.61 4.6 1.8l3.42-3.42C17.95 1.19 15.24 0 12 0 7.31 0 3.26 2.7 1.29 6.62l3.98 3.09C6.22 6.86 8.87 4.75 12 4.75z"/></svg> 1731 </span> 1732 <p class="fras__title fras__title--sm">Get Funraise in Search</p> 1733 <svg class="fras__chev" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6z"/></svg> 1734 </a> 1735</div> 1736 1737<style> 1738 .fras{ 1739 --fras-dark: #002042; 1740 --fras-blue: #2979ff; 1741 --fras-grey: #5b6e84; 1742 --fras-border: #e1e4e8; 1743 --fras-radius: 16px; 1744 display: grid; 1745 gap: 12px; 1746 max-width: 400px; 1747 /* left margins (not auto): in the stacked tablet layout the cards keep 1748 the sidebar's left rail, matching the capped video card above */ 1749 margin: 24px 0 0; 1750 font-family: inherit; 1751 color: var(--fras-dark); 1752 -webkit-font-smoothing: antialiased; 1753 box-sizing: border-box; 1754 } 1755 /* class display would beat the UA [hidden] rule â restate it explicitly */ 1756 .fras[hidden]{ display: none; } 1757 .fras *{ box-sizing: border-box; } 1758 .fras__card{ 1759 border: 1px solid var(--fras-border); 1760 border-radius: var(--fras-radius); 1761 background: #fff; 1762 padding: 16px 14px 14px; 1763 container-type: inline-size; 1764 } 1765 .fras__head{ display: flex; align-items: center; gap: 8px; margin-bottom: 14px; } 1766 .fras__spark{ flex: none; width: 19px; height: 19px; } 1767 .fras__title{ margin: 0; font-size: 14.5px; font-weight: 600; line-height: 1.35; color: var(--fras-dark); } 1768 .fras__row{ display: grid; grid-template-columns: repeat(5, 1fr); gap: 2px; } 1769 /* tight fit: under ~270px the row folds to four and Perplexity drops */ 1770 @container (max-width: 270px){ 1771 .fras__row{ grid-template-columns: repeat(4, 1fr); } 1772 .fras__row [data-fras-tool='perplexity']{ display: none; } 1773 } 1774 .fras__btn{ 1775 display: flex; flex-direction: column; align-items: center; gap: 6px; 1776 padding: 4px 0 2px; border-radius: 10px; text-decoration: none; 1777 } 1778 .fras__ring{ 1779 width: 40px; height: 40px; border-radius: 50%; 1780 border: 1px solid var(--fras-border); background: #fff; 1781 display: flex; align-items: center; justify-content: center; 1782 transition: transform .22s cubic-bezier(.16,.84,.34,1), border-color .22s, box-shadow .22s; 1783 } 1784 .fras__ring svg{ width: 20px; height: 20px; display: block; } 1785 .fras__tag{ font-size: 9.5px; font-weight: 500; letter-spacing: .1px; color: var(--fras-grey); white-space: nowrap; } 1786 .fras__btn:hover .fras__ring, 1787 .fras__btn:focus-visible .fras__ring{ 1788 border-color: var(--fras-blue); 1789 transform: translateY(-2px); 1790 box-shadow: 0 6px 16px rgba(41,121,255,.22); 1791 } 1792 .fras__btn:focus-visible{ outline: 2px solid var(--fras-blue); outline-offset: 2px; } 1793 @media (prefers-reduced-motion: reduce){ 1794 .fras__ring{ transition: none; } 1795 .fras__btn:hover .fras__ring, .fras__btn:focus-visible .fras__ring{ transform: none; } 1796 } 1797 /* single-line card: short copy + trimmed metrics keep the title on one line 1798 even at the grid's 265px floor (Garnett runs wider than the fallbacks) */ 1799 .fras__card--source{ 1800 display: flex; gap: 10px; align-items: center; padding: 12px; 1801 text-decoration: none; transition: border-color .22s, box-shadow .22s; 1802 } 1803 .fras__card--source .fras__title{ flex: 1; } 1804 .fras__card--source:hover, 1805 .fras__card--source:focus-visible{ 1806 border-color: var(--fras-blue); 1807 box-shadow: 0 6px 16px rgba(41,121,255,.12); 1808 } 1809 .fras__card--source:focus-visible{ outline: 2px solid var(--fras-blue); outline-offset: 2px; } 1810 .fras__g{ 1811 flex: none; width: 30px; height: 30px; border-radius: 50%; 1812 border: 1px solid var(--fras-border); 1813 display: flex; align-items: center; justify-content: center; 1814 } 1815 .fras__g svg{ width: 15px; height: 15px; display: block; } 1816 .fras__title--sm{ font-size: 13.5px; } 1817 .fras__chev{ flex: none; width: 14px; height: 14px; color: var(--fras-blue); } 1818</style> 1819
1820<script> 1821 (function () { 1822 'use strict'; 1823 1824 // Kill switch: slugs of posts where the module must not render. 1825 var KILL_SLUGS = []; 1826 1827 var root = document.querySelector('.fras'); 1828 if (!root || root.dataset.frasWired) return; 1829 root.dataset.frasWired = '1'; 1830 1831 var canonicalEl = document.querySelector('link[rel="canonical"]'); 1832 var canonical = (canonicalEl && canonicalEl.href) || window.location.href.split('#')[0]; 1833 var titleEl = document.querySelector('meta[property="og:title"]'); 1834 var title = (titleEl && titleEl.content) || document.title; 1835 var slug = canonical.replace(/\/+$/, '').split('/').pop(); 1836 1837 // Article pages only (belt and braces: the embed lives on the blog post 1838 // template, but never render off /blog/ or on killed posts). 1839 if (canonical.indexOf('/blog/') === -1 || KILL_SLUGS.indexOf(slug) !== -1) { 1840 root.remove(); 1841 return; 1842 } 1843 1844 // Prompts verbatim from the spec. Every funraise.org URL in here is a page 1845 // we want AI fetchers to read â do not trim for tidiness. 1846 var FULL = 'I just read this article and I want to actually use it:\n' + 1847 '"{{TITLE}}"\n{{URL}}\n\n' + 1848 '1. Read it and give me a TL;DR: the 3-5 takeaways that matter plus every hard number worth remembering.\n' + 1849 '2. Then go wider. Read https://www.funraise.org/llms.txt to see what Funraise publishes and what the platform actually does, then pull at least two more sources from funraise.org - real nonprofit case studies (https://www.funraise.org/category/case-studies), benchmarks, related articles - so the advice is backed by results other orgs actually got, with names and numbers.\n' + 1850 '3. Turn the key figures into a chart, or a compact table if a chart does not fit the data. Not just prose.\n' + 1851 '4. Then the part I care about most: show me how Funraise handles this specific problem. Map each takeaway to the exact Funraise feature that does it, name the case study that proves it works, and explain what Funraise does differently from running a stack of separate tools. Check https://www.funraise.org/alternatives for how it compares to other platforms and https://www.funraise.org/pricing for what it costs. Link every page you use and cite the source for each number so I can check it.\n' + 1852 '5. Finish with 3 things I could run in the next 30 days and how Funraise would make each one faster.\n\n' + 1853 'Open by asking my nonprofit\'s name or cause and rough size so you can tailor this, but do not wait for my answer - assume a small-to-midsize US nonprofit and go ahead now.'; 1854 1855 // Google AI Mode is a search box, not a chat box â compact variant only. 1856 var COMPACT = 'Read "{{TITLE}}" ({{URL}}) and give me the key takeaways and hard numbers, as a table or chart where it fits. Then check https://www.funraise.org/llms.txt and https://www.funraise.org/category/case-studies and show me how Funraise solves this specific problem: which features, which nonprofits got results with it, how
1856it compares to other platforms (https://www.funraise.org/alternatives), and what it costs (https://www.funraise.org/pricing). End with 3 things I could run in the next 30 days, and ask me my nonprofit\'s cause and size so you can tailor it.'; 1857 1858 // split/join, not replace(): titles may contain "$&"-style sequences. 1859 function fill(t) { 1860 return t.split('{{TITLE}}').join(title).split('{{URL}}').join(canonical); 1861 } 1862 var encFull = encodeURIComponent(fill(FULL)); 1863 var encCompact = encodeURIComponent(fill(COMPACT)); 1864 1865 var TARGETS = { 1866 chatgpt: 'https://chatgpt.com/?q=' + encFull, 1867 claude: 'https://claude.ai/new?q=' + encFull, 1868 perplexity: 'https://www.perplexity.ai/search/new?q=' + encFull, 1869 google_ai_mode: 'https://www.google.com/search?udm=50&aep=11&q=' + encCompact, 1870 copilot: 'https://copilot.microsoft.com/?q=' + encFull 1871 }; 1872 1873 function track(eventName, params) { 1874 if (typeof window.gtag === 'function') { 1875 window.gtag('event', eventName, params); 1876 } else if (Array.isArray(window.dataLayer)) { 1877 params.event = eventName; 1878 window.dataLayer.push(params); 1879 } 1880 } 1881 1882 var wired = 0; 1883 root.querySelectorAll('[data-fras-tool]').forEach(function (a) { 1884 var tool = a.getAttribute('data-fras-tool'); 1885 if (TARGETS[tool]) { 1886 a.setAttribute('href', TARGETS[tool]); 1887 a.setAttribute('target', '_blank'); 1888 a.setAttribute('rel', 'noopener noreferrer'); 1889 wired += 1; 1890 } 1891 a.addEventListener('click', function () { 1892 if (tool === 'preferred_source') { 1893 track('preferred_source_click', { post_slug: slug }); 1894 } else { 1895 track('ai_summary_click', { ai_tool: tool, post_slug: slug }); 1896 } 1897 }); 1898 }); 1899 1900 // Reveal only once every AI button has a real destination. 1901 if (wired === Object.keys(TARGETS).length) { 1902 root.removeAttribute('hidden'); 1903 } 1904 })(); 1905</script>
1905</div></div><div class="blog-post-sidebar-block"><div>Share</div><div class="w-embed"><style> 1906.share-link-icone .loading{ 1907display: block; 1908cursor: pointer; 1909} 1910.share-link-icone:hover .loading{ 1911display: none; 1912} 1913.share-link-icone .loading.hover{ 1914display: none; 1915} 1916.share-link-icone:hover .loading.hover{ 1917display: block; 1918} 1919</style> 1920 1921<ul class="social-links right-aligned"> 1922 <li class="social-link-list share-link-box"> 1923 <a href="https://www.facebook.com/sharer/sharer.php?u=https%3A//www.funraise.org/blog/links-recurring-program-drives-56-of-their-online-revenue" target="_blank" class="share-link-icone"> 1924 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/63775f7e0aeae2ae5f099a72_fb.svg" alt="Facebook logo." class="loading" data-was-processed="true"> 1925 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/637787848efb9e2c0bff9d01_hover_fb.svg" alt="Facebook logo." class="loading hover" data-was-processed="true"> 1926 </a> 1927 </li> 1928 <li class="social-link-list share-link-box"> 1929 <a href="https://twitter.com/intent/tweet?text=From%20your%20friends%20at%20%40funraise%20%3C3%0A%20https%3A//www.funraise.org/blog/links-recurring-program-drives-56-of-their-online-revenue" target="_blank" class="share-link-icone"> 1930 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65fd95d1f81ed9e066662513_X_Logo.svg" alt="X logo." class="loading" data-was-processed="true"> 1931 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65fd95c69b7ff72b17a11b4e_X_Logo_Hover.svg" alt="X logo." class="loading hover" data-was-processed="true"> 1932 </a> 1933 </li> 1934 <li class="social-link-list share-link-box"> 1935 <a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A//www.funraise.org/blog/links-recurring-program-drives-56-of-their-online-revenue&title=&summary=&source=" target="_blank" class="share-link-icone"> 1936 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/63775f7eca9a167489931627_linkedin.svg" alt="Linkedin logo." class="loading" data-was-processed="true"> 1937 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/637787850aeae2b2920c3752_hover_linkedin.svg" alt="Linkedin logo." class="loading hover" data-was-processed="true"> 1938 </a> 1939 </li> 1940 <li class="social-link-list share-link-box"> 1941 <a id="ShareButton" class="share-link-icone"> 1942 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/63775f7e15fcfe7e0c09e4e9_link.svg" alt="Paperclip link icon." class="loading" data-was-processed="true"> 1943 <img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6377878566acb036e54be428_hover_link.svg" alt="Paperclip link icon." class="loading hover" data-was-processed="true"> 1944 </a> 1945 </li> 1946</ul></div></div></div></div></div></div></div><div class="content-section gray-bg"><div class="content-container"><div class="small-headline-box related-articles-headline-box"><div class="h3 inline">More posts</div></div><div class="collection-list-wrapper-9 w-dyn-list"><div role="list" class="collection-list-22 w-dyn-items"><div role="listitem" class="collection-item w-dyn-item"><div class="image-card"><a href="/blog/bahati-foundation-case-study" class="w-inline-block"><img alt="Green background, Bahati logo and pictures of kids on bikes" src="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a9236053f5d212d36731bfa_BahatiFoundationCaseStudy_Blog_Header.jpg" sizes="100vw" srcset="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a9236053f5d212d36731bfa_BahatiFoundationCaseStudy_Blog_Header-p-500.jpg 500w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a9236053f5d212d36731bfa_BahatiFoundationCaseStudy_Blog_Header-p-800.jpg 800w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a9236053f5d212d36731bfa_BahatiFoundationCaseStudy_Blog_Header-p-1080.jpg 1080w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a9236053f5d212d36731bfa_BahatiFoundationCaseStudy_Blog_Header.jpg 1600w" class="image-125"/></a><a href="/blog/bahati-foundation-case-study" class="image-card-content w-inline-block"><div class="image-card-title">Bahati Foundation Used Funraise to Grow Online Donation Revenue 44% in a Single Year</div><div class="image-card-title w-dyn-bind-empty"></div></a></div></div><div role="listitem" class="collection-item w-dyn-item"><div class="image-card"><a href="/blog/ymca-okc-p2p" class="w-inline-block"><img alt="YMCA OKC on a blue background" src="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a752e61205f26561aaaf144_YMCAOKCCaseStudy_Blog_Header.jpg" sizes="100vw" srcset="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a752e61205f26561aaaf144_YMCAOKCCaseStudy_Blog_Header-p-500.jpg 500w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a752e61205f26561aaaf144_YMCAOKCCaseStudy_Blog_Header-p-800.jpg 800w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a752e61205f26561aaaf144_YMCAOKCCaseStudy_Blog_Header-p-1080.jpg 1080w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a752e61205f26561aaaf144_YMCAOKCCaseStudy_Blog_Header.jpg 1600w" class="image-125"/></a><a href="/blog/ymca-okc-p2p" class="image-card-content w-inline-block"><div class="image-card-title">YMCA OKC grew their online donor base 218% in less than a year with Funraise P2P</div><div class="image-card-title w-dyn-bind-empty"></div></a></div></div><div role="listitem" class="collection-item w-dyn-item"><div class="image-card"><a href="/blog/maria-droste-counseling-center-case-study" class="w-inline-block"><img alt="Maria Droste Counseling Center cas study header" src="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a5a50ea6e7296c1bb3eb379_MariaDrosteCaseStudy_Blog_Header.jpg" sizes="100vw" srcset="https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a5a50ea6e7296c1bb3eb379_MariaDrosteCaseStudy_Blog_Header-p-500.jpg 500w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a5a50ea6e7296c1bb3eb379_MariaDrosteCaseStudy_Blog_Header-p-800.jpg 800w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a5a50ea6e7296c1bb3eb379_MariaDrosteCaseStudy_Blog_Header-p-1080.jpg 1080w, https://cdn.prod.website-files.com/5da60733afec9db1fb998273/6a5a50ea6e7296c1bb3eb379_MariaDrosteCaseStudy_Blog_Header.jpg 1600w" class="image-125"/></a><a href="/blog/maria-droste-counseling-center-case-study" class="image-card-content w-inline-block"><div class="image-card-title">Maria Droste Counseling Center switched to Funraise and raised almost $10K with their first event</div><div class="image-card-title w-dyn-bind-empty"></div></a></div></div></div></div></div></div><div class="content-section footer"><div class="content-container"><div class="border-block-copy"><div><div class="div-block-291"><a href="/" class="footer-logo-copy w-inline-block"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5d6ecfcf7788c43958f8df80_Funraise_Logo_Dark.svg" width="150" height="30" alt="Funraise Logo" class="image-164-copy"/></a><a href="/subscribe" class="button ft w-button">Subscribe for Updates</a></div></div></div><div class="w-layout-grid footer-columns light"><div class="badges"><div class="w-layout-grid small-badge-grid"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a99636760dff4dbe33d0a43_G2_MomentumLeader_Fall2026.svg" loading="lazy" alt="G2 Momentum Leader badge, Fall 2026" class="image-108-copy"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a99635dc9ea6343f386022b_G2_BestSupport_SmallBusiness_Fall2026.svg" loading="lazy" id="w-node-_1b16efad-378e-8e47-1080-94cb5b7a143c-764e0c20" alt="G2 Best Support Small Business badge, Fall 2026" class="image-108-copy"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a99635f5b5bf1cd0c117ae4_G2_EasiestToUse_Fall2026.svg" loading="lazy" id="w-node-_1b16efad-378e-8e47-1080-94cb5b7a143d-764e0c20" alt="G2 Easiest To Use badge, Fall 2026" class="image-108-copy"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a99635904bc77028de06d16_G2_HighPerformer_Fall2026.svg" loading="lazy" id="w-node-_1b16efad-378e-8e47-1080-94cb5b7a143e-764e0c20" alt="G2 High Performer badge, Fall 2026" class="image-108-copy"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a99636446e443ddec7f4681_G2_EasiestSetup_Fall2026.svg" loading="lazy" alt="G2 Easiest Setup badge, Fall 2026" class="image-108-copy"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a99668e84056e9ed3a78106_Capterra_Shortlist_2026-tight.png" loading="lazy" id="w-node-_1b16efad-378e-8e47-1080-94cb5b7a1438-764e0c20" sizes="(max-width: 479px) 54vw, (max-width: 991px) 15vw, 16vw" alt="Capterra Shortlist 2026 badge" srcset="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a99668e84056e9ed3a78106_Capterra_Shortlist_2026-tight-p-500.png 500w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a99668e84056e9ed3a78106_Capterra_Shortlist_2026-tight-p-800.png 800w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a99668e84056e9ed3a78106_Capterra_Shortlist_2026-tight-p-1080.png 1080w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6a99668e84056e9ed3a78106_Capterra_Shortlist_2026-tight.png 1450w" class="image-108"/></div></div><div><div class="title-label-bold">Platform</div><ul role="list" class="footer-links"><li class="footer-link pricing-link"><a href="/features" class="link-text footer-link">All Features</a></li><li class="footer-link"><a href="/features/donation-forms" class="link-text footer-link">Donation Forms</a></li><li class="footer-link"><a href="/features/donation-pages" class="link-text footer-link">Donation Pages</a></li><li class="footer-link"><a href="/features/donor-crm" class="link-text footer-link">Donor CRM</a></li><li class="footer-link"><a href="/features/fundraising-websites" class="link-text footer-link">Fundraising Websites</a></li><li class="footer-link"><a href="/features/peer-to-peer-fundraising" class="link-text footer-link">Peer-to-Peer Fundraising</a></li><li class="footer-link"><a href="/features/recurring-giving" class="link-text footer-link">Recurring Giving</a></li><li class="footer-link"><a href="/features/events-and-ticketing" class="link-text footer-link">Events & Ticketing</a></li><li class="footer-link"><a href="/features/fundraising-auctions" class="link-text footer-link">Nonprofit Auctions</a></li><li class="footer-link"><a href="/features/text-engagement" class="link-text footer-link">Text-to-Give</a></li><li class="footer-link"><a href="/features/fundraising-intelligence" class="link-text footer-link">Reports & Dashboards</a></li><li class="footer-link"><a href="/roadmap" target="_blank" class="link-text footer-link">Product Roadmap</a></li></ul></div><div><div class="title-label-bold">Support</div><ul role="list" class="footer-links"><li class="footer-link"></li><li class="footer-link"><a href="/support" class="link-text footer-link">Support</a></li><li class="footer-link"><a href="https://help.funraise.io/" class="link-text footer-link">Knowledge Base</a></li><li class="footer-link"><a href="https://university.funraise.org/" class="link-text footer-link">Funraise University</a></li><li class="footer-link"><a href="https://community.funraise.org/" target="_blank" class="link-text footer-link">Community Forum</a></li><li class="footer-link"><a href="https://funraise.statuspage.io/" target="_blank" class="link-text footer-link">Status</a></li></ul></div><div><div class="title-label-bold">Strategy</div><ul role="list" class="footer-links light"><li class="footer-link"><a href="/category/case-studies" class="link-text footer-link">Case Studies</a></li><li class="footer-link"><a href="/growth-statistics" class="link-text footer-link">Growth Stats</a></li><li class="footer-link"><a href="/causes" class="link-text footer-link">Nonprofit Causes</a></li><li class="footer-link"><a href="/podcast" class="link-text footer-link">Nonprofit Podcast</a></li><li class="footer-link"><a href="/blog" class="link-text footer-link">Nonprofit News</a></li><li class="footer-link"><a href="/downloads" class="link-text footer-link">Downloads & Webinars</a></li><li class="footer-link"><a href="/fundraising-ideas" class="link-text footer-link">Nonprofit Fundraising Ideas</a></li><li class="footer-link"><a href="/giving-tuesday-resources" class="link-text footer-link">Giving Tuesday Resources</a></li><li class="footer-link"><a href="/appealai" class="link-text footer-link">Free Nonprofit AI Tools</a></li></ul></div><div><div class="title-label-bold">Company</div><ul role="list" class="footer-links"><li class="footer-link"></li><li class="footer-link"><a href="/reviews" class="link-text footer-link">Reviews</a></li><li class="footer-link"><a href="/about" class="link-text footer-link">About</a></li><li class="footer-link"><a href="/team" class="link-text footer-link">Team</a></li><li class="footer-link"><a href="/contact" class="link-text footer-link">Contact</a></li><li class="footer-link"><a href="/partners" class="link-text footer-link">Partners</a></li><li class="footer-link"><a href="/refer-a-friend" class="link-text footer-link">Refer a Friend</a></li></ul></div></div><div class="border-block bottom"><div class="columns-13 w-row"><div class="w-col w-col-3"><div class="left-half"><ul role="list" class="social-links dark"><li class="social-link-list dark"><a href="https://www.facebook.com/funraiseplatform" target="_blank" class="social-link dark w-inline-block"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6080786df5ea7f22b5449ffe_facebook_dark.svg" width="24" height="24" alt="Facebook icon"/></a></li><li class="social-link-list dark"><a href="https://x.com/funraise" target="_blank" class="social-link dark w-inline-block"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/65fd3f0c7b9e3fcf29f146fc_icons8-twitterx-60.svg" width="24" height="24" alt="Twitter icon" class="image-167"/></a></li><li class="social-link-list dark"><a href="https://www.linkedin.com/company/funraise" target="_blank" class="social-link dark w-inline-block"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6080786f61ce4072d5d6bdcd_linkedin_dark.svg" width="22" height="22" alt="Linkedin icon"/></a></li><li class="social-link-list dark"><a href="https://www.instagram.com/funraise/" target="_blank" class="social-link dark w-inline-block"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6080786e3907c7bfa310835d_instagram_dark.svg" width="24" height="24" alt="instagram icon"/></a></li><li class="social-link-list dark"><a href="https://www.youtube.com/channel/UCexHcj-hA3W91OtezjSnnew?sub_confirmation=1" target="_blank" class="social-link dark w-inline-block"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/664c72609abdb2098fdba74c_youtube-svgrepo-com%20(5).svg" width="30" height="30" alt="instagram icon" class="image-175"/></a></li></ul></div></div><div class="footer-column-11 w-col w-col-9"><div class="right-half"><div class="legal-block"><a href="/about/privacy-policy" class="link-text footer-link inline">Privacy Policy</a><div class="link-text footer-link inline divider">|</div><a href="/about/terms-and-conditions" class="link-text footer-link inline">Terms & Conditions</a></div><div class="app-links small"><a href="https://apps.apple.com/us/app/funraise/id1441342210?mt=8" target="_blank" class="card app-store-button small w-inline-block"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5de8386b8b74dc7a90691a1d_app-store-badge-transparent-nomargin.webp" width="250" height="100" loading="lazy" alt="Download at the appstore button" class="app-badge"/></a><a href="https://play.google.com/store/apps/details?id=io.funraise.omni&utm_source=funraise_website&utm_campaign=footer&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1" target="_blank" class="card app-store-button small last w-inline-block"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5de8387585533806317a279b_en_badge_web_generic-nomargin.webp" width="282" height="100" loading="lazy" alt="Get it on google play button" srcset="https://cdn.prod.website-files.com/5d6eb414117b673d2
194611598f2/5de8387585533806317a279b_en_badge_web_generic-nomargin-p-500.webp 500w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5de8387585533806317a279b_en_badge_web_generic-nomargin.webp 564w" sizes="(max-width: 479px) 92vw, 282px" class="app-badge"/></a></div></div></div></div></div></div></div>
1946<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=5d6eb414117b673d211598f2" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
1946<script src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/js/funraise-dev.schunk.181a2070a530b302.js" type="text/javascript" integrity="sha384-JWdgqTXFub/8eKOkMquT9MN7nnkFfqj2IsxHNIv8W+n3NdpIA3X+EZEx+ykmtOKR" crossorigin="anonymous"></script>
1946<script src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/js/funraise-dev.b567cd25.fd06d3ad479a50cc.js" type="text/javascript" integrity="sha384-C5pHvVZe5VEM/LmkpoVVfH6dpYnMtmgDODzg3kaN6GGdiy4gbgp1HWMNiEZJ4NHq" crossorigin="anonymous"></script>
1946<!-- GTM noscript -->
vendor: 71 bytes, lines 1946-1948
1946 1947<noscript> 1948 <iframe src="https://www.googletagmanager.com/ns.html?id=
1948GTM-P7XD5SD
vendor: 96 bytes, lines 1948-1952
1948" 1949 height="0" width="0" style="display:none;visibility:hidden"></iframe> 1950</noscript> 1951 1952
1953<!-- ========================================================= 1954 BUTTONS OUTSIDE THE NAV: always nav-btn-default, never nav-free-btn 1955 ========================================================= -->
1956<script defer> 1957 document.addEventListener('DOMContentLoaded', () => { 1958 document.querySelectorAll('.nav-btn-default').forEach(btn => btn.style.display = 'flex'); 1959 document.querySelectorAll('.nav-free-btn').forEach(btn => btn.style.display = 'none'); 1960 }); 1961</script>
1961 1962 1963 1964<!-- NAV BUTTONS (geo): US â Sign up for Free, everyone else â Get a Demo. 1965 Both pairs: desktop (.nav-free-btn-en/.nav-btn-default-nav) 1966 and the mobile bar (.nav-free-btn/.nav-btn-default). 1967 Mida A/B tests still override this via CSS with !important. -->
1968<script defer> 1969 async function isUserFromUS() { 1970 const cached = sessionStorage.getItem('isUSUser'); 1971 if (cached !== null) return cached === 'true'; 1972 try { 1973 const response = await fetch('https://ipapi.co/json/'); 1974 const data = await response.json(); 1975 const isUS = data.country_code === 'US'; 1976 sessionStorage.setItem('isUSUser', String(isUS)); 1977 return isUS; 1978 } catch (e) { 1979 console.error('Geolocation check failed:', e); 1980 return false; // no response = safe default: Get a Demo 1981 } 1982 } 1983 1984 document.addEventListener('DOMContentLoaded', async () => { 1985 const free = document.querySelectorAll('.nav-free-btn-en, .nav-free-btn'); 1986 const demo = document.querySelectorAll('.nav-btn-default-nav, .nav-btn-default'); 1987 if (!free.length && !demo.length) return; 1988 const isUS = await isUserFromUS(); 1989 (isUS ? free : demo).forEach(btn => (btn.style.display = 'flex')); 1990 (isUS ? demo : free).forEach(btn => (btn.style.display = 'none')); 1991 }); 1992</script>
1992 1993 1994 1995<!-- NAVBAR + banner margin fix on scroll (throttled via requestAnimationFrame) -->
1996<script defer> 1997 document.addEventListener("DOMContentLoaded", () => { 1998 const bar = document.querySelector(".promo-bar"); 1999 const header = document.querySelector(".header-section"); 2000 if (!bar || !header) return; 2001 2002 function applyState(atTop) { 2003 if (atTop) { 2004 bar.style.display = "block"; 2005 header.style.marginTop = "45px"; 2006 } else { 2007 bar.style.display = "none"; 2008 header.style.marginTop = "0px"; 2009 } 2010 } 2011 2012 let ticking = false; 2013 window.addEventListener("scroll", () => { 2014 if (ticking) return; 2015 ticking = true; 2016 requestAnimationFrame(() => { 2017 applyState(window.pageYOffset === 0); 2018 ticking = false; 2019 }); 2020 }, { passive: true }); 2021 2022 window.addEventListener("resize", () => applyState(window.pageYOffset === 0)); 2023 applyState(true); 2024 }); 2025</script>
2025 2026 2027 2028<!-- Webflow: remove hidden conditional elements -->
2029<script defer> 2030 document.addEventListener("DOMContentLoaded", () => { 2031 document.querySelectorAll('.w-condition-invisible').forEach(el => el.remove()); 2032 }); 2033</script>
2033 2034 2035<!-- ALT fallback: derive alt text from file names for images missing alt -->
2036<script defer> 2037 document.addEventListener("DOMContentLoaded", () => { 2038 document.querySelectorAll("img").forEach(img => { 2039 if (!img.alt) { 2040 const src = img.src; 2041 const fileName = src.substring(src.lastIndexOf("/") + 1, src.lastIndexOf(".")); 2042 const underscore = fileName.lastIndexOf("_"); 2043 if (underscore !== -1) { 2044 img.alt = fileName.substring(underscore + 1); 2045 } 2046 } 2047 }); 2048 }); 2049</script>
2049 2050 2051<!-- INTERCOM: open the chat on click -->
2052<script defer> 2053 document.addEventListener("DOMContentLoaded", () => { 2054 document.querySelectorAll("#chat-now-nav").forEach(button => { 2055 button.addEventListener("click", () => { 2056 if (typeof Intercom === "function") { 2057 Intercom("show"); 2058 } 2059 }); 2060 }); 2061 }); 2062</script>
2062 2063 2064<!-- HUBSPOT: delayed loader (2026-07-31) â loads on first user interaction 2065 or after 4 s, whichever comes first. Replaces the old direct 2066 hs-script-loader line; visit tracking still fires, just later. -->
2067<script> 2068 (function () { 2069 var loaded = false; 2070 function loadHubSpot() { 2071 if (loaded) return; 2072 loaded = true; 2073 var s = document.createElement('script'); 2074 s.id = 'hs-script-loader'; 2075 s.async = true; 2076 s.defer = true; 2077 s.src = '//js.hs-scripts.com/6549460.js'; 2078 document.body.appendChild(s); 2079 ['pointerdown', 'keydown', 'touchstart', 'scroll'].forEach(function (e) { 2080 window.removeEventListener(e, loadHubSpot, { passive: true }); 2081 }); 2082 } 2083 ['pointerdown', 'keydown', 'touchstart', 'scroll'].forEach(function (e) { 2084 window.addEventListener(e, loadHubSpot, { passive: true, once: true }); 2085 }); 2086 setTimeout(loadHubSpot, 4000); 2087 })(); 2088</script>
2088 2089 2090<!-- FIRST INTERACTION event (2026-07-31) â GTM Custom Event trigger for 2091 delaying Intercom/Clarity/FB Pixel (see gtm-render-path-spec.md). 2092 Fires on first interaction or after 5 s, whichever comes first. -->
2093<script> 2094 (function () { 2095 var fired = false; 2096 function fire() { 2097 if (fired) return; fired = true; 2098 window.dataLayer = window.dataLayer || []; 2099 window.dataLayer.push({ event: 'first_interaction' }); 2100 } 2101 ['pointerdown', 'keydown', 'touchstart', 'scroll'].forEach(function (e) { 2102 window.addEventListener(e, fire, { passive: true, once: true }); 2103 }); 2104 setTimeout(fire, 5000); 2105 })(); 2106</script>
2106 2107 2108<!-- MATERIAL ICONS: replace ligature names (e.g. keyboard_arrow_down) with Unicode codepoints --> 2109<!-- Reason: subsetted fonts have no ligature tables â swapping to codepoints lets glyphs render -->
2110<script> 2111(function() { 2112 'use strict'; 2113 // Material Icons codepoints as \u-escapes so they survive copy-paste 2114 // (Private Use Area characters often get lost in clipboards/editors) 2115 var map = { 2116 "keyboard_arrow_down": "\uE313", 2117 "chevron_right": "\uE5CC", 2118 "check": "\uE5CA", 2119 "check_circle": "\uE86C", 2120 "favorite": "\uE87D", 2121 "lock": "\uE897", 2122 "code": "\uE86F", 2123 "payment": "\uE8A1", 2124 "attach_money": "\uE227", 2125 "group": "\uE7EF", 2126 "share": "\uE80D", 2127 "content_copy": "\uE14D" 2128 }; 2129 // Classes using Materialicons / MATERIAL ICONE in CSS 2130 var sel = '.arrow-faq,.accordion-icon,.icon-10,.text-span-33,.text-span-36,' + 2131 '.link-arrow,.arrow,.icon,.cta-icon,.api-arrow,.pricing-icon,.search-icon,' + 2132 '.material-icon,.search-button,.compare-icon,.icon-compare-page,.service-icon,' + 2133 '.eoy22-google-icon,.payments-tooltip-link,.tooltip-icone-green,' + 2134 '.text-block-18,.text-block-21,.text-block-24,.text-block-26,.text-block-37,' + 2135 '.text-block-40,.text-block-42,.text-block-1318,.text-block-1385,.text-block-1386'; 2136 function fix(root) { 2137 (root || document).querySelectorAll(sel).forEach(function(el) { 2138 var t = el.textContent.trim(); 2139 if (map[t]) el.textContent = map[t]; 2140 }); 2141 } 2142 if (document.readyState === 'loading') { 2143 document.addEventListener('DOMContentLoaded', function(){ fix(); }); 2144 } else { 2145 fix(); 2146 } 2147 // Also after window.load for CMS rich text that loads later 2148 window.addEventListener('load', function(){ fix(); }); 2149})(); 2150</script>
2150 2151 2152<!-- YEAR REPLACEMENT: {current.year} â current year (one script instead of two, one MutationObserver instead of 13) -->
2153<script> 2154(function() { 2155 'use strict'; 2156 2157 const YEAR_PLACEHOLDERS = ['{current.year}', '{current_year}']; 2158 const year = new Date().getFullYear().toString(); 2159 2160 function containsPlaceholder(text) { 2161 if (!text) return false; 2162 return YEAR_PLACEHOLDERS.some(p => text.includes(p)); 2163 } 2164 2165 function replaceInText(text) { 2166 let r = text; 2167 for (const p of YEAR_PLACEHOLDERS) r = r.split(p).join(year); 2168 return r; 2169 } 2170 2171 function shouldSkipElement(element) { 2172 if (!element) return true; 2173 const tag = element.tagName?.toLowerCase(); 2174 if (tag === 'script' || tag === 'style' || tag === 'noscript') return true; 2175 if (element.closest && element.closest('[data-initialized],[data-reactroot]')) return true; 2176 return false; 2177 } 2178 2179 function replaceInSubtree(root) { 2180 if (!root) return; 2181 const walker = document.createTreeWalker( 2182 root, 2183 NodeFilter.SHOW_TEXT, 2184 { 2185 acceptNode(node) { 2186 if (shouldSkipElement(node.parentElement)) return NodeFilter.FILTER_REJECT; 2187 return containsPlaceholder(node.textContent) 2188 ? NodeFilter.FILTER_ACCEPT 2189 : NodeFilter.FILTER_REJECT; 2190 } 2191 } 2192 ); 2193 const nodes = []; 2194 let n; 2195 while ((n = walker.nextNode())) nodes.push(n); 2196 nodes.forEach(node => { node.textContent = replaceInText(node.textContent); }); 2197 } 2198 2199 function debounce(fn, wait) { 2200 let t; 2201 return (...args) => { 2202 clearTimeout(t); 2203 t = setTimeout(() => fn(...args), wait); 2204 }; 2205 } 2206 2207 let observerStarted = false; 2208 function start() { 2209 replaceInSubtree(document.body); 2210 if (observerStarted) return; 2211 observerStarted = true; 2212 2213 const observer = new MutationObserver(debounce((mutations) => { 2214 for (const m of mutations) { 2215 if (m.type === 'childList') { 2216 m.addedNodes.forEach(node => { 2217 if (node.nodeType === Node.ELEMENT_NODE && !shouldSkipElement(node)) { 2218 replaceInSubtree(node); 2219 } else if (node.nodeType === Node.TEXT_NODE && !shouldSkipElement(node.parentElement)) { 2220 if (containsPlaceholder(node.textContent)) { 2221 node.textContent = replaceInText(node.textContent); 2222 } 2223 } 2224 }); 2225 } else if (m.type === 'characterData') { 2226 if (m.target.nodeType === Node.TEXT_NODE && !shouldSkipElement(m.target.parentElement)) { 2227 if (containsPlaceholder(m.target.textContent)) { 2228 m.target.textContent = replaceInText(m.target.textContent); 2229 } 2230 } 2231 } 2232 } 2233 }, 100)); 2234 2235 observer.observe(document.body, { 2236 childList: true, 2237 subtree: true, 2238 characterData: true 2239 }); 2240 } 2241 2242 if (document.readyState === 'loading') { 2243 document.addEventListener('DOMContentLoaded', start); 2244 } else { 2245 start(); 2246 } 2247 // Single late retry for CMS Rich Text on blog posts that load via window.load 2248 window.addEventListener('load', () => replaceInSubtree(document.body)); 2249})(); 2250</script>
vendor: 1 bytes, line 2250
2250
2251<script> 2252$(document).ready(function () { 2253 $(document).on("click", "#ShareButton", function (e) { 2254 $("body").append('<input id="copyURL" type="text" value="" />'); 2255 $("#copyURL").val(window.location.href).select(); 2256 document.execCommand("copy"); 2257 $("#copyURL").remove(); 2258 }); 2259}); 2260</script>
vendor: 1 bytes, line 2260
2260
2261<script> 2262document.addEventListener("DOMContentLoaded", function() { 2263 var categoryName = "Case Studies"; 2264 2265 var hideSidebarLinks = function() { 2266 document.querySelectorAll(".blog-post-sidebar-link-block").forEach(function(element) { 2267 element.style.display = 'none'; 2268 }); 2269 }; 2270 2271 hideSidebarLinks(); 2272 2273 var showElementById = function(id) { 2274 document.getElementById(id).style.display = 'block'; 2275 }; 2276 2277 switch (categoryName) { 2278 case 'Nonstop Nonprofit': 2279 case 'CEO Insights': 2280 case 'At a Glance': 2281 case 'Downloads': 2282 case 'Mailchimp': 2283 case 'Year-End Giving': 2284 case 'Giving Tuesday': 2285 case 'Donation Management': 2286 case 'Donation Forms': 2287 case 'Funding Awesome': 2288 case 'Updates': 2289 case 'Case Studies': 2290 case 'Best Practices': 2291 case 'Webinars': 2292 showElementById('cam'); 2293 break; 2294 case 'Nonprofit Reporting': 2295 case 'Reports and Statistics': 2296 case 'Propensity to Give': 2297 case 'Salesforce for Nonprofits': 2298 case 'QuickBooks': 2299 showElementById('reports'); 2300 break; 2301 case 'Fundraising Ideas': 2302 case 'P2P Fundraising': 2303 case 'Nonprofit To-Do List': 2304 case 'Donation Pledges': 2305 case 'Facebook Fundraising': 2306 case 'Social Fundraising': 2307 showElementById('ptp'); 2308 break; 2309 case 'Nonprofit Events': 2310 showElementById('events'); 2311 break; 2312 case 'Mobile Fundraising': 2313 showElementById('donation'); 2314 break; 2315 case 'Recurring Giving': 2316 showElementById('recurring'); 2317 break; 2318 case 'Donor Communications': 2319 case 'Donor Relations Management': 2320 showElementById('donor'); 2321 break; 2322 case 'Text Engagement': 2323 showElementById('text'); 2324 break; 2325 case 'Nonprofit Security': 2326 showElementById('sec'); 2327 break; 2328 default: 2329 showElementById('cam'); 2330 } 2331}); 2332 2333</script>
vendor: 1 bytes, line 2333
2333
2334<script> 2335const contentIds = ['#toc-content', '#toc-content-2']; // lista elementów do przeszukania 2336let foundHeadings = false; // flaga, która sprawdza, czy znaleziono jakiekolwiek h2 2337 2338contentIds.forEach(function(contentId) { 2339 const content = document.querySelector(contentId); 2340 if (content) { 2341 const headings = content.querySelectorAll("h2"); 2342 2343 // Jeżeli znaleziono jakieÅ h2, ustawiamy flagÄ na true 2344 if (headings.length > 0) { 2345 foundHeadings = true; 2346 } 2347 2348 headings.forEach(function(heading, i) { 2349 const currentIndex = document.querySelectorAll("#toc a").length; // uzyskujemy aktualnÄ liczbÄ elementów TOC, żeby kontynuowaÄ numeracjÄ 2350 heading.setAttribute("id", "toc-" + currentIndex); // ustawienie unikalnego ID dla każdego h2 2351 const item = document.createElement("a"); // utworzenie linku do TOC 2352 item.innerHTML = '<span>' + heading.innerHTML + '</span>'; // ustawienie tekstu linku na podstawie treÅci h2 2353 item.setAttribute("class", "tocitem"); // przypisanie odpowiedniej klasy 2354 item.setAttribute("href", "#toc-" + currentIndex); // ustawienie poprawnego linku 2355 document.querySelector("#toc").appendChild(item); // dodanie linku do TOC 2356 }); 2357 } 2358}); 2359 2360// Sprawdzanie, czy nie znaleziono żadnych h2 w obu elementach i ukrywanie TOC, jeÅli to konieczne 2361if (!foundHeadings) { 2362 document.querySelector("#toc").style.display = "none"; // ukrywanie elementu TOC 2363} 2364 2365document.querySelectorAll(".tocitem").forEach(function(tocItem) { 2366 tocItem.addEventListener("click", function(event) { 2367 event.preventDefault(); // zapobieganie domyÅlnemu przewijaniu 2368 2369 const targetId = tocItem.getAttribute("href").substring(1); 2370 const targetElement = document.getElementById(targetId); 2371 2372 if (targetElement) { 2373 const navbarHeight = document.querySelector('.navbar').offsetHeight; // pobranie wysokoÅci nawigacji 2374 const additionalOffset = 20; // dodatkowy margines, żeby nagÅówek nie byÅ zasÅoniÄty 2375 const targetPosition = targetElement.getBoundingClientRect().top + window.pageYOffset - navbarHeight - additionalOffset; 2376 2377 window.scrollTo({ 2378 top: targetPosition, 2379 behavior: 'smooth' // pÅynne przewijanie 2380 }); 2381 } 2382 }); 2383}); 2384 2385</script>
2385</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.