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="650ab050bb6e81487eea52fb" data-wf-site="5d6eb414117b673d211598f2" lang="en"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>Pricing | Funraise</title><meta content="Get the most updated pricing for Funraise's nonprofit fundraising platform or open your free Funraise account on this page. Contact Funraise for custom pricing." name="description"/><meta content="Pricing | Funraise" property="og:title"/><meta content="Get the most updated pricing for Funraise's nonprofit fundraising platform or open your free Funraise account on this page. Contact Funraise for custom pricing." property="og:description"/><meta content="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5fad74bdbb83d914d780e941_funraise-meta-2020.jpg" property="og:image"/><meta content="Pricing | Funraise" name="twitter:title"/><meta content="Get the most updated pricing for Funraise's nonprofit fundraising platform or open your free Funraise account on this page. Contact Funraise for custom pricing." name="twitter:description"/><meta content="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5fad74bdbb83d914d780e941_funraise-meta-2020.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/pricing" rel="canonical"/>
1<script type="application/ld+json"> 2 { 3 "@context": "https://schema.org", 4 "@graph": [ 5 { 6 "@type": "WebPage", 7 "@id": "https://www.funraise.org/pricing#webpage", 8 "url": "https://www.funraise.org/pricing", 9 "name": "Pricing | Funraise", 10 "description": "Get the most updated pricing for Funraiseâs nonprofit fundraising platform or open your free Funraise account on this page. Contact Funraise for custom pricing.", 11 "inLanguage": "en", 12 "isPartOf": { 13 "@id": "https://www.funraise.org/#website" 14 }, 15 "breadcrumb": { 16 "@id": "https://www.funraise.org/pricing#breadcrumb" 17 }, 18 "about": { 19 "@id": "https://www.funraise.org/#funraise-software" 20 }, 21 "publisher": { 22 "@id": "https://www.funraise.org/#organization" 23 }, 24 "mainEntity": { 25 "@id": "https://www.funraise.org/pricing#faqpage" 26 } 27 }, 28 { 29 "@type": "BreadcrumbList", 30 "@id": "https://www.funraise.org/pricing#breadcrumb", 31 "itemListElement": [ 32 { 33 "@type": "ListItem", 34 "position": 1, 35 "name": "Home", 36 "item": "https://www.funraise.org/" 37 }, 38 { 39 "@type": "ListItem", 40 "position": 2, 41 "name": "Pricing" 42 } 43 ] 44 }, 45 { 46 "@type": "FAQPage", 47 "@id": "https://www.funraise.org/pricing#faqpage", 48 "mainEntity": [ 49 { 50 "@type": "Question", 51 "name": "Is there a Donors Cover Fees option?", 52 "acceptedAnswer": { 53 "@type": "Answer", 54 "text": "Yes! Donors can opt in to cover fees. When donors cover fees, the additional amount covers both Funraiseâs platform fee and a portion of processing fees. With Funraise, about 90% of donors cover fees!" 55 } 56 }, 57 { 58 "@type": "Question", 59 "name": "Can I migrate my data?", 60 "acceptedAnswer": { 61 "@type": "Answer", 62 "text": "Yes. All organizations have access to Funraiseâs data import tool. Youâll be able to import donors and donations into Funraise." 63 } 64 }, 65 { 66 "@type": "Question", 67 "name": "Can I migrate my recurring subscriptions?", 68 "acceptedAnswer": { 69 "@type": "Answer", 70 "text": "Yes. In most cases, we can migrate recurring donation subscriptions to Funraise. This is dependent on your current gateway; contact us to see if we can migrate your subscriptions." 71 } 72 }, 73 { 74 "@type": "Question", 75 "name": "How flexible are these plans?", 76 "acceptedAnswer": { 77 "@type": "Answer", 78 "text": "Weâre on your side, which means weâre here to help your organization succeed. If a feature you need isnât included in your ideal plan, letâs talk.\nFree plans are standard and cannot be customized." 79 } 80 }, 81 { 82 "@type": "Question", 83 "name": "Is Funraise only for nonprofit organizations?", 84 "acceptedAnswer": { 85 "@type": "Answer", 86 "text": "Yes. Your organization must be registered as a nonprofit or NGO. Organizations around the globe can use Funraise, but a national organization identification number is required. As with most things in life, there are exceptions; contact us with questions." 87 } 88 }, 89 { 90 "@type": "Question", 91 "name": "Is Funraise for all nonprofit organizations?", 92 "acceptedAnswer": { 93 "@type": "Answer", 94 "text": "Yes; however, Funraise does not work with organizations that promote hate or discrimination of any kind. We use the Southern Poverty Law Centerâs extremist groups list as a guide, then as a team, we make our own informed decisions. We have refused service to organizations that are not aligned with a safe, equitable, and free future for all, and we will c
94ontinue to do so." 95 } 96 }, 97 { 98 "@type": "Question", 99 "name": "Are there setup fees?", 100 "acceptedAnswer": { 101 "@type": "Answer", 102 "text": "Nope. Hereâs our full pricing breakdown." 103 } 104 } 105 ] 106 }, 107 { 108 "@type": "SoftwareApplication", 109 "@id": "https://www.funraise.org/#funraise-software", 110 "name": "Funraise", 111 "url": "https://www.funraise.org/", 112 "applicationCategory": "BusinessApplication", 113 "applicationSubCategory": "Nonprofit Fundraising Software", 114 "operatingSystem": "Web", 115 "provider": { 116 "@id": "https://www.funraise.org/#organization" 117 }, 118 "audience": { 119 "@type": "Audience", 120 "audienceType": "Nonprofit organizations and NGOs" 121 }, 122 "offers": [ 123 { 124 "@type": "Offer", 125 "name": "Free", 126 "description": "Get started with essential fundraising tools. Includes: One Donation Form, Up to 1,000 Supporters, Recurring Donations, Events & Tickets, Donor Management, Some integrations.", 127 "priceCurrency": "USD", 128 "url": "https://www.funraise.org/pricing", 129 "price": "0", 130 "priceSpecification": { 131 "@type": "UnitPriceSpecification", 132 "price": "0", 133 "priceCurrency": "USD", 134 "unitCode": "MON", 135 "referenceQuantity": { 136 "@type": "QuantitativeValue", 137 "value": 1, 138 "unitCode": "MON" 139 } 140 } 141 }, 142 { 143 "@type": "Offer", 144 "name": "Standard", 145 "description": "Build your movement with fundraising websites and peer-to-peer fundraising. Includes: All of Free, Donation Forms, Donor management, Recurring donations, Events & Tickets, Fundraising Websites, Peer-to-Peer Fundraising, Attachments, Webhooks, Recurring migration services, Salesforce integration, Raiserâs Edge integration, More integrations.", 146 "priceCurrency": "USD", 147 "url": "https://www.funraise.org/pricing" 148 }, 149 { 150 "@type": "Offer", 151 "name": "Premium", 152 "description": "Accelerate your growth with advanced fundraising tools. Includes: All of Standard, Advanced Reporting & Dashboards, Facebook integration, Dedicated Success Manager, Text Engagement, Subaccounts.", 153 "priceCurrency": "USD", 154 "url": "https://www.funraise.org/pricing" 155 } 156 ] 157 } 158 ] 159 } 160</script>
160<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>
160<!-- META: Site verifications --> 161<meta name="ahrefs-site-verification" content="0fe9b058905dbf479138df8cb312218e9cda5cd5a6f63356170701e82cf2fb02">
162<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>
162 163 164<!-- FONT PRELOAD (2026-07-31): the two Garnett weights used above the fold. 165 Without this they start only after the 732 KB stylesheet is parsed. --> 166<link rel="preload" as="font" type="font/woff2" crossorigin 167 href="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/668be495d4cd18780d80771d_Garnett-Medium.woff2"> 168<link rel="preload" as="font" type="font/woff" crossorigin 169 href="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/668be49650e49af103d0b23e_Garnett-Semibold.wof"> 170 171<!-- ANTI-FLICKER removed 2026-07-31: it hid the whole page (opacity:0) for 172 up to 1 s on every pageview â a direct LCP/FCP cost. --> 173 174<!-- GTM: Google Tag Manager -->
175<script defer>
vendor: 397 bytes, lines 175-185
175 176 (function(w,d,s,l,i){ 177 w[l]=w[l]||[]; 178 w[l].push({'gtm.start': new Date().getTime(), event:'gtm.js'}); 179 var f = d.getElementsByTagName(s)[0], 180 j = d.createElement(s), 181 dl = l!='dataLayer'?'&l='+l:''; 182 j.async = true; 183 j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 184 f.parentNode.insertBefore(j,f); 185 })(window, document, 'script', 'dataLayer', '
185GTM-P7XD5SD
vendor: 4 bytes, line 185
185');
186</script>
186 187 188<!-- MIDA: A/B Testing Script -->
189<script defer src="https://cdn.mida.so/js/optimize.js?key=XZbzAeVxR9AwKRo9DGmWNy"></script>
189 190 191<!-- GLOBAL CSS (left untouched on purpose) --> 192<style media="screen"> 193 body{ 194-webkit-font-smoothing: antialiased; 195 -moz-osx-font-smoothing: grayscale; 196 } 197@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}
197.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}
197.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)} 198 199.nav-btn-default, 200.nav-free-btn, 201.nav-btn-default-nav, 202.nav-free-btn-en { 203 display: none; 204} 205 206@media (max-width: 1215px) { 207 #banner-nav-pill { 208 display: none; 209 } 210} 211 212@media (max-width: 996px) { 213.mobile-hidden-important{ 214 display: none !important; 215} 216} 217 .nav-link-wrapper-badge:hover .nav-text-grey{ 218 color: #2979ff; 219 } 220 .nav-link-wrapper-box:hover .nav-text-grey{ 221 color: #2979ff; 222 } 223 224 .feature_page_embed iframe{ 225 border-radius: 12px; 226 } 227</style> 228<!-- IMAGE SIZES RUNTIME PATCH â patches `sizes` attribute for misconfigured images. 229 Source: audits/image-sizes-runtime.js in competitors repo. 230 Verify: document.querySelectorAll('img[data-sizes-patched]').length -->
231<script> 232(function () { 233 'use strict'; 234 const RULES = [ 235 { 236 selector: 'img.image-183', 237 sizes: '(min-width: 992px) 50vw, (min-width: 768px) 49vw, 100vw', 238 }, 239 ]; 240 function patch(img) { 241 for (const rule of RULES) { 242 if (!img.matches(rule.selector)) continue; 243 if (img.getAttribute('sizes') === rule.sizes) return; 244 img.setAttribute('sizes', rule.sizes); 245 img.setAttribute('data-sizes-patched', '1'); 246 if (img.complete && img.currentSrc) { 247 const src = img.src; 248 img.removeAttribute('src'); 249 img.src = src; 250 } 251 return; 252 } 253 } 254 function patchAll(root) { 255 (root || document).querySelectorAll('img').forEach(patch); 256 } 257 if (document.readyState === 'loading') { 258 document.addEventListener('DOMContentLoaded', () => patchAll()); 259 } else { 260 patchAll(); 261 } 262 const observer = new MutationObserver((mutations) => { 263 for (const m of mutations) { 264 m.addedNodes.forEach((n) => { 265 if (n.nodeType !== 1) return; 266 if (n.tagName === 'IMG') patch(n); 267 else if (n.querySelectorAll) patchAll(n); 268 }); 269 } 270 }); 271 if (document.body) { 272 observer.observe(document.body, { childList: true, subtree: true }); 273 } else { 274 document.addEventListener('DOMContentLoaded', () => { 275 observer.observe(document.body, { childList: true, subtree: true }); 276 }); 277 } 278})(); 279</script>
279 280 281<!-- 282 Hero Section Fix â Image Overflow Across All Feature Pages 283 Funraise.org · 2026-05-12 284 285 WHERE TO PASTE THIS: 286 Webflow Designer â Project Settings â Custom Code â "Head Code" 287 Paste entire content of this file (both <style> and
287<script> blocks). 288 Save â Publish. 289 290 WHAT IT DOES: 291 1. Fixes broken `.image-feature-page` in production CSS â restores width: 150% 292 and top: -71px offset so hero image overflows past viewport edge. 293 2. Normalizes `.hero_image-feature` (used on grid-43 pages) to also use width: 150% 294 so it overflows on wide monitors (1920+). 295 3. Normalizes `.grid-43` columns to match `.grid-45` (1fr 1fr). 296 4. Resets to single-column on tablet/mobile (<991px). 297 5. Overrides the `sizes` attribute on all hero <img> elements so the browser 298 loads the high-res srcset variant (1080w/1170w) instead of the small 500w 299 variant â image appears sharp. 300 301 AFFECTED PAGES (24 feature pages): 302 All /features/* pages. Scope is restricted to `.hero--left--fixed-opacity ...` 303 so no other sections are affected. 304 305 ROLLBACK: Remove the contents of this block from Head Code, save, publish. 306--> 307 308<style> 309/* âââ Hero overflow fix · 2026-05-12 âââ */ 310.hero--left--fixed-opacity .image-feature-page { 311 width: 150%; 312 inset: -71px auto auto 0%; 313} 314 315.hero--left--fixed-opacity .hero_image-feature, 316.hero--left--fixed-opacity .hero_image-feature.prev-version { 317 width: 150%; 318 min-width: 0; 319 inset: -71px auto auto 0%; 320} 321 322.hero--left--fixed-opacity .grid-43 { 323 grid-template-columns: 1fr 1fr; 324 grid-column-gap: 20px; 325} 326 327@media (max-width: 991px) { 328 .hero--left--fixed-opacity .image-feature-page, 329 .hero--left--fixed-opacity .hero_image-feature, 330 .hero--left--fixed-opacity .hero_image-feature.prev-version { 331 width: 100%; 332 min-width: 0; 333 max-width: 100%; 334 inset: auto; 335 position: static; 336 } 337} 338</style> 339
340<script> 341(function () { 342 var SIZES = '(max-width: 479px) 100vw, (max-width: 767px) 100vw, (max-width: 991px) 800px, 1100px'; 343 function applySizes() { 344 var imgs = document.querySelectorAll( 345 '.hero--left--fixed-opacity .image-feature-page, .hero--left--fixed-opacity .hero_image-feature' 346 ); 347 imgs.forEach(function (img) { img.setAttribute('sizes', SIZES); }); 348 } 349 if (document.readyState === 'loading') { 350 document.addEventListener('DOMContentLoaded', applySizes); 351 } else { 352 applySizes(); 353 } 354})(); 355</script>
355 356<link href="https://www.funraise.org/pricing" rel="canonical"/> 357 358<style media="screen"> 359 360.call-out-box .link-icone-arrow{ 361 transition: 0.3s; 362} 363.call-out-box:hover .link-icone-arrow { 364 transform: translate( 8px , 0); 365} 366.plan-chart-row:nth-of-type(even) { 367 background-image: linear-gradient(to bottom, var(--light-gray), var(--light-gray)); 368 border-radius: 6px; 369} 370 371 @media screen and (min-width: 1216px) and (max-width: 1316px) { 372 .pricing-lead.left-aligned { 373 min-height: 4.8em !important; 374 } 375 } 376 @media screen and (min-width: 1400px) and (max-width: 1463px) { 377 .pricing-lead.left-aligned { 378 min-height: 4.8em !important; 379 } 380} 381</style></head><body class="body"><div><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
381702bad89f47b87835c5895e_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
381702bad89f47b87835c58964_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">
382 <div class="frnv__inner"> 383 384 <header class="frnv__head"> 385 <div> 386 <p class="frnv__eyebrow">See Funraise in action</p> 387 </div> 388 <div class="frnv__nav" aria-hidden="false"> 389 <button class="frnv__arrow" data-dir="-1" type="button" aria-label="Previous videos"> 390 <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> 391 </button> 392 <button class="frnv__arrow" data-dir="1" type="button" aria-label="Next videos"> 393 <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> 394 </button> 395 </div> 396 </header> 397 398 <div class="frnv__viewport"> 399 <ul class="frnv__track" id="frnv-track"> 400 <li class="frnv__item"> 401 <button class="frnv__card" type="button" data-media="auirnep9at" data-title="Liberty in North Korea" 402 style="--poster:url('https://embed-ssl.wistia.com/deliveries/788b7fff142b4c477f8b7ffe929a426d.jpg?image_crop_resized=720x960')" 403 aria-label="Play video: Liberty in North Korea"> 404 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 405 <span class="frnv__name">Liberty in North Korea</span> 406 </button> 407 </li> 408 <li class="frnv__item"> 409 <button class="frnv__card" type="button" data-media="9ud9rtsq0y" data-title="Bahati Foundation" 410 style="--poster:url('https://embed-ssl.wistia.com/deliveries/2df6ce3257104ed13105284788cf5a7d.jpg?image_crop_resized=720x960')" 411 aria-label="Play video: Bahati Foundation"> 412 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 413 <span class="frnv__name">Bahati Foundation</span> 414 </button> 415 </li> 416 <li class="frnv__item"> 417 <button class="frnv__card" type="button" data-media="f65h6noxj8" data-title="YMCA of Greater OKC" 418 style="--poster:url('https://embed-ssl.wistia.com/deliveries/c4d3bd25efce0f9182a1c69cb15693b8.jpg?image_crop_resized=720x960')" 419 aria-label="Play video: YMCA of Greater OKC"> 420 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 421 <span class="frnv__name">YMCA of Greater OKC</span> 422 </button> 423 </li> 424 <li class="frnv__item"> 425 <button class="frnv__card" type="button" data-media="pf77uoni1l" data-title="Liberty in North Korea" 426 style="--poster:url('https://embed-ssl.wistia.com/deliveries/386a4bcc31a982045dc55f20e5994053.jpg?image_crop_resized=720x960')" 427 aria-label="Play video: Liberty in North Korea"> 428 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 429 <span class="frnv__name">Liberty in North Korea</span> 430 </button> 431 </li> 432 <li class="frnv__item"> 433 <button class="frnv__card" type="button" data-media="iqbujj6kd5" data-title="Momento Foundation" 434 style="--poster:url('https://embed-ssl.wistia.com/deliveries/ce68e0bd013fdc7817166b3b826d8abe.jpg?image_crop_resized=720x960')" 435 aria-label="Play video: Momento Foundation"> 436 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 437 <span class="frnv__name">Momento Foundation</span> 438 </button> 439 </li> 440 <li class="frnv__item"> 441 <button class="frnv__card" type="button" data-media="8msd1b6kr2" data-title="Dressember" 442 style="--poster:url('https://embed-ssl.wistia.com/deliveries/f0dc9b3745aac6e0afc8f91f4990b7a1.jpg?image_crop_resized=720x960')" 443 aria-label="Play video: Dressember"> 444 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 445 <span class="frnv__name">Dressember</span> 446 </button> 447 </li> 448 <li class="frnv__item"> 449 <button class="frnv__card" type="button" data-media="cfkscchx2x" data-title="BLUE Missions" 450 style="--poster:url('https://embed-ssl.wistia.com/deliveries/190b246a6a212a91ec923384a890a026.jpg?image_crop_resized=720x960')" 451 aria-label="Play video: BLUE Missions">
452 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 453 <span class="frnv__name">BLUE Missions</span> 454 </button> 455 </li> 456 <li class="frnv__item"> 457 <button class="frnv__card" type="button" data-media="aagaqnuyng" data-title="CARE for AIDs" 458 style="--poster:url('https://embed-ssl.wistia.com/deliveries/535f50e10e968426ae6f73d15913efcd.jpg?image_crop_resized=720x960')" 459 aria-label="Play video: CARE for AIDs"> 460 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 461 <span class="frnv__name">CARE for AIDs</span> 462 </button> 463 </li> 464 <li class="frnv__item"> 465 <button class="frnv__card" type="button" data-media="mparjo9415" data-title="Gaston County YMCA" 466 style="--poster:url('https://embed-ssl.wistia.com/deliveries/25e5ba100f7a62265b60114a557e1549.jpg?image_crop_resized=720x960')" 467 aria-label="Play video: Gaston County YMCA"> 468 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 469 <span class="frnv__name">Gaston County YMCA</span> 470 </button> 471 </li> 472 <li class="frnv__item"> 473 <button class="frnv__card" type="button" data-media="6014ksj1xf" data-title="Maria Droste Counseling Center" 474 style="--poster:url('https://embed-ssl.wistia.com/deliveries/c8e4e74d78b09445c8d8cc83f8bc3c1e.jpg?image_crop_resized=720x960')" 475 aria-label="Play video: Maria Droste Counseling Center"> 476 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 477 <span class="frnv__name">Maria Droste Counseling Center</span> 478 </button> 479 </li> 480 <li class="frnv__item"> 481 <button class="frnv__card" type="button" data-media="1jsrh57u8w" data-title="BeLoved" 482 style="--poster:url('https://embed-ssl.wistia.com/deliveries/aab51eb41ddc727d46d70c1bbc86fb0b.jpg?image_crop_resized=720x960')" 483 aria-label="Play video: BeLoved"> 484 <span class="frnv__poster"><span class="frnv__play" aria-hidden="true"></span></span> 485 <span class="frnv__name">BeLoved</span> 486 </button> 487 </li> 488 </ul> 489 <span class="frnv__fade frnv__fade--l" aria-hidden="true"></span> 490 <span class="frnv__fade frnv__fade--r" aria-hidden="true"></span> 491 </div> 492 </div> 493 494 <!-- Lightbox (player injected on first open; moved to <body> on init) --> 495 <div class="frnv__lightbox" id="frnv-lightbox" role="dialog" aria-modal="true" aria-label="Video player" hidden> 496 <button class="frnv__close" type="button" aria-label="Close video"> 497 <svg viewBox="0 0 24 24" fill="none"><path d="M6 6l12 12M18 6L6 18" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg> 498 </button> 499 <div class="frnv__modal"> 500 <div class="frnv__player" id="frnv-player"></div> 501 </div> 502 </div> 503</section></div><div class="uc-css-hidden w-embed"><style> 504.frnv{ 505 --frnv-dark:#002042; --frnv-blue:#2979ff; --frnv-border:#e1e4e8; --frnv-radius:16px; 506 /* Sized as the LEFT region of the Use Cases flex row (sits next to "Case Studies"). 507 width gives the flex child a predictable basis; max-width:100% lets it shrink. */ 508 position:relative; width:810px; max-width:100%; padding:0; 509 font-family:inherit; color:var(--frnv-dark); 510 -webkit-font-smoothing:antialiased; box-sizing:border-box; overflow-x:clip; 511} 512.frnv *{box-sizing:border-box;} 513.frnv__inner{width:100%; max-width:810px; margin:0 auto;} 514 515/* ---------- Header ---------- */ 516.frnv__head{display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin:0 0 18px;} 517.frnv__eyebrow{font-weight:600; font-size:12px; letter-spacing:.06em; text-transform:uppercase; 518 color:var(--frnv-blue); margin:0 0 6px;} 519.frnv__title{font-weight:600; font-size:22px; line-height:1.14; letter-spacing:.2px; margin:0;} 520 521.frnv__nav{display:flex; gap:10px; flex:0 0 auto;} 522.frnv__arrow{width:40px; height:40px; border-radius:50%; border:1px solid var(--frnv-border); 523 background:#fff; color:var(--frnv-dark); cursor:pointer; display:flex; align-items:center; 524 justify-content:center; transition:background .2s ease, border-color .2s ease, opacity .2s ease;} 525.frnv__arrow svg{width:20px; height:20px;} 526.frnv__arrow:hover{background:var(--frnv-dark); color:#fff; border-color:var(--frnv-dark);} 527.frnv__arrow:disabled{opacity:.35; cursor:default;} 528.frnv__arrow:disabled:hover{background:#fff; color:var(--frnv-dark); border-color:var(--frnv-border);} 529.frnv__arrow:focus-visible{outline:2px solid var(--frnv-blue); outline-offset:3px;} 530 531/* ---------- Track (scroll-snap carousel) ---------- */ 532.frnv__viewport{position:relative;} 533.frnv__track{display:flex; gap:22px; list-style:none; margin:0; padding:6px 0 8px; 534 overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth; 535 -webkit-overflow-scrolling:touch; scrollbar-width:none; cursor:grab;} 536/* Edge fades â appear only when there is more to scroll on that side (hidden on mobile, see media query) */ 537.frnv__fade{position:absolute; top:0; bottom:0; width:56px; pointer-events:none; z-index:3; 538 opacity:0; transition:opacity .25s ease;} 539.frnv__fade--l{left:0; background:linear-gradient(to right, #fff 12%, rgba(255,255,255,0));} 540.frnv__fade--r{right:0; background:linear-gradient(to left, #fff 12%, rgba(255,255,255,0));} 541.frnv__viewport.has-prev .frnv__fade--l{opacity:1;} 542.frnv__viewport.has-next .frnv__fade--r{opacity:1;} 543.frnv__track::-webkit-scrollbar{display:none;} 544.frnv__track.is-dragging{cursor:grabbing; scroll-snap-type:none; scroll-behavior:auto; user-select:none;} 545.frnv__item{flex:0 0 auto; scroll-snap-align:start;} 546 547/* width 200px keeps the whole block <=~400px tall so it isn't clipped when the 548 menu is capped at 440px + overflow:hidden on screens >=1920px. */ 549.frnv__card{display:block;
549 width:200px; padding:0; border:0; background:transparent; 550 cursor:pointer; font:inherit; color:inherit; text-align:left;} 551.frnv__track.is-dragging .frnv__card{cursor:grabbing;} 552.frnv__poster{position:relative; display:block; width:100%; aspect-ratio:5/7; border-radius:var(--frnv-radius); 553 overflow:hidden; background:var(--frnv-border) var(--poster) center/cover no-repeat; 554 box-shadow:0 10px 30px rgba(0,32,66,.10); transition:transform .35s cubic-bezier(.16,.84,.34,1), box-shadow .35s ease;} 555.frnv__poster::after{content:""; position:absolute; inset:0; 556 background:linear-gradient(180deg, rgba(0,32,66,0) 55%, rgba(0,32,66,.28) 100%); opacity:.9;} 557.frnv__card:hover .frnv__poster{transform:translateY(-4px); box-shadow:0 16px 40px rgba(0,32,66,.18);} 558.frnv__card:focus-visible{outline:none;} 559.frnv__card:focus-visible .frnv__poster{outline:3px solid var(--frnv-blue); outline-offset:3px;} 560 561/* Play button */ 562.frnv__play{position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:2; 563 width:54px; height:54px; border-radius:50%; background:rgba(255,255,255,.92); 564 box-shadow:0 6px 20px rgba(0,32,66,.25); transition:transform .25s ease, background .25s ease;} 565.frnv__play::before{content:""; position:absolute; top:50%; left:53%; transform:translate(-50%,-50%); 566 border-style:solid; border-width:8px 0 8px 13px; border-color:transparent transparent transparent var(--frnv-blue);} 567.frnv__card:hover .frnv__play{transform:translate(-50%,-50%) scale(1.08); background:#fff;} 568 569.frnv__name{display:block; margin-top:10px; font-weight:600; font-size:14px; line-height:1.35; color:var(--frnv-dark);} 570 571/* ---------- Lightbox ---------- */ 572.frnv__lightbox{position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center; 573 padding:24px; background:rgba(0,32,66,.82); opacity:0; transition:opacity .25s ease;} 574.frnv__lightbox.is-open{opacity:1;} 575.frnv__lightbox[hidden]{display:none;} 576.frnv__modal{position:relative; width:100%; max-width:1040px; transform:scale(.97); transition:transform .3s cubic-bezier(.16,.84,.34,1);} 577.frnv__lightbox.is-open .frnv__modal{transform:none;} 578.frnv__player{position:relative; width:100%; aspect-ratio:16/9; background:#001329; border-radius:12px; overflow:hidden;} 579.frnv__player::after{content:""; position:absolute; top:50%; left:50%; width:42px; height:42px; margin:-21px; 580 border:3px solid rgba(255,255,255,.25); border-top-color:#fff; border-radius:50%; animation:frnv-spin 1s linear infinite;} 581.frnv__player.is-ready::after{display:none;} 582@keyframes frnv-spin{to{transform:rotate(360deg);}} 583.frnv__player wistia-player{display:block; width:100%; height:100%;} 584.frnv__close{position:absolute; top:18px; right:18px; z-index:1; width:44px; height:44px; border-radius:50%; 585 border:0; background:rgba(255,255,255,.14); color:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center; 586 transition:background .2s ease;} 587.frnv__close:hover{background:rgba(255,255,255,.28);} 588.frnv__close svg{width:24px; height:24px;} 589.frnv__close:focus-visible{outline:2px solid #fff; outline-offset:3px;} 590 591/* ---------- Responsive (nav collapses to vertical mobile menu at <=991px) ---------- */ 592@media (max-width:991px){ 593 .frnv__inner{max-width:100%;} 594 .frnv__title{font-size:21px;} 595 .frnv__head{margin-bottom:18px;} 596 .frnv__nav{display:none;} /* drag / swipe instead */ 597 .frnv__card{width:76vw; max-width:300px;} 598} 599@media (max-width:767px){ 600 .frnv__fade{display:none;} /* no edge fades on mobile */ 601} 602@media (max-width:479px){ 603 .frnv__title{font-size:19px;} 604 .frnv__card{width:80vw; max-width:300px;} 605 .frnv__name{font-size:14px;} 606} 607 608/* ---------- Reduced motion ---------- */ 609@media (prefers-reduced-motion:reduce){ 610 .frnv *{transition:none !important; animation:none !important;} 611 .frnv__track{scroll-behavior:auto;} 612 /* the lightbox is moved to <body>, so target it directly too */ 613 .frnv__lightbox, .frnv__lightbox *{transition:none !important; animation:none !important;} 614} 615</style></div><div class="uc-js-hidden w-embed w-script">
615<script> 616(function(){ 617 var cs = document.currentScript; // capture now; it's null inside the deferred callback 618 function init(){ 619 var root = (cs && cs.closest('section.frnv')) || document.querySelector('section.frnv'); 620 if(!root) return; 621 622 var track = root.querySelector('#frnv-track'); 623 var cards = [].slice.call(root.querySelectorAll('.frnv__card')); 624 var arrows = [].slice.call(root.querySelectorAll('.frnv__arrow')); 625 var viewport= root.querySelector('.frnv__viewport'); 626 var box = root.querySelector('#frnv-lightbox'); 627 var lastFocus = null, wistiaLoading = false; 628 var isDown = false, startX = 0, startScroll = 0, dragged = false; 629 630 /* ---- Move the lightbox to <body> so the nav's CSS transform doesn't clip a position:fixed overlay ---- */ 631 if(box && box.parentNode !== document.body){ document.body.appendChild(box); } 632 var player = box.querySelector('#frnv-player'); 633 var closeBtn = box.querySelector('.frnv__close'); 634 635 /* Keep the Webflow dropdown OPEN while the lightbox is up. The lightbox lives on 636 <body> (outside the dropdown), so Webflow treats clicks/focus on it as an 637 "outside" interaction and auto-closes the dropdown. Swallow those events so they 638 never bubble up to Webflow's document-level close handlers. */ 639 function swallow(e){ e.stopPropagation(); } 640 ['pointerdown','mousedown','mouseup','click'].forEach(function(ev){ box.addEventListener(ev, swallow); }); 641 642 /* ---- Carousel arrows ---- */ 643 function step(){ 644 var first = track.querySelector('.frnv__item'); 645 if(!first) return 200; 646 return first.getBoundingClientRect().width + 22; // card + gap 647 } 648 function updateArrows(){ 649 var max = track.scrollWidth - track.clientWidth - 1; 650 var atStart = track.scrollLeft <= 1, atEnd = track.scrollLeft >= max; 651 if(viewport){ // edge fades: left only after scrolling, right only when more remains 652 viewport.classList.toggle('has-prev', !atStart); 653 viewport.classList.toggle('has-next', !atEnd); 654 } 655 if(arrows.length){ arrows[0].disabled = atStart; arrows[1].disabled = atEnd; } 656 } 657 arrows.forEach(function(a){ 658 a.addEventListener('click', function(){ 659 track.scrollBy({ left: (+a.dataset.dir) * step() * 2, behavior:'smooth' }); 660 }); 661 }); 662 track.addEventListener('scroll', updateArrows, {passive:true}); 663 window.addEventListener('resize', updateArrows); 664 /* The embed loads while the dropdown is display:none, so the track has no 665 layout yet (scrollWidth/clientWidth = 0) and arrows/fades compute wrong. 666 A ResizeObserver fires when the track gains size (dropdown opens) -> recompute. */ 667 if(window.ResizeObserver){ new ResizeObserver(function(){ updateArrows(); }).observe(track); } 668 669 /* ---- Drag to scroll (mouse / pen; touch uses native swipe) ---- */ 670 track.addEventListener('pointerdown', function(e){ 671 if(e.pointerType === 'touch') return; 672 isDown = true; dragged = false; startX = e.clientX; startScroll = track.scrollLeft; 673 track.classList.add('is-dragging'); 674 }); 675 track.addEventListener('pointermove', function(e){ 676 if(!isDown) return; 677 var dx = e.clientX - startX; 678 if(Math.abs(dx) > 4) dragged = true; 679 track.scrollLeft = startScroll - dx; 680 }); 681 function endDrag(){ if(!isDown) return; isDown = false; track.classList.remove('is-dragging'); updateArrows(); } 682 track.addEventListener('pointerup', endDrag); 683 track.addEventListener('pointerleave', endDrag); 684 track.addEventListener('pointercancel', endDrag); 685 track.addEventListener('dragstart', function(e){ e.preventDefault(); }); // no native img/text drag 686 687 /* ---- Wistia loader (once; shared-safe with the homepage block) ---- */ 688 function ensureWistia(){ 689 if(window.customElements && customElements.get('wistia-player')) return; 690 if(wistiaLoading) return; 691 wistiaLoading = true; 692 var s = document.createElement('script'); 693 s.src = 'https://fast.wistia.com/player.js'; s.async = true; 694 document.head.appendChild(s); 695 } 696 697 /* ---- Lightbox ---- */ 698 function openVideo(card){ 699 var id = card.dataset.media; 700 lastFocus = card; 701 ensureWistia(); 702 player.classList.remove('is-ready'); 703 player.innerHTML = ''; 704 var el = document.createElement('wistia-player'); 705 el.setAttribute('media-id', id); 706 el.setAttribute('aspect', '1.7777777777777777'); 707 el.setAttribute('autoplay', 'true'); 708 el.addEventListener('wistia-player-ready', onReady, {once:true}); 709 player.appendChild(el); 710 // fallback in case the ready event name varies across versions 711 setTimeout(function(){ player.classList.add('is-ready'); }, 1200); 712 713 box.hidden = false;
714 document.body.style.overflow = 'hidden'; 715 requestAnimationFrame(function(){ box.classList.add('is-open'); }); 716 closeBtn.focus(); 717 /* capture phase + swallow so neither our Esc/focus handling nor Webflow's 718 reaches the dropdown's auto-close logic (focusing the body-level close 719 button moves focus out of the dropdown, which would otherwise close it). */ 720 document.addEventListener('keydown', onKey, true); 721 document.addEventListener('focusout', swallow, true); 722 } 723 function onReady(){ player.classList.add('is-ready'); } 724 725 function closeVideo(){ 726 box.classList.remove('is-open'); 727 document.removeEventListener('keydown', onKey, true); 728 document.removeEventListener('focusout', swallow, true); 729 document.body.style.overflow = ''; 730 var done = function(){ 731 box.hidden = true; 732 player.innerHTML = ''; // removing the player stops playback 733 box.removeEventListener('transitionend', done); 734 }; 735 box.addEventListener('transitionend', done); 736 setTimeout(done, 320); // safety if transitionend doesn't fire 737 if(lastFocus){ lastFocus.focus(); lastFocus = null; } 738 } 739 function onKey(e){ 740 if(e.key === 'Escape'){ e.stopPropagation(); closeVideo(); } // close video, not the dropdown 741 else if(e.key === 'Tab'){ e.preventDefault(); closeBtn.focus(); } // trap focus on close btn 742 } 743 744 cards.forEach(function(c){ c.addEventListener('click', function(){ if(dragged){ dragged=false; return; } openVideo(c); }); }); 745 closeBtn.addEventListener('click', closeVideo); 746 box.addEventListener('click', function(e){ if(e.target === box) closeVideo(); }); 747 748 updateArrows(); 749 } 750 751 /* Defer init until the whole document is parsed. The embed sits high in the nav, 752 so running mid-parse â and moving the lightbox to <body> â disturbs the HTML 753 parser / Webflow's interaction binding, which broke the mobile hamburger button. */ 754 if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', init); } 755 else { init(); } 756})(); 757</script>
757</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" class="nav-collection-link w-inline-block"><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
757702bad89f47b87835c5930f_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" aria-current="page" class="nav-link-2 v2 w-nav-link w--current">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" class="w-inline-block"><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>
757<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}
757}.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:.
75708s}.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);
757transition-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;
757color:#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">
757<script> 758(function(){var boot=function(){ 759(function () { 760 // ===== ZRODLO TRESCI ===== 761 // 1) RECZNY WYBOR marketingu: itemy kolekcji "Notifications Navigations" 762 // z wlaczonym "Show in bell" â ukryta lista #fr-notif-src (max 4). 763 // 2) DEFAULT (gdy nic nie wybrano): najnowszy blog / webinar / case study 764 // z ukrytych list #fr-notif-def-blog / -webinar / -case (limit 1). 765 // 3) Fallback awaryjny ponizej â gdy zadna lista nie istnieje w DOM. 766 var NOTIF_ITEMS = [ 767 { tag: 'Blog', title: 'Essential Fundraising Dashboards', url: '/resources/fundraising-dashboards' }, 768 { tag: 'Webinar', title: 'Fundraising Dashboards â live walkthrough', url: '/webinars/fundraising-dashboards' }, 769 { tag: 'New', title: 'The Must-Have Annual Report Manual', url: '/resources/annual-report-manual' } 770 ]; 771 // reczny wybor: a > .link-block-40 > .text-block-1388 (tag) + .text-block-1383 (tytul) 772 var manualItems = [].slice.call(document.querySelectorAll('#fr-notif-src a[href]')) 773 .map(function (a) { 774 var tagEl = a.querySelector('.text-block-1388') || a.children[0]; 775 var titleEl = a.querySelector('.text-block-1383') || a.children[1]; 776 return { 777 tag: tagEl ? tagEl.textContent.trim() : '', 778 title: titleEl ? titleEl.textContent.trim() : '', 779 url: a.getAttribute('href') 780 }; 781 }) 782 .filter(function (i) { return i.title && i.url; }) 783 .slice(0, 4); 784 // defaulty: tytul = caly tekst linku, tag nadaje JS 785 function readDefault(sel, tag) { 786 var a = document.querySelector(sel + ' a[href]'); 787 if (!a) return null; 788 var title = a.textContent.replace(/\s+/g, ' ').trim(); 789 return title ? { tag: tag, title: title, url: a.getAttribute('href') } : null; 790 } 791 var defaultItems = [ 792 readDefault('#fr-notif-def-blog', 'Blog'), 793 readDefault('#fr-notif-def-webinar', 'Webinar'), 794 readDefault('#fr-notif-def-case', 'Case study')
795 ].filter(Boolean); 796 // 1 wybrany item = wskakuje NA POCZATEK przed defaulty (bez duplikatu URL); 797 // 2+ wybrane = zastepuja defaulty w calosci. 798 // Dedupe po pathname: reczne linki sa absolutne, defaulty wzgledne. 799 function urlPath(u) { 800 try { return new URL(u, location.origin).pathname.replace(/\/+$/, ''); } catch (e) { return u; } 801 } 802 if (manualItems.length >= 2) { 803 NOTIF_ITEMS = manualItems; 804 } else if (manualItems.length === 1) { 805 NOTIF_ITEMS = manualItems 806 .concat(defaultItems.filter(function (d) { return urlPath(d.url) !== urlPath(manualItems[0].url); })) 807 .slice(0, 4); 808 } else if (defaultItems.length) { 809 NOTIF_ITEMS = defaultItems; 810 } 811 // ========================= 812 813 var roots = [].slice.call(document.querySelectorAll('.fr-notif')); 814 if (!roots.length) return; 815 816 // klucz wersji tresci â kropka wraca TYLKO gdy tresc sie zmieni. 817 // localStorage: odkliniecie trzyma sie w przegladarce usera bezterminowo 818 // (nie per sesja), az contentKey przestanie sie zgadzac. 819 var contentKey = NOTIF_ITEMS.map(function (i) { return i.url + '|' + i.title; }).join('~'); 820 var STORAGE_KEY = 'fr-notif-seen'; 821 var seen = false; 822 try { seen = localStorage.getItem(STORAGE_KEY) === contentKey; } catch (e) {} 823 824 function markSeen() { 825 roots.forEach(function (r) { r.setAttribute('data-seen', 'true'); }); 826 try { localStorage.setItem(STORAGE_KEY, contentKey); } catch (e) {} 827 } 828 829 function renderItems(list) { 830 NOTIF_ITEMS.forEach(function (item) { 831 var a = document.createElement('a'); 832 a.href = item.url; 833 a.className = 'fr-notif-item fr-notif-item-row'; 834 a.innerHTML = 835 '<span class="fr-notif-item-text">' + 836 '<span class="fr-notif-tag"></span>' + 837 '<span class="fr-notif-item-title"></span>' + 838 '</span>' + 839 '<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>'; 840 a.querySelector('.fr-notif-tag').textContent = item.tag; 841 if (!item.tag) a.querySelector('.fr-notif-tag').style.display = 'none'; 842 a.querySelector('.fr-notif-item-title').textContent = item.title; 843 list.appendChild(a); 844 }); 845 } 846 847 function setOpen(root, open) { 848 root.classList.toggle('is-open', open); 849 var btn = root.querySelector('.fr-notif-btn'); 850 if (btn) btn.setAttribute('aria-expanded', open ? 'true' : 'false'); 851 // <=767px panel jest fixed pod navbarem; pozycja navbara zalezy od strony 852 // (promo bar) â mierzymy dol .w-nav zamiast sztywnego top z CSS 853 if (open && window.matchMedia('(max-width: 767px)').matches) { 854 var bar = root.closest('.w-nav') || document.querySelector('.w-nav'); 855 var panel = root.querySelector('.fr-notif-panel'); 856 if (bar && panel) { 857 panel.style.top = Math.max(0, Math.round(bar.getBoundingClientRect().bottom) + 8) + 'px'; 858 } 859 } 860 if (open) markSeen(); 861 } 862 863 function closeAll() { 864 roots.forEach(function (r) { setOpen(r, false); }); 865 } 866 867 roots.forEach(function (root) { 868 root.setAttribute('data-seen', seen ? 'true' : 'false'); 869 renderItems(root.querySelector('.fr-notif-items')); 870 var btn = root.querySelector('.fr-notif-btn'); 871 btn.addEventListener('click', function (e) { 872 e.stopPropagation(); 873 var willOpen = !root.classList.contains('is-open'); 874 // otwarty panel mobilny przykrylby dropdown (stacking context navbara) 875 // â najpierw zamknij menu klikiem w hamburger (obsluguje mobile-nav.js) 876 if (willOpen && document.body.classList.contains('fr-mnav-open')) { 877 var burger = document.querySelector('.funraise-menu-button-v2-open'); 878 if (burger) burger.click(); 879 } 880 closeAll(); 881 setOpen(root, willOpen); 882 }); 883 }); 884 885 document.addEventListener('click', function (e) { 886 var inside = roots.some(function (r) { return r.contains(e.target); }); 887 if (!inside) closeAll(); 888 }); 889 document.addEventListener('keydown', function (e) { 890 if (e.key === 'Escape') closeAll(); 891 }); 892 893 // podglad do demo: #notif-open otwiera pierwszy widoczny dzwonek 894 if (location.hash === '#notif-open') { 895 var visible = roots.filter(function (r) { return r.offsetParent !== null; })[0] || roots[0]; 896 setOpen(visible, true); 897 } 898})(); 899 900(function () { 901 // Jedna nawigacja: hamburger otwiera desktopowy .nav-menu jako panel. 902 // Na czas otwarcia menu i nav-right sa przenoszone (ten sam wezel, 903 // zero duplikacji) do <body>/<menu>, po zamknieciu wracaja na miejsce. 904 var mq = window.matchMedia('(max-width: 991px)'); 905 var btn = document.querySelector('.funraise-menu-button-v2-open'); 906 var menu = document.querySelector('.nav-menu'); 907 var navRight = document.querySelector('.nav-right'); 908 if (!btn || !menu) return; 909 910 var menuHome = menu.parentElement; 911 var menuNext = menu.nextSibling; 912 var navRightHome = navRight ? navRight.parentElement : null; 913 914 // wlasny fixed kontener â neutralizuje site'owe/webflow style pozycjonowania .w-nav-menu 915 var panel = document.createElement('div'); 916 panel.className = 'fr-mnav-panel'; 917 918 function isOpen() { return document.body.classList.contains('fr-mnav-open'); } 919 920 function open() { 921 // symetria z dzwonkiem: otwarcie menu domyka otwarty dropdown notyfikacji 922 document.querySelectorAll('.fr-notif.is-open .fr-notif-btn').forEach(function (b) { b.click(); }); 923 // panel zaczyna sie pod paskiem nawigacji; jego pozycja rozni sie miedzy 924 // stronami (promo bar nad navbarem), a navbar jest fixed â mierzymy jego dol 925 var bar = btn.closest('.w-nav') || document.querySelector('.promo-navbar-wrapper .w-nav'); 926 var top = 72; 927 if (bar) top = Math.max(0, Math.round(bar.getBoundingClientRect().bottom)); 928 panel.style.top = top + 'px'; 929 document.body.classList.add('fr-mnav-open'); 930 document.body.appendChild(panel); 931 panel.appendChild(menu); // portal: ten sam wezel, zero duplikacji 932 if (navRight) menu.appendChild(navRight); 933 } 934 935 function close() { 936 document.body.classList.remove('fr-mnav-open'); 937 // zwin otwarte akordeony (webflow trzyma stan w klasach w--open) 938 menu.querySelectorAll('.w--open').forEach(function (el) { el.classList.remove('w--open'); }); 939 if (navRight && navRightHome) navRightHome.appendChild(navRight); 940 menuHome.insertBefore(menu, menuNext); 941 if (panel.parentElement) panel.parentElement.removeChild(panel); 942 } 943 944 btn.addEventListener('click', function (e) { 945 e.preventDefault(); 946 e.stopPropagation(); 947 if (isOpen()) close(); else open(); 948 }); 949 950 // zachowanie akordeonow w panelu: jeden otwarty naraz + otwarty wjezdza pod 951 // gorna krawedz; tap w link = zamkniecie panelu (istotne dla linkow #kotwica). 952 // Rodzenstwo domykamy zdejmujac w--open wprost (jak w close()) â programowe
953 // klikanie toggli walczy z opoznieniami data-delay Webflowa. 954 menu.addEventListener('click', function (e) { 955 if (!mq.matches || !isOpen()) return; 956 var toggle = e.target.closest('.w-dropdown-toggle'); 957 if (toggle) { 958 // Webflow przelacza w--open swoim handlerem â sprawdzamy chwile pozniej 959 setTimeout(function () { 960 if (!toggle.classList.contains('w--open')) return; 961 var dd = toggle.closest('.w-dropdown'); 962 panel.querySelectorAll('.w--open').forEach(function (el) { 963 if (dd && !dd.contains(el)) el.classList.remove('w--open'); 964 }); 965 var y = toggle.getBoundingClientRect().top - panel.getBoundingClientRect().top + panel.scrollTop; 966 panel.scrollTo({ top: Math.max(0, y - 6), behavior: 'smooth' }); 967 }, 60); 968 return; 969 } 970 if (e.target.closest('a[href]')) close(); 971 }); 972 973 document.addEventListener('keydown', function (e) { 974 if (e.key === 'Escape' && isOpen()) close(); 975 }); 976 977 // powrot na desktop = sprzatanie 978 mq.addEventListener('change', function () { if (!mq.matches && isOpen()) close(); }); 979})(); 980 981}; 982if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",boot);}else{boot();}})(); 983</script>
983</div><div class="w-embed w-script"><style> 984.fee-banner:hover .fee-banner-text{text-decoration:underline} 985</style>
986<script> 987document.addEventListener('DOMContentLoaded',function(){ 988 var nav=document.querySelector('.promo-navbar-wrapper'); 989 var banner=document.querySelector('.fee-banner'); 990 if(!nav||!banner)return; 991 var t=false; 992 function apply(){nav.style.marginTop=(-Math.min(banner.offsetHeight,window.pageYOffset||0))+'px'} 993 window.addEventListener('scroll',function(){if(t)return;t=true;requestAnimationFrame(function(){apply();t=false})},{passive:true}); 994 window.addEventListener('resize',apply); 995 apply(); 996}); 997</script>
997</div></div></div><div class="image-bg-section header-section top"><div class="content-container"><div class="centered-content top"><h1 class="big-h1">Pricing<br/></h1><div class="body-text-normal">Funraise powers nonprofits of all sizes.<br/>Our flexible pricing makes that possible.</div></div></div><div class="bg-image-box"><div class="header-corner-shapes"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60945bbd03850a11b633bd7e_header-shape-2.webp" sizes="(max-width: 1000px) 100vw, 1000px" srcset="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60945bbd03850a11b633bd7e_header-shape-2-p-500.webp 500w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60945bbd03850a11b633bd7e_header-shape-2-p-800.webp 800w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60945bbd03850a11b633bd7e_header-shape-2.webp 1000w" alt="Blue shapes in a grid." class="header-image-bg"/></div><div class="header-corner-shapes left"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60945bbd3be43103c2555ee1_header-shape-1.webp" sizes="(max-width: 1000px) 100vw, 1000px" srcset="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60945bbd3be43103c2555ee1_header-shape-1-p-800.webp 800w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60945bbd3be43103c2555ee1_header-shape-1.webp 1000w" alt="Blue shapes in a grid." class="header-image-bg"/></div></div></div><div class="content-section relative z1 mt-1"><div class="content-container rem2"><div><div class="w-embed w-script">
997<script> 998/* GTM: every card click reports its plan; the Custom card additionally 999 reports the V1 entry (V1 itself only fires frq_start on the first 1000 in-form interaction). Guarded. */ 1001(function () { 1002 document.addEventListener('click', function (e) { 1003 var card = e.target.closest && e.target.closest('[data-frp-plan]'); 1004 if (!card || !window.dataLayer) return; 1005 window.dataLayer.push({ event: 'frp_plan_click', frp_plan: card.getAttribute('data-frp-plan') }); 1006 if (card.hasAttribute('data-frq-open')) { 1007 window.dataLayer.push({ event: 'frq_plan_card_open', frq_variant: 'v1' }); 1008 } 1009 }); 1010})(); 1011</script>
1011</div><div class="w-embed"><div class="frp"> 1012 <!-- the design's exported check vector, defined once for <use> --> 1013 <svg width="0" height="0" style="position:absolute" aria-hidden="true"><defs><path id="frp-check-p" fill="#00D641" transform="translate(2.87 4.43)" d="M3.87938 7.49729L1.27688 4.93733C0.984375 4.64961 0.511875 4.64961 0.219375 4.93733C-0.073125 5.22505 -0.073125 5.68982 0.219375 5.97754L3.35438 9.0613C3.64688 9.34901 4.11938 9.34901 4.41188 9.0613L12.3469 1.256C12.6394 0.968284 12.6394 0.503508 12.3469 0.215789C12.0544 -0.0719297 11.5819 -0.0719297 11.2894 0.215789L3.87938 7.49729Z"/></defs></svg> 1014 <div class="frp-grid"> 1015 1016 <!-- Free: the whole card is the link --> 1017 <a class="frp-card" href="/free-signup" data-frp-plan="free" aria-label="Free plan, create your account"> 1018 <div class="frp-head"> 1019 <h2 class="frp-title">Free</h2> 1020 <div class="frp-pricetag"><span class="frp-amount">$0</span><span class="frp-per">/month</span></div> 1021 </div> 1022 <p class="frp-desc">Funraise is a free, fee-based, fundraising and donor management platform for organizations raising under $1 million annually.</p> 1023 <span class="frp-cta">Create your account</span> 1024 <ul class="frp-feats"> 1025 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Donation Forms</span></li> 1026 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Donation Pages</span></li> 1027 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Recurring Donations</span></li> 1028 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Events & Tickets</span></li> 1029 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Fundraising Websites</span></li> 1030 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Donor Fee Coverage</span></li> 1031 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Donor Management</span></li> 1032 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Donation Management</span></li> 1033 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Automated Tasks</span></li> 1034 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Some integrations</span></li> 1035 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>So much more</span></li> 1036 </ul> 1037 </a> 1038 1039 <!-- Premium Plans: the whole card is the link --> 1040 <a class="frp-card" href="/contact-sales" data-frp-plan="premium" aria-label="Premium plans, talk with sales"> 1041 <div class="frp-head"> 1042 <h2 class="frp-title">Premium Plans</h2> 1043 </div> 1044 <p class="frp-desc">Need more? Accelerate growth with professional fundraising tools.</p> 1045 <span class="frp-cta">Talk with Sales</span> 1046 <ul class="frp-feats"> 1047 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Onboarding & Implementation</span></li> 1048 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Dedicated Success Manager</span></li> 1049 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Peer-to-Peer Fundraising</span></li> 1050 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Fundraising Intelligence</span></li> 1051 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Wealth Screening</span></li> 1052 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>SMS Messaging</span></li> 1053 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Text-to-Give</span></li> 1054 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Auctions</span></li> 1055 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Email Campaigns</span></li> 1056 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>All Integrations</span></li> 1057 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Funraise API</span></li> 1058 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>And more</span></li> 1059 </ul> 1060 </a> 1061 1062 <!-- Get a Quote!: gradient card, opens quote form V1 --> 1063 <a class="frp-card frp-quote" data-frq-open data-frp-plan="custom" href="/contact-sales" aria-label="Get a custom quote"> 1064 <div class="frp-head"> 1065 <h2 class="frp-title">Get a Quote!</h2> 1066 </div> 1067 <p class="frp-desc">Answer a few quick questions and weâll put together a custom quote based on your organizationâs needs.
1067</p> 1068 <span class="frp-cta">Get a Quote</span> 1069 <ul class="frp-feats"> 1070 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>Build your perfect platform</span></li> 1071 <li><svg class="frp-check" width="18" height="18" viewBox="0 0 18 18" aria-hidden="true"><use href="#frp-check-p"/></svg><span>No commitment or calls required</span></li> 1072 </ul> 1073 </a> 1074 1075 </div> 1076</div></div><div class="w-embed"><style> 1077/* ============================================================ 1078 Self-contained plan cards (Figma node 2001:518, 1440 frame: 1079 3 x 420px cards, 32px gaps, 28px card side padding). 1080 Fonts inherit the site's Garnett; colors = Webflow variable set. 1081============================================================ */ 1082.frp{font-family:Garnett,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#002042;letter-spacing:.14px} 1083.frp,.frp *{box-sizing:border-box} 1084.frp .frp-grid{ 1085 display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px; 1086 align-items:stretch;max-width:1320px;margin:0 auto; 1087} 1088 1089/* ---- card (Figma "Card": white, #E1E4E8 border, 12px, Level 2 shadow) ---- */ 1090.frp .frp-card{ 1091 display:flex;flex-direction:column;position:relative; 1092 background:#fff;border:1px solid #E1E4E8;border-radius:12px; 1093 box-shadow:0 4px 12px rgba(0,32,66,.1); 1094 padding:40px 28px; 1095 color:inherit;text-decoration:none;cursor:pointer; 1096 transition:transform .2s ease-in-out,box-shadow .2s ease-in-out; 1097} 1098.frp .frp-card:hover{transform:translateY(-3px);box-shadow:0 16px 36px rgba(0,32,66,.16)} 1099.frp .frp-card:focus-visible{outline:3px solid #2979FF;outline-offset:3px} 1100 1101/* ---- head: title left, (Free only) price right on the same line ---- */ 1102.frp .frp-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-height:56px} 1103.frp .frp-title{margin:0;font-size:38px;line-height:56px;font-weight:500;letter-spacing:0;color:#002042} 1104.frp .frp-pricetag{white-space:nowrap} 1105.frp .frp-amount{font-size:38px;line-height:56px;font-weight:500;color:#00B141} 1106.frp .frp-per{font-size:12px;line-height:24px;letter-spacing:.2px;color:#5B6E84;margin-left:3px} 1107 1108/* ---- description (16/30, +.13px) ---- */ 1109.frp .frp-desc{margin:11px 0 0;font-size:16px;line-height:30px;letter-spacing:.13px;font-weight:400;color:#002042} 1110@media (min-width:992px){ 1111 /* level the CTA row across the three cards (Free's copy runs longest) */ 1112 .frp .frp-desc{min-height:120px} 1113} 1114 1115/* ---- CTA (49px, radius 6, 17px Medium; a span â the card is the link) ---- */ 1116.frp .frp-cta{ 1117 display:flex;align-items:center;justify-content:center; 1118 min-height:49px;margin-top:36px;padding:8px 16px;border-radius:6px; 1119 background:#2979FF;color:#fff; 1120 font-size:17px;font-weight:500;line-height:normal;letter-spacing:.34px;text-align:center; 1121 border:2px solid transparent; 1122 transition:all .2s ease-in-out; 1123} 1124/* hovering anywhere on the card lights the button up (approved pattern) */ 1125.frp .frp-card:hover .frp-cta{background-image:linear-gradient(120deg,#53B1FF,#2979FF);box-shadow:0 2px 6px #08162d24} 1126 1127/* ---- divider + feature list (12/24 grey, green checks) ---- */ 1128.frp .frp-feats{ 1129 list-style:none;margin:38px 0 0;padding:26px 0 0; 1130 border-top:1px solid #E1E4E8; 1131 display:flex;flex-direction:column;gap:5px; 1132} 1133.frp .frp-feats li{display:flex;align-items:flex-start;gap:6px;font-size:12px;line-height:24px;letter-spacing:.2px;color:#5B6E84} 1134.frp .frp-check{flex:0 0 auto;margin-top:3px} 1135 1136/* ---- gradient "Get a Quote!" card ---- */ 1137.frp .frp-quote{ 1138 background:linear-gradient(118.87deg,#002042 1.2%,#2979FF 98.7%); 1139 border-color:transparent; 1140} 1141.frp .frp-quote .frp-title, 1142.frp .frp-quote .frp-desc, 1143.frp .frp-quote .frp-feats li{color:#fff} 1144.frp .frp-quote .frp-feats{border-top-color:#fff} 1145/* ghost CTA: white fill, blue border/text; fills blue on card hover. 1146 The blue underlay + border-box origin stop the white background-color 1147 peeking out at the edge while the card's hover transform rasterizes. */ 1148.frp .frp-quote .frp-cta{background:#fff;color:#2979FF;border-color:#2979FF} 1149.frp .frp-quote:hover .frp-cta{background-color:#2979FF;background-origin:border-box;background-image:linear-gradient(120deg,#53B1FF,#2979FF);color:#fff;border-color:transparent;box-shadow:0 2px 6px #08162d24} 1150.frp .frp-quote:focus-visible{outline:3px solid #64D7FF;outline-offset:3px} 1151 1152@media (prefers-reduced-motion:reduce){ 1153 .frp .frp-card{transition:none} 1154 .frp .frp-card:hover{transform:none} 1155} 1156@media (max-width:991px){ 1157 .frp .frp-grid{grid-template-columns:1fr;gap:24px} 1158 .frp .frp-card{padding:32px 24px} 1159 .frp .frp-title,.frp .frp-amount{font-size:32px;line-height:44px} 1160 .frp .frp-head{min-height:0} 1161 .frp .frp-cta{margin-top:28px} 1162 .frp .frp-feats{margin-top:30px;padding-top:22px} 1163} 1164</style></div><div class="w-embed">
1164<!-- Funraise "Get a Quote" popup (V1). The 3 embeds below are its markup, 1165 styles, and script. It opens from any element with data-frq-open (the 1166 Custom Quote plan card above) or a link to #get-a-quote. Submission 1167 drives a hidden HubSpot embed (the form has CAPTCHA, which blocks the 1168 public Submission API). Source: repo components/quote-form/ --> 1169<link rel="preconnect" href="https://js.hsforms.net"> 1170<link rel="preconnect" href="https://forms.hsforms.com"> 1171</div><div class="w-embed"><section class="frq" id="frq-quote"> 1172 1173 1174 1175 <!-- Full-screen takeover --> 1176 <div class="frq-overlay" data-frq="overlay" role="dialog" aria-modal="true" aria-label="Get a quote from Funraise" hidden> 1177 <!-- Deco = the page's own textured corner shapes (same assets the /pricing 1178 hero uses). They ship on a WHITE background (no alpha), which is why 1179 the overlay background is white. shape-2 is flipped vertically so its 1180 bleeding edge hugs the bottom-right corner; the close-button corner 1181 (top-right) stays clear. --> 1182 <div class="frq-deco" aria-hidden="true"><img class="frq-d1" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60945bbd3be43103c2555ee1_header-shape-1.webp" alt="" loading="lazy"><img class="frq-d2" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60945bbd03850a11b633bd7e_header-shape-2.webp" alt="" loading="lazy"></div> 1183 <div class="frq-bar" role="progressbar" aria-label="Form progress" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0" data-frq="bar"> 1184 <span class="frq-bar-fill" data-frq="fill"></span> 1185 </div> 1186 <button type="button" class="frq-x" data-frq="close" aria-label="Close"> 1187 <svg width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"><path d="M3 3l10 10M13 3L3 13" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"/></svg> 1188 </button> 1189 <div class="frq-body" data-frq="form"> 1190 <div class="frq-viewport" data-frq="viewport"><!-- screens injected by JS --></div> 1191 </div> 1192 <p class="frq-sr" aria-live="polite" data-frq="live"></p> 1193 </div> 1194</section></div><div class="w-embed"><style> 1195/* ============================================================ 1196 Funraise Quote (frq): full-screen popup wizard. 1197 All selectors scoped under .frq. Brand tokens verified against 1198 the live funraise.org stylesheet (2026-07-21). 1199============================================================ */ 1200.frq{ 1201 --frq-primary:#2979FF; /* Funraise blue (site CTA) */ 1202 --frq-primary-hover:#013BA8; /* Webflow var: Primary Dark */ 1203 --frq-ink:#002042; /* Webflow var: Cool Blue */ 1204 --frq-muted:#5B6E84; /* Webflow var: Dark Gray */ 1205 --frq-line:#E7EDF2; /* borders / hairlines (site .text-field border) */ 1206 --frq-bg:#FFFFFF; /* card background */ 1207 --frq-bg-subtle:#EAF2FF; /* selected-state tint */ 1208 --frq-page:#FFFFFF; /* overlay background. WHITE on purpose: the 1209 textured corner shapes (header-shape-*.webp) 1210 have a baked-in white background, and the 1211 site itself runs on white */ 1212 --frq-accent:#FFBD00; /* Webflow var: Yellow Primary */ 1213 --frq-cyan:#43F3F7; /* Webflow var: Medium Cyan */ 1214 --frq-error:#E91E63; /* Webflow var: Pink Primary */ 1215 --frq-radius:10px; /* cards: site radius-xl */ 1216 --frq-radius-md:6px; /* buttons + inputs: site radius-md */ 1217 --frq-shadow:0 10px 40px rgba(0,32,66,.08); 1218 font-family:Garnett,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; /* site font, same stack as other embeds */ 1219 letter-spacing:.14px; /* site body letter-spacing */ 1220 line-height:1.6; /* the portal sits on <body>: never inherit its 188% */ 1221 color:var(--frq-ink); 1222 display:block;width:100%;margin:0;position:relative; 1223} 1224.frq [hidden]{display:none!important} 1225.frq,.frq *,.frq *::before,.frq *::after{box-sizing:border-box} 1226.frq .frq-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0} 1227.frq .frq-a{color:var(--frq-primary);text-decoration:underline} 1228.frq .frq-a:hover{color:var(--frq-primary-hover)} 1229.frq .frq-launch{margin:0} 1230 1231/* ---- full-screen takeover ---- */ 1232.frq .frq-overlay{ 1233 position:fixed;inset:0;z-index:9999;background:var(--frq-page); 1234 display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain; 1235 scrollbar-gutter:stable both-edges; /* a real scrollbar never shifts the layout */ 1236 animation:frqOverlayIn .28s ease; 1237} 1238@keyframes frqOverlayIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}} 1239.frq .frq-x{ 1240 position:fixed;top:18px;right:20px;z-index:3;width:44px;height:44px;border-radius:50%; 1241 display:flex;align-items:center;justify-content:center;cursor:pointer; 1242 border:1px solid var(--frq-line);background:var(--frq-bg);color:var(--frq-ink); 1243 transition:all .2s ease-in-out; 1244} 1245.frq .frq-x:hover{border-color:var(--frq-ink)} 1246.frq .frq-x:active{transform:scale(.95)} 1247.frq .frq-x:focus-visible{outline:2px solid var(--frq-primary);outline-offset:2px} 1248
1249/* ---- decorative shapes: the page's textured corner clusters 1250 (the exact webp assets the /pricing hero uses; static, like the hero). 1251 shape-1 is built to touch the LEFT edge; shape-2 bleeds to its 1252 top-right edge, so flipped vertically it hugs the bottom-right 1253 corner and the â corner (top-right) stays clear ---- */ 1254.frq .frq-deco{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0} 1255.frq .frq-deco img{position:absolute;display:block;height:auto} 1256.frq .frq-d1{top:0;left:0;width:min(420px,32vw)} 1257.frq .frq-d2{bottom:0;right:0;width:min(420px,32vw);transform:scaleY(-1)} 1258 1259/* ---- progress bar (thin, pinned edge-to-edge at the top of the window; 1260 fixed so neither scrollbar gutters nor overlay padding narrow it) ---- */ 1261.frq .frq-bar{position:fixed;top:0;left:0;right:0;z-index:2;height:4px;background:var(--frq-line);overflow:hidden} 1262.frq .frq-bar-fill{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--frq-primary),var(--frq-cyan));transition:width .4s ease} 1263 1264/* ---- screens ---- */ 1265.frq .frq-body{display:flex;flex-direction:column;flex:1;min-height:0;position:relative;z-index:1} 1266/* overflow:hidden clips the slide-in transform (translateY 46px) so the 1267 transition never grows the overlay's scroll area = no scrollbar flash */ 1268.frq .frq-viewport{flex:1;display:flex;overflow:hidden} 1269.frq .frq-screen{display:none;width:100%} 1270.frq .frq-screen.is-active{display:flex;align-items:center;animation:frqUp .4s cubic-bezier(.2,.7,.3,1) both} 1271.frq [data-dir="back"] .frq-screen.is-active{animation-name:frqDown} 1272@keyframes frqUp{from{opacity:0;transform:translateY(46px)}to{opacity:1;transform:none}} 1273@keyframes frqDown{from{opacity:0;transform:translateY(-46px)}to{opacity:1;transform:none}} 1274.frq .frq-q{width:100%;max-width:780px;margin:0 auto;padding:56px 28px 40px;text-align:center} 1275 1276/* ---- question typography ---- */ 1277.frq .frq-eyebrow{ 1278 display:inline-block;margin:0 0 16px;padding:6px 14px;border-radius:999px; 1279 font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase; 1280 background:var(--frq-primary);color:#fff; 1281} 1282/* brand underline: the same vector funraise.org/about uses. 1283 inline-block keeps the arc hugging the text bottom (an inline box 1284 paints its background at the font's tall descent box, which pushed 1285 the arc into the next line) and stops it splitting across wraps */ 1286.frq .frq-hl{ 1287 display:inline-block; 1288 padding-bottom:.14em; 1289 background:url("https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/6723963fd0a11d7b88579ddd_Vector%402x.png") no-repeat 50% 100%/100% .16em; 1290} 1291.frq .frq-qnum{margin:0 0 14px;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--frq-primary)} 1292/* headings match the site: h2/h3 are Garnett Medium (500), line-height ~140% */ 1293/* text-wrap:balance keeps headline lines even (no lone "mission"); 1294 the underlined phrase is inline-block, so the break can't split it */ 1295.frq .frq-qtitle{margin:0 0 16px;font-size:clamp(24px,3vw,32px);line-height:1.35;font-weight:500;color:var(--frq-ink);outline:none;text-wrap:balance} 1296.frq .frq-big{font-size:clamp(32px,4.5vw,46px)} 1297/* body copy matches the site: Garnett Light (300) on ink, airy line-height */ 1298.frq .frq-qhelp{margin:0 auto 28px;font-size:clamp(15px,1.7vw,18px);line-height:1.7;font-weight:300;color:var(--frq-ink);max-width:640px;text-wrap:pretty} 1299.frq .frq-qhelp b{font-weight:500} 1300/* wider + slightly smaller than before so the welcome lead fits two lines 1301 at desktop; balance stops a lone "day." on any width in between */ 1302.frq .frq-lead{font-size:clamp(16px,1.9vw,18px);max-width:700px;text-wrap:balance} 1303.frq .frq-mini{margin:16px 0 0;font-size:13px;font-weight:300;color:var(--frq-muted)} 1304.frq .frq-legal{margin:18px auto 0;max-width:560px;font-size:12px;line-height:1.6;font-weight:300;color:var(--frq-muted);text-wrap:pretty} 1305.frq .frq-msg{margin:6px 0 0;font-size:13px;color:var(--frq-error)} 1306 1307/* ---- single-choice rows (Typeform-style lettered options) ---- */ 1308.frq .frq-choices{display:flex;flex-direction:column;gap:16px;max-width:480px;margin:14px auto 0;text-align:left} 1309.frq .frq-choice{display:block;cursor:pointer} 1310.frq .frq-choice-inner{ 1311 position:relative;display:flex;align-items:center;gap:12px; 1312 min-height:52px;padding:11px 14px; 1313 border:1px solid var(--frq-line);border-radius:var(--frq-radius); 1314 background:var(--frq-bg);font-size:17px;font-weight:500; 1315 transition:all .2s ease-in-out; 1316} 1317.frq .frq-choice:hover .frq-choice-inner{border-color:var(--frq-primary);transform:translateY(-1px);box-shadow:var(--frq-shadow)} 1318.frq .frq-choice input:checked+.frq-choice-inner{border-color:var(--frq-primary);background:var(--frq-bg-subtle);font-weight:600} 1319.frq .frq-choice input:focus-visible+.frq-choice-inner{outline:2px solid var(--frq-primary);outline-offset:2px} 1320.frq .frq-radio{ 1321 flex:0 0 auto;width:22px;height:22px;border-radius:50%;position:relative; 1322 border:2px solid var(--frq-line);background:var(--frq-bg); 1323 transition:border-color .15s ease,background .15s ease; 1324} 1325.frq .frq-radio::after{ 1326 content:"";position:absolute;inset:5px;border-radius:50%;background:#fff; 1327 transform:scale(0);transition:transform .18s cubic-bezier(.34,1.56,.64,1); 1328} 1329.frq .frq-choice:hover .frq-radio{border-color:var(--frq-primary)} 1330.frq .frq-choice input:checked+.frq-choice-inner .frq-radio{background:var(--frq-primary);border-color:var(--frq-primary)} 1331.frq .frq-choice input:checked+.frq-choice-inner .frq-radio::after{transform:scale(1)} 1332 1333/* ---- feature multi-select: compact rows, small icon next to text ---- */ 1334.frq .frq-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px;max-width:700px;margin:0 auto 4px;text-align:left} 1335.frq .frq-card{display:block;cursor:pointer;min-width:0} 1336.frq .frq-card-inner{ 1337 position:relative;display:flex;align-items:center;gap:10px; 1338 min-height:54px;padding:12px 38px 12px 14px;border:1px solid var(--frq-line);border-radius:var(--frq-radius); 1339 background:var(--frq-bg);transition:all .2s ease-in-out; 1340} 1341.frq .frq-card:hover .frq-card-inner{border-color:var(--frq-primary);transform:translateY(-1px);box-shadow:var(--frq-shadow)} 1342.frq .frq-card input:checked+.frq-card-inner{border-color:var(--frq-primary);background:var(--frq-bg-subtle)} 1343.frq .frq-card input:focus-visible+.frq-card-inner{outline:2px solid var(--frq-primary);outline-offset:2px} 1344.frq .frq-card img{width:24px;height:24px;object-fit:contain;display:block;flex:0 0 auto} 1345.frq .frq-card-label{font-size:15px;font-weight:500;line-height:1.3;color:var(--frq-ink)} 1346.frq .frq-card-check{ 1347 position:absolute;top:50%;right:12px;translate:0 -50%;width:20px;height:20px;border-radius:50%; 1348 display:flex;align-items:center;justify-content:center; 1349 font-size:12px;font-weight:700;color:#fff;background:var(--frq-primary); 1350 opacity:0;transform:scale(.5);transition:opacity .15s ease,transform .2s cubic-bezier(.34,1.56,.64,1); 1351} 1352.frq .frq-card input:checked+.frq-card-inner .frq-card-check{opacity:1;transform:scale(1)} 1353 1354/* ---- actions ---- */ 1355.frq .frq-qactions{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:26px} 1356/* Buttons: verified against the live .button-9.button-large.cta rules. 1357 radius-md 6px, text-6 17px, padding space-5/space-10 (12px 24px), 1358 weight-medium 500, shadow 0 8px 28px, transition all .2s ease-in-out. 1359 Hover swaps in the site's gradient and drops to the small shadow. */ 1360.frq .frq-btn{ 1361 display:inline-flex;align-items:center;justify-content:center; 1362 min-height:52px;padding:12px 24px;border-radius:var(--frq-radius-md);
1362cursor:pointer; 1363 font:inherit;font-size:17px;font-weight:500;line-height:1.6;text-decoration:none;text-align:center; 1364 border:1px solid transparent;transition:all .2s ease-in-out; 1365} 1366.frq .frq-btn:focus-visible{outline:2px solid var(--frq-primary);outline-offset:3px} 1367.frq .frq-ok{background:var(--frq-primary);color:#fff;box-shadow:0 8px 28px rgba(0,0,0,.2)} 1368.frq .frq-ok:hover{background-image:linear-gradient(120deg,#53B1FF,#2979FF);box-shadow:0 2px 6px rgba(8,22,45,.14)} 1369.frq .frq-ok:active{background-image:none} 1370.frq .frq-ok:disabled{opacity:.65;cursor:wait;box-shadow:none;background-image:none} 1371.frq .frq-btn-ghost{background:var(--frq-bg);color:var(--frq-primary);border-color:var(--frq-primary)} 1372.frq .frq-btn-ghost:hover{background-image:linear-gradient(120deg,#53B1FF,#2979FF);color:#fff;border-color:transparent;box-shadow:0 2px 6px rgba(8,22,45,.14)} 1373.frq .frq-btn-ghost:disabled{opacity:.5;cursor:default;background-image:none;color:var(--frq-primary)} 1374 1375/* ---- the real HubSpot form (contact screen) ---- 1376 Rendered VISIBLY and typed into by the user: reCAPTCHA v3 then scores 1377 genuine keystrokes and a real submit click (a hidden, programmatically 1378 filled copy was scored as a bot and rejected server-side). create() 1379 passes css:'' so the form arrives unstyled; the rules below restyle 1380 it to the brand. Qualifier fields answered on screens 1-4 are 1381 prefilled from state and kept out of view. */ 1382.frq .frq-hs{max-width:640px;margin:0 auto;text-align:left;position:relative} 1383/* min-height ~ the rendered form, so a late mount can't jump the layout 1384 (normally the form pre-mounts on popup open and is ready long before) */ 1385.frq .frq-hs[aria-busy="true"]{min-height:420px} 1386.frq .frq-hs[aria-busy="true"]::before{content:"Loading the secure formâ¦";display:block;padding:180px 0;text-align:center;font-size:14px;color:var(--frq-muted)} 1387/* Google's reCAPTCHA anchor iframe lands inside the mount â collapse it 1388 visually but keep it rendered (never display:none: it must execute). 1389 A visible challenge, if any, attaches to <body>, so it still shows. */ 1390.frq .frq-hs iframe{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;border:0} 1391.frq .frq-hs fieldset{border:0;margin:0;padding:0;max-width:none!important} 1392.frq .frq-hs .form-columns-2{display:flex;gap:0 20px} 1393.frq .frq-hs .form-columns-2 .hs-form-field{flex:1 1 0;width:auto!important} 1394.frq .frq-hs .hs-form-field{margin:0 0 18px;float:none!important} 1395.frq .frq-hs .hs-form-field>label{display:block;margin:0 0 6px;font-size:15px;font-weight:500;color:var(--frq-ink)} 1396/* the old design marks phone "(optional)" instead of starring the rest */ 1397.frq .frq-hs .hs-form-required{display:none} 1398.frq .frq-hs .hs-input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]){ 1399 width:100%!important;min-height:50px;padding:12px 16px; 1400 font:inherit;font-size:17px;color:var(--frq-ink); 1401 background:var(--frq-bg);border:1px solid var(--frq-line);border-radius:var(--frq-radius-md); 1402 box-shadow:0 2px 4px rgba(0,0,0,.04);transition:all .2s ease-in-out;appearance:none; 1403} 1404.frq .frq-hs .hs-input::placeholder{color:#B9C6D2} 1405.frq .frq-hs .hs-input:hover{border-color:#B9C6D2} 1406.frq .frq-hs .hs-input:focus,.frq .frq-hs .hs-input:focus-visible{outline:none;border-color:var(--frq-primary);box-shadow:0 0 0 3px var(--frq-bg-subtle)} 1407.frq .frq-hs .hs-input.invalid,.frq .frq-hs .hs-input.error{border-color:var(--frq-error)} 1408.frq .frq-hs .hs-error-msgs{list-style:none;margin:6px 0 0;padding:0} 1409.frq .frq-hs .hs-error-msg,.frq .frq-hs .hs-error-msgs label{color:var(--frq-error);font-size:13px;font-weight:400} 1410.frq .frq-hs .hs_error_rollup{text-align:center;margin-top:8px} 1411/* answered on earlier screens; prefilled programmatically, out of view */ 1412.frq .frq-hs .hs_demo_form_platform_goal, 1413.frq .frq-hs .hs_supporter_count_demo_form, 1414.frq .frq-hs .hs_demo_form_raised_online_per_year, 1415.frq .frq-hs .hs_demo_form_features_to_focus_on{display:none} 1416/* the identical approved text is printed by our .frq-legal line below */ 1417.frq .frq-hs .legal-consent-container{display:none} 1418/* the reCAPTCHA holder reserves a 60px badge slot (badge is CSS-hidden
1418): 1419 collapse it WITHOUT display:none so the captcha still executes */ 1420.frq .frq-hs .hs_recaptcha{position:absolute;width:1px;height:1px;overflow:hidden;margin:0} 1421.frq .frq-hs .hs_submit{margin-top:26px;text-align:center} 1422.frq .frq-hs .hs-button{ 1423 display:inline-flex;align-items:center;justify-content:center; 1424 min-height:52px;padding:12px 24px;border-radius:var(--frq-radius-md);cursor:pointer; 1425 font:inherit;font-size:17px;font-weight:500;line-height:1.6; 1426 border:1px solid transparent;transition:all .2s ease-in-out;appearance:none; 1427 background:var(--frq-primary);color:#fff;box-shadow:0 8px 28px rgba(0,0,0,.2); 1428} 1429.frq .frq-hs .hs-button:hover{background-image:linear-gradient(120deg,#53B1FF,#2979FF);box-shadow:0 2px 6px rgba(8,22,45,.14)} 1430.frq .frq-hs .hs-button:active{background-image:none} 1431.frq .frq-hs .hs-button:focus-visible{outline:2px solid var(--frq-primary);outline-offset:3px} 1432/* Back sits LEFT of the HubSpot CTA like every other screen. The two 1433 buttons live in different DOM parents (ours vs the form's), so the 1434 Back row is pulled up over the CTA row and both are nudged from 1435 center (Back -84px, CTA +50px = the usual 14px gap). pointer-events 1436 keeps the overlay row from blocking clicks on the CTA. */ 1437.frq .frq-hs .hs-button{position:relative;left:50px} 1438.frq .frq-hs-actions{margin-top:-52px;pointer-events:none} 1439.frq .frq-hs-actions .frq-btn{pointer-events:auto;position:relative;left:-84px} 1440/* Google requires visible reCAPTCHA attribution when the badge is 1441 hidden â the .frq-legal line provides it (this page has no other 1442 captcha-protected forms, so hiding the badge page-wide is safe). */ 1443.grecaptcha-badge{visibility:hidden} 1444 1445/* ---- alert / confirmation ---- */ 1446.frq .frq-alert{margin:6px auto 14px;padding:14px 16px;border:1px solid var(--frq-error);border-radius:var(--frq-radius);background:#FDF1F5;max-width:640px;text-align:left} 1447.frq .frq-alert-txt{margin:0 0 10px;font-size:14px;line-height:1.5} 1448.frq .frq-qconfirm{text-align:center} 1449.frq .frq-qconfirm .frq-qhelp{margin-left:auto;margin-right:auto} 1450.frq .frq-confirm-badge{line-height:1;margin-bottom:14px} 1451.frq .frq-confirm-badge svg{display:inline-block;vertical-align:top} 1452.frq .frq-choice-msg{margin-top:14px;text-align:center} 1453.frq .frq-btn-link{margin-top:10px} 1454 1455/* ---- confetti (self-contained DOM pieces; sits above the overlay). 1456 Top-level on purpose: the host is appended to <body> so the whole 1457 block copy-pastes onto any page. Class is still frq-prefixed. ---- */ 1458.frq-cf{position:fixed;inset:0;z-index:10000;pointer-events:none;overflow:hidden} 1459.frq-cf i{position:absolute;top:-3vh;display:block;animation:frqCf linear forwards} 1460@keyframes frqCf{from{opacity:1;transform:translate(0,0) rotate(0)}70%{opacity:1}to{opacity:0;transform:translate(var(--dx),106vh) rotate(var(--rz))}} 1461 1462/* ---- responsive ---- */ 1463@media (max-width:640px){ 1464 .frq .frq-q{padding:64px 20px 24px} 1465 .frq .frq-grid{grid-template-columns:1fr;gap:10px} 1466 .frq .frq-card-inner{min-height:48px} 1467 .frq .frq-choices{gap:12px} 1468 .frq .frq-qactions{gap:10px} 1469 .frq .frq-qactions .frq-btn{flex:1} 1470 .frq .frq-hs .form-columns-2{flex-direction:column;gap:0} 1471 /* mobile: CTA full-width, Back stacked under it (no overlap tricks) */ 1472 .frq .frq-hs .hs-button{left:0;width:100%} 1473 .frq .frq-hs-actions{margin-top:10px} 1474 .frq .frq-hs-actions .frq-btn{left:0} 1475 /* corner clusters shrink on small screens (same idea as the hero) */ 1476 .frq .frq-deco .frq-d1,.frq .frq-deco .frq-d2{width:150px} 1477} 1478@media (prefers-reduced-motion:reduce){ 1479 .frq *,.frq *::before,.frq *::after{animation:none!important;transition-duration:.01ms!important} 1480} 1481</style></div><div class="w-embed w-script">
1481<script> 1482(function(){ 1483'use strict'; 1484/* ============================================================ 1485 CONFIG â everything a non-dev needs to wire lives here. 1486============================================================ */ 1487var CFG = { 1488 /* --- HubSpot (form: "Quote Request", region na1) --- */ 1489 HUBSPOT_PORTAL_ID: '6549460', 1490 HUBSPOT_FORM_GUID: 'e6554718-7443-4803-99f6-be33588b7663', 1491 1492 /* --- Salesforce campaign: sfdcCampaignId is an embed-only parameter; 1493 it overrides the form's own metaData campaign. Verify with a test 1494 lead that contacts join the campaign. */ 1495 SF_CAMPAIGN_ID: '701Qo00001aHixxIAC', 1496 1497 /* --- behavior --- */ 1498 REDIRECT_URL: '', // '' = inline confirmation. Set to e.g. '/quote-confirmation' 1499 // to redirect on success (that page can read ?frq_confetti=1 1500 // and call a copied frqConfetti(), see README) 1501 QUOTE_TIMEFRAME: 'one business day', 1502 FEATURES_SEPARATOR: ';', // HubSpot multi-checkbox properties expect ';' 1503 READY_TIMEOUT_MS: 15000, // max wait for the HubSpot embed to render 1504 STORAGE_KEY: 'frq_state_v2' 1505}; 1506 1507/* --- GTM dataLayer event names (GTM-P7XD5SD) --- */ 1508var EVENTS = { 1509 start: 'frq_start', 1510 step: 'frq_step_complete', 1511 submit:'frq_submit_success', 1512 error: 'frq_submit_error' 1513}; 1514 1515/* --- Option lists --- 1516 value = EXACT HubSpot form option value (payload; do not touch). 1517 label = what the user sees (brand style, matches HS labels/feedback). 1518 Values pulled from the live form definition on 2026-08-14. */ 1519var MISSION_OPTIONS = [ 1520 { value:'Iâm looking for my first real fundraising platform', 1521 label:'Iâm looking for my first real fundraising platform' }, 1522 { value:'I need fundraising tools that sync with our existing Donor CRM', 1523 label:'I need fundraising tools that sync with our existing Donor CRM' }, 1524 { value:'I need to replace my current Donor CRM', // HS value says "my" 1525 label:'I need to replace our current Donor CRM' } , // HS label says "our" 1526 { value:'I am a consultant here to learn about Funraise', 1527 label:'I am a consultant here to learn about Funraise' } 1528]; 1529var DONOR_COUNT_OPTIONS = [ // supporter_count_demo_form 1530 { value:'Under 500', label:'Under 500' }, 1531 { value:'500 - 2,500', label:'500-2,500' }, 1532 { value:'2,500 - 5,000', label:'2,500-5,000' }, 1533 { value:'5,000 - 10,000', label:'5,000-10,000' }, 1534 { value:'More than 10,000', label:'More than 10,000' } 1535]; 1536var ANNUAL_ONLINE_OPTIONS = [ // demo_form_raised_online_per_year 1537 { value:'$0 - $100,000', label:'$0 - $100K' }, 1538 { value:'$100,000 - $500,000', label:'$100K - $500K' }, 1539 { value:'$500,000 - $2,000,000', label:'$500K - $2M' }, 1540 { value:'$2,000,000+', label:'More than $2M' } 1541]; 1542 1543/* --- Feature grid (icons already on the Funraise CDN) --- */ 1544var CDN = 'https://cdn.prod.website-files.com/6702bad89f47b87835c58955/'; 1545/* Labels double as the submitted values â they match the HubSpot form's 1546 demo_form_features_to_focus_on options 1:1 (MULTI checkbox since 1547 2026-08-17, ops converted it; semicolon-joined). HubSpot-side edits 1548 change this contract silently: re-verify options via the JSONP form 1549 definition before every sync. */ 1550var FEATURES = [ 1551 { label:'Donation Forms', icon:CDN+'6702bad89f47b87835c58966_donation-forms.svg' }, 1552 { label:'Campaign Sites', icon:CDN+'6702bad89f47b87835c5895a_fundraising-websites.svg' }, 1553 { label:'Peer-to-Peer Fundraising', icon:CDN+'6702bad89f47b87835c58969_peer-to-peer.svg' }, 1554 { label:'Recurring Giving', icon:CDN+'6702bad89f47b87835c5895e_recurring-giving.svg' }, 1555 { label:'Custom Reports & Dashboards', icon:CDN+'6702bad89f47b87835c58ecd_donation-analytics.svg' }, 1556 { label:'Donor Management', icon:CDN+'6702bad89f47b87835c58968_supporters.svg' }, 1557 { label:'Text Engagement', icon:CDN+'6702bad89f47b87835c5896b_sms.svg' }, 1558 { label:'Events & Ticketing', icon:CDN+'6702bad89f47b87835c58967_events.svg' }, 1559 { label:'Integrations', icon:CDN+'6702bad89f47b87835c595a5_Integrations%20(1).svg' }, 1560 { label:'Other', icon:CDN+'6702bad89f47b87835c5930c_category-kopia.svg' } 1561]; 1562 1563/* --- HubSpot field map: OUR key -> HubSpot internal property name. 1564 Verified against the live form definition (2026-08-14). --- */ 1565var FIELD_MAP = { 1566 firstname: 'firstname', 1567 lastname: 'lastname', 1568 email: 'email', 1569 phone: 'phone', 1570 website: 'website', 1571 mission: 'demo_form_platform_goal', 1572 donorCount: 'supporter_count_demo_form', 1573 annualOnline:'demo_form_raised_online_per_year' 1574}; 1575/* Selected features -> ONE property, semicolon-joined (multi checkbox, 1576 confirmed by ops 2026-08-17). */ 1577var SELECTED_FEATURES_FIELD = 'demo_form_features_to_focus_on'; 1578 1579/* UTM capture -> the form's hidden fields. The form has NO gclid field, 1580 so gclid is not captured or sent (unknown fields fail validation). */ 1581var UTM_FIELD_MAP = { 1582 utm_source:'utm_source', utm_medium:'utm_medium', utm_campaign:'utm_campaign', 1583 utm_term:'utm_term', utm_content:'utm_content' 1584}; 1585 1586/* --- Screen flow: welcome -> 4 questions + contact -> confirmation --- 1587 The contact screen is the REAL HubSpot form (see header comment); 1588 mission + annual are required on the HubSpot form, so those two 1589 screens cannot be skipped. --- */ 1590var SCREENS = [ 1591 { id:'welcome', type:'welcome' }, 1592 { id:'mission', type:'choice', key:'mission', options:MISSION_OPTIONS, required:true, 1593 title:'How will Funraise support your mission?' }, 1594 { id:'features', type:'features', 1595 title:'Select the features most important to you', 1596 help:'Your answers help us build the right package for you.' }, 1597 { id:'donors', type:'choice', key:'donorCount', options:DONOR_COUNT_OPTIONS, 1598 title:'How many donors will you manage in Funraise?' }, 1599 { id:'raise', type:'choice', key:'annualOnline', options:ANNUAL_ONLINE_OPTIONS, required:true, 1600 title:'How much are you raising online annually?' }, 1601 { id:'contact', type:'hsform', submit:true, 1602 title:'Great! Please enter your contact details so we can share your quote', 1603 help:"We'll prepare and send your custom quote via email." },
1604 { id:'confirm', type:'confirm' } 1605]; 1606/* ==================== END CONFIG ==================== */ 1607 1608var root = document.querySelector('.frq'); 1609if (!root) return; 1610var $ = function(sel){ return root.querySelector('[data-frq="'+sel+'"]'); }; 1611var el = { 1612 overlay:$('overlay'), close:$('close'), form:$('form'), viewport:$('viewport'), 1613 bar:$('bar'), fill:$('fill'), live:$('live') 1614}; 1615 1616var CONFIRM_IDX = SCREENS.length - 1; 1617var QUESTIONS = SCREENS.length - 2; // welcome + confirm excluded 1618var state = { screen:0, maxReached:0, mission:'', features:[], donorCount:'', 1619 annualOnline:'', firstname:'', lastname:'', 1620 email:'', phone:'', website:'', utm:{} }; 1621var submitted = false, started = false, pendingAdvance = null; 1622 1623/* ---------- persistence ---------- */ 1624function save(){ try{ sessionStorage.setItem(CFG.STORAGE_KEY, JSON.stringify(state)); }catch(e){} } 1625function restore(){ 1626 try{ 1627 var raw = sessionStorage.getItem(CFG.STORAGE_KEY); 1628 if (raw){ var s = JSON.parse(raw); for (var k in state) if (k in s) state[k] = s[k]; } 1629 }catch(e){} 1630 state.screen = Math.min(state.screen || 0, CONFIRM_IDX - 1); 1631 state.maxReached = Math.min(Math.max(state.maxReached||0, state.screen), CONFIRM_IDX - 1); 1632 // Drop saved picks that are no longer form options (e.g. old "Subaccounts"). 1633 state.features = state.features.filter(function(v){ 1634 return FEATURES.some(function(f){ return f.label === v; }); 1635 }); 1636} 1637function captureUtms(){ 1638 try{ 1639 var p = new URLSearchParams(location.search);
1640 Object.keys(UTM_FIELD_MAP).forEach(function(k){ 1641 if (p.get(k)) state.utm[k] = p.get(k); // URL wins over stored values 1642 }); 1643 }catch(e){} 1644} 1645 1646/* ---------- analytics ---------- */ 1647function track(name, data){ 1648 if (!window.dataLayer || typeof window.dataLayer.push !== 'function') return; 1649 var evt = { event:name }; for (var k in (data||{})) evt[k] = data[k]; 1650 window.dataLayer.push(evt); 1651} 1652function trackStart(){ if (!started){ started = true; track(EVENTS.start); } } 1653 1654/* ---------- screen builders ---------- */ 1655function esc(s){ return String(s).replace(/[&<>"']/g, function(c){ 1656 return ({'&':'&','<':'<','>':'>','"':'"',"'":'''})[c]; }); } 1657function qHead(s, i){ 1658 var h = ''; 1659 if (i > 0) h += '<p class="frq-qnum">Question '+i+' of '+QUESTIONS+'</p>'; 1660 h += '<h3 class="frq-qtitle" tabindex="-1">'+esc(s.title)+'</h3>'; 1661 if (s.help) h += '<p class="frq-qhelp">'+esc(s.help)+'</p>'; 1662 return h; 1663} 1664function okRow(label, withBack){ 1665 return '<div class="frq-qactions">' 1666 + (withBack ? '<button type="button" class="frq-btn frq-btn-ghost" data-frq="backbtn">Back</button>' : '') 1667 + '<button type="button" class="frq-btn frq-ok" data-frq="ok">'+esc(label)+'</button></div>'; 1668} 1669function bWelcome(){ 1670 return '<p class="frq-eyebrow">Get a quote</p>' 1671 + '<h2 class="frq-qtitle frq-big" tabindex="-1">Let's find the <span class="frq-hl">right fit</span> for your mission</h2>' 1672 + '<p class="frq-qhelp frq-lead">Answer a few quick questions and a friendly real person on our team ' 1673 + 'will email you a custom quote, usually within ' + esc(CFG.QUOTE_TIMEFRAME) + '.</p>' 1674 + okRow('Get started') 1675 + '<p class="frq-mini">Takes about a minute</p>'; 1676} 1677function bChoice(s, i){ 1678 /* options are {value, label}: value = exact HubSpot option string (payload), 1679 label = brand-styled display */ 1680 var h = qHead(s, i) + '<div class="frq-choices">'; 1681 s.options.forEach(function(opt){ 1682 h += '<label class="frq-choice"><input type="radio" class="frq-sr" name="'+s.key+'" value="'+esc(opt.value)+'"' 1683 + (state[s.key] === opt.value ? ' checked' : '') + '>' 1684 + '<span class="frq-choice-inner"><span class="frq-radio" aria-hidden="true"></span>' 1685 + '<span>'+esc(opt.label)+'</span></span></label>'; 1686 }); 1687 h += '</div>'; 1688 if (s.required){ 1689 h += '<p class="frq-msg frq-choice-msg" data-frq="choice-msg" hidden>Please choose an answer to continue.</p>'; 1690 } 1691 return h + okRow('Continue', true); 1692} 1693function bFeatures(s, i){ 1694 var h = qHead(s, i) + '<div class="frq-grid">'; 1695 FEATURES.forEach(function(f){ 1696 h += '<label class="frq-card"><input type="checkbox" class="frq-sr" name="features" value="'+esc(f.label)+'"' 1697 + (state.features.indexOf(f.label) > -1 ? ' checked' : '') + '>' 1698 + '<span class="frq-card-inner"><img src="'+f.icon+'" alt="" width="24" height="24" loading="lazy">' 1699 + '<span class="frq-card-label">'+esc(f.label)+'</span>' 1700 + '<span class="frq-card-check" aria-hidden="true">â</span></span></label>'; 1701 }); 1702 return h + '</div>' + okRow('Continue', true); 1703} 1704function bHsForm(s, i){ 1705 /* The mount is where hbspt.forms.create renders the real form 1706 (pre-mounted on popup open, while this screen is still hidden). 1707 Our own actions row carries only Back â the submit is HubSpot's. */ 1708 return qHead(s, i) 1709 + '<div class="frq-alert" data-frq="alert" hidden role="alert"><p class="frq-alert-txt">' 1710 + 'Hmm, we couldn't load the quote form. Please try again, or reach us at ' 1711 + '<a class="frq-a" href="/contact-sales">contact sales</a>.</p>' 1712 + '<button type="button" class="frq-btn frq-btn-ghost" data-frq="retry">Try again</button></div>' 1713 + '<div class="frq-hs" id="frq-hs-mount" data-frq="hsmount" aria-busy="true"></div>' 1714 + '<div class="frq-qactions frq-hs-actions">' 1715 + '<button type="button" class="frq-btn frq-btn-ghost" data-frq="backbtn">Back</button></div>' 1716 /* The HubSpot form's approved legal line (its own copy is hidden to 1717 avoid printing it twice). Required: reCAPTCHA runs on this page 1718 and Google's terms demand visible attribution when the badge is 1719 hidden. */ 1720 + '<p class="frq-legal">
1720By clicking, you agree to Funraise's ' 1721 + '<a class="frq-a" href="https://funraise.org/about/terms-and-conditions" target="_blank" rel="noopener">Terms</a> and ' 1722 + '<a class="frq-a" href="https://funraise.org/about/privacy-policy" target="_blank" rel="noopener">Privacy Policy</a>. ' 1723 + 'Protected by reCAPTCHA (Google ' 1724 + '<a class="frq-a" href="https://policies.google.com/privacy" target="_blank" rel="noopener">Privacy</a> and ' 1725 + '<a class="frq-a" href="https://policies.google.com/terms" target="_blank" rel="noopener">Terms</a>). Opt out anytime.</p>'; 1726} 1727function bConfirm(){ 1728 /* Badge = the brand smiley (exact eye/mouth geometry from the official 1729 Funraise_Icon_app.svg) on a blue-gradient CIRCLE, per team feedback. */ 1730 return '<div class="frq-confirm-badge" aria-hidden="true">' 1731 + '<svg viewBox="0 0 300 300" width="64" height="64" role="img">' 1732 + '<defs><linearGradient id="frqsm1" x1="0" y1="0" x2="241" y2="241" gradientUnits="userSpaceOnUse">' 1733 + '<stop stop-color="#53B1FF"/><stop offset="1" stop-color="#2979FF"/></linearGradient></defs>' 1734 + '<circle cx="150" cy="150" r="150" fill="url(#frqsm1)"/>' 1735 + '<path fill="#FFFFFF" d="M189.54,151.57 L189.54,165.81 C189.515147,187.647339 171.792339,205.329852 149.955,205.304999 C128.117661,205.280147 110.435148,187.557339 110.46,165.72 L110.46,165.72 L110.46,151.57 L85.08,151.57 L85.08,165.83 L85.08,165.83 C85.08,201.684326 114.145674,230.749999 150,230.749999 C185.854326,230.749999 214.92,201.684326 214.92,165.83 L214.92,165.83 L214.92,151.57 L189.54,151.57 Z"/>' 1736 + '<circle fill="#FFFFFF" cx="189.75" cy="96.32" r="18.37"/>' 1737 + '<circle fill="#FFFFFF" cx="110.25" cy="96.32" r="18.37"/>' 1738 + '</svg></div>' 1739 + '<h3 class="frq-qtitle" tabindex="-1">Your quote is on its way!</h3>' 1740 + '<p class="frq-qhelp">A real person is putting your quote together now. ' 1741 + 'We'll send your quote to <b data-frq="confirm-email">your inbox</b> as soon as it's ready!</p>' 1742 + '<button type="button" class="frq-btn frq-ok frq-btn-link" data-frq="confirm-close">Back to pricing</button>'; 1743} 1744var FALLBACK_ICON = 'data:image/svg+xml;utf8,' + encodeURIComponent( 1745 '<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><rect x="3" y="3" width="34" height="34" rx="9" fill="#EAF2FF"/><path d="M12 21l6 6 10-13" stroke="#2979FF" stroke-width="3" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>'); 1746function build(){ 1747 el.viewport.innerHTML = SCREENS.map(function(s, i){ 1748 var inner = s.type==='welcome' ? bWelcome() 1749 : s.type==='choice' ? bChoice(s, i) 1750 : s.type==='features' ? bFeatures(s, i) 1751 : s.type==='hsform' ? bHsForm(s, i) 1752 : bConfirm(); 1753 return '<div class="frq-screen" data-screen="'+i+'"><div class="frq-q' 1754 + (s.type==='confirm' ? ' frq-qconfirm' : '') + '">'+inner+'</div></div>'; 1755 }).join(''); 1756 Array.prototype.forEach.call(el.viewport.querySelectorAll('.frq-card img'), function(img){ 1757 img.onerror = function(){ 1758 if (img.src !== FALLBACK_ICON){ img.src = FALLBACK_ICON; 1759 console.warn('[frq] feature icon 404, using placeholder'); } 1760 }; 1761 }); 1762} 1763 1764/* ---------- rendering / navigation ---------- */ 1765function activeEl(){ return el.viewport.querySelector('.frq-screen[data-screen="'+state.screen+'"]'); } 1766function render(dir, focus){ 1767 el.viewport.dataset.dir = dir || 'fwd'; 1768 el.overlay.scrollTop = 0; // each screen starts at the top 1769 Array.prototype.forEach.call(el.viewport.children, function(sc){ 1770 sc.classList.toggle('is-active', +sc.dataset.screen === state.screen); 1771 }); 1772 var pct = Math.round(state.screen / CONFIRM_IDX * 100); 1773 el.fill.style.width = pct + '%'; 1774 el.bar.setAttribute('aria-valuenow', pct); 1775 if (focus !== false){ 1776 var h = activeEl().querySelector('.frq-qtitle'); 1777 if (h) h.focus(); 1778 } 1779 // The form pre-mounts on popup open; entering the contact screen only 1780 // re-syncs the qualifier answers (mountHsForm is a guarded fallback). 1781 if (isOpen && SCREENS[state.screen].type === 'hsform'){ mountHsForm(); syncHsQualifiers(); } 1782} 1783function go(n, dir, focus){ 1784 if (pendingAdvance){ clearTimeout(pendingAdvance); pendingAdvance = null; } 1785 if (n < 0 || n > CONFIRM_IDX) return; 1786 if (n === CONFIRM_IDX && !submitted) return; // confirmation only via successful submit 1787 state.screen = n; 1788 state.maxReached = Math.max(state.maxReached, n); 1789 save(); render(dir, focus); 1790} 1791function advance(){ 1792 if (submitted) return; 1793 var s = SCREENS[state.screen]; 1794 if (s.type === 'hsform') return; // submission belongs to the HubSpot form 1795 if (s.type === 'choice' && s.required && !state[s.key]){ 1796 // mission + annual are required on the HubSpot form â no skipping 1797 var m = activeEl().querySelector('[data-frq="choice-msg"]'); 1798 if (m) m.hidden = false;
1799 el.live.textContent = 'Please choose an answer to continue.'; 1800 var t = activeEl().querySelector('.frq-qtitle'); if (t) t.focus(); 1801 return; 1802 } 1803 if (state.screen === 0) trackStart(); 1804 else track(EVENTS.step, { frq_step:state.screen, frq_screen:s.id }); 1805 go(state.screen + 1, 'fwd'); 1806} 1807 1808/* ---------- state <- inputs ---------- */ 1809function readInput(t){ 1810 if (!t || !t.name) return; 1811 if (t.closest && t.closest('[data-frq="hsmount"]')){ 1812 // Mirror the HubSpot contact fields into state (confirm screen + 1813 // prefill after an accidental close). React may re-render the form, 1814 // so also re-assert the branded submit label. 1815 if (t.name in state && typeof state[t.name] === 'string') state[t.name] = t.value; 1816 hsCosmetics(); 1817 save(); 1818 return; 1819 } 1820 if (t.name === 'features'){ 1821 state.features = Array.prototype.map.call( 1822 el.viewport.querySelectorAll('input[name="features"]:checked'), function(c){ return c.value; }); 1823 } else if (t.name in state){ 1824 state[t.name] = t.value; 1825 } 1826 if (t.type === 'radio'){ 1827 var cm = el.viewport.querySelector('[data-frq="choice-msg"]:not([hidden])'); 1828 if (cm) cm.hidden = true; 1829 if (pendingAdvance){ clearTimeout(pendingAdvance); pendingAdvance = null; } 1830 // Typeform-style auto-advance shortly after a single-choice answer. 1831 pendingAdvance = setTimeout(function(){ pendingAdvance = null; advance(); }, 550); 1832 } 1833 save(); 1834} 1835function normalizeUrl(v){ 1836 v = (v||'').trim(); 1837 if (v && !/^https?:\/\//i.test(v)) v = 'https://' + v; 1838 return v; 1839} 1840 1841/* ---------- the real HubSpot form (contact screen) ---------- 1842 The form has CAPTCHA enabled: the public Submission API rejects it 1843 outright, and a hidden programmatically-driven copy was rejected 1844 server-side ("Failed to validate Captcha" â no human signals). So the 1845 real form renders VISIBLY, restyled; the user types their contact 1846 details and clicks HubSpot's own submit. We prefill the qualifier 1847 fields from screens 1-4 (hidden by CSS) and the stored UTMs, and 1848 listen for onFormSubmitted to show our confirmation. */ 1849function loadHsScript(){ 1850 return new Promise(function(resolve, reject){ 1851 if (window.hbspt && window.hbspt.forms) return resolve(); 1852 var s = document.createElement('script'); 1853 s.src = 'https://js.hsforms.net/forms/embed/v2.js'; 1854 s.async = true; 1855 s.onload = function(){ 1856 (window.hbspt && window.hbspt.forms) ? resolve() : reject(new Error('hbspt unavailable after load')); 1857 }; 1858 s.onerror = function(){ reject(new Error('HubSpot forms script failed to load')); }; 1859 document.head.appendChild(s); 1860 }); 1861} 1862/* The form renders INLINE in the mount (class hs-form-private); the 1863 first iframe inside it is Google's cross-origin reCAPTCHA anchor, so 1864 never treat box.querySelector('iframe') as "the form". Same-origin 1865 iframes are still scanned in case HubSpot ever switches rendering. */ 1866function hsFormEl(box){ 1867 var f = box.querySelector('form'); 1868 if (f) return f; 1869 var frames = box.querySelectorAll('iframe'); 1870 for (var i = 0; i < frames.length; i++){ 1871 try { 1872 var doc = frames[i].contentDocument; // null for cross-origin (reCAPTCHA) 1873 if (doc){ var g = doc.querySelector('form'); if (g) return g; } 1874 } catch(e){} 1875 } 1876 return null; 1877} 1878/* onFormReady can beat the React DOM commit by a few milliseconds â 1879 wait for the real form + submit button before touching anything. */ 1880function whenHsFormReady(box){ 1881 return new Promise(function(resolve, reject){ 1882 var waited = 0; 1883 (function look(){ 1884 var form = hsFormEl(box); 1885 var btn = form && form.querySelector('input[type="submit"], button[type="submit"]'); 1886 if (form && btn) return resolve(form); 1887 if (waited >= CFG.READY_TIMEOUT_MS) return reject(new Error('HubSpot form never rendered')); 1888 waited += 150; 1889 setTimeout(look, 150); 1890 })(); 1891 }); 1892} 1893/* React-controlled inputs ignore plain .value writes: use the native 1894 setter from the element's own realm, then bubble input+change. */ 1895function setNative(el, v){ 1896 var win = el.ownerDocument.defaultView || window; 1897 var proto = el.tagName === 'SELECT' ? win.HTMLSelectElement : win.HTMLInputElement; 1898 var d = Object.getOwnPropertyDescriptor(proto.prototype, 'value'); 1899 if (d && d.set) d.set.call(el, v); else el.value = v; 1900 el.dispatchEvent(new win.Event('input', { bubbles: true })); 1901 el.dispatchEvent(new win.Event('change', { bubbles: true })); 1902} 1903function addField(fields, name, value){ 1904 if (name && value !== '' && value != null) fields.push({ name:name, value:value }); 1905} 1906/* Contact fields: restored once at mount for retries/reloads; after 1907 that the user's own typing owns them (mirrored back into state). */ 1908function hsContactFields(){ 1909 var f = []; 1910 addField(f, FIELD_MAP.firstname, state.firstname.trim()); 1911 addField(f, FIELD_MAP.lastname, state.lastname.trim()); 1912 addField(f, FIELD_MAP.email, state.email.trim()); 1913 addField(f, FIELD_MAP.phone, state.phone.trim()); 1914 addField(f, FIELD_MAP.website, state.website ? normalizeUrl(state.website) : ''); 1915 return f; 1916} 1917/* Qualifiers from screens 1-4 (their rows are CSS-hidden on the form) 1918 + UTMs. Re-synced every time the contact screen becomes active: the 1919 form pre-mounts on popup open, before these answers exist, and the 1920 user can change them via Back at any point. */ 1921function hsQualifierFields(){ 1922 var f = []; 1923 addField(f, FIELD_MAP.mission, state.mission); 1924 addField(f, FIELD_MAP.donorCount, state.donorCount); 1925 addField(f, FIELD_MAP.annualOnline, state.annualOnline); 1926 f.push({ name:SELECTED_FEATURES_FIELD, value:state.features.join(CFG.FEATURES_SEPARATOR) }); 1927 Object.keys(UTM_FIELD_MAP).forEach(function(k){ addField(f, UTM_FIELD_MAP[k], state.utm[k]); }); 1928 return f; 1929} 1930function fillHsForm(box, fields){ 1931 var form = hsFormEl(box); 1932 if (!form) throw new Error('HubSpot form not found in container'); 1933 fields.forEach(function(f){ 1934 var els = form.querySelectorAll('[name="' + f.name + '"]'); 1935 if (!els.length) return; // field not rendered on the form â skip 1936 if (els[0].type === 'checkbox'){ 1937 var want = String(f.value).split(CFG.FEATURES_SEPARATOR); 1938 Array.prototype.forEach.call(els, function(cb){ 1939 var should = want.indexOf(cb.value) > -1; 1940 if (cb.checked !== should) cb.click(); // click = native React-visible toggle 1941 }); 1942 } else if (els[0].type === 'radio'){ 1943 Array.prototype.forEach.call(els, function(rb){ 1944 if (rb.value === f.value && !rb.checked) rb.click(); 1945 }); 1946 } else { 1947 setNative(els[0], f.value); 1948 } 1949 }); 1950} 1951/* Cosmetics matching the pre-HubSpot design: sentence-case labels, 1952 "(optional)" on phone, the old placeholders, and the CTA label 1953 ("Submit" -> "Get my quote"). Labels render as 1954 <span>Text</span><span class="hs-form-required">*</span> (asterisk is
1955 CSS-hidden). React can re-render any of it, so this is idempotent and 1956 re-asserted on input. */ 1957var HS_LABELS = { firstname:'First name', lastname:'Last name', email:'Work email', 1958 phone:'Phone (optional)', website:'Organization website' }; 1959var HS_PLACEHOLDERS = { firstname:'Jane', lastname:'Goodall', email:'[email protected]', 1960 phone:'(555) 555-1234', website:'yourorg.org' }; 1961function hsCosmetics(){ 1962 var m = $('hsmount'); 1963 if (!m) return; 1964 var b = m.querySelector('input[type="submit"], button[type="submit"]'); 1965 if (b){ 1966 if (b.tagName === 'INPUT'){ if (b.value !== 'Get my quote') b.value = 'Get my quote'; } 1967 else if (b.textContent !== 'Get my quote') b.textContent = 'Get my quote'; 1968 } 1969 Object.keys(HS_LABELS).forEach(function(name){ 1970 var s = m.querySelector('.hs_' + name + ' label>span'); 1971 if (s && s.textContent !== HS_LABELS[name]) s.textContent = HS_LABELS[name]; 1972 var inp = m.querySelector('.hs_' + name + ' input'); 1973 if (inp && inp.getAttribute('placeholder') !== HS_PLACEHOLDERS[name]){ 1974 inp.setAttribute('placeholder', HS_PLACEHOLDERS[name]); 1975 } 1976 }); 1977} 1978/* Re-push the screen 1-4 answers into the (hidden) qualifier fields â 1979 called whenever the contact screen becomes active on a ready form. */ 1980function syncHsQualifiers(){ 1981 var m = $('hsmount'); 1982 if (!m || m.dataset.hsState !== 'ready') return; // mount chain will sync 1983 fillHsForm(m, hsQualifierFields()); 1984 hsCosmetics(); 1985} 1986function mountHsForm(){ 1987 var mount = $('hsmount'); 1988 if (!mount || mount.dataset.hsState) return; // already loading or ready 1989 mount.dataset.hsState = 'loading'; 1990 mount.innerHTML = ''; // clear leftovers from a failed try 1991 var a = $('alert'); if (a) a.hidden = true; 1992 loadHsScript().then(function(){ 1993 return new Promise(function(resolve, reject){ 1994 var to = setTimeout(function(){ off(); reject(new Error('HubSpot form ready timeout')); }, CFG.READY_TIMEOUT_MS); 1995 function onMsg(e){ 1996 var d = e.data; 1997 if (!d || d.type !== 'hsFormCallback' || d.id !== CFG.HUBSPOT_FORM_GUID) return; 1998 if (d.eventName === 'onFormReady'){ off(); resolve(); } 1999 } 2000 function off(){ clearTimeout(to); window.removeEventListener('message', onMsg); } 2001 window.addEventListener('message', onMsg); 2002 window.hbspt.forms.create({ 2003 region: 'na1', 2004 portalId: CFG.HUBSPOT_PORTAL_ID, 2005 formId: CFG.HUBSPOT_FORM_GUID, 2006 sfdcCampaignId: CFG.SF_CAMPAIGN_ID || undefined, 2007 target: '#frq-hs-mount', 2008 css: '', // strip HubSpot's stylesheet; our CSS restyles the raw form 2009 cssRequired: '', 2010 /* The form's own setting redirects to /success/thanks-demo â 2011 an inlineMessage override keeps the user in the wizard so our 2012 confirmation screen (onFormSubmitted) can take over. */ 2013 inlineMessage: 'Thanks! Your quote is on its way.' 2014 }); 2015 }); 2016 }).then(function(){ 2017 return whenHsFormReady(mount); 2018 }).then(function(){ 2019 mount.dataset.hsState = 'ready'; 2020 mount.setAttribute('aria-busy', 'false'); 2021 fillHsForm(mount, hsContactFields().concat(hsQualifierFields())); 2022 hsCosmetics(); 2023 }).catch(function(err){ 2024 console.error('[frq] HubSpot form failed to load:', err); 2025 track(EVENTS.error); 2026 delete mount.dataset.hsState; // allow a retry 2027 mount.setAttribute('aria-busy', 'false'); // stop the "Loadingâ¦" note 2028 var a2 = $('alert'); if (a2) a2.hidden = false; 2029 el.live.textContent = 'We could not load the quote form. Please try again.'; 2030 }); 2031} 2032function onHsSubmitted(){ 2033 if (submitted) return; 2034 submitted = true; 2035 track(EVENTS.submit); 2036 if (CFG.REDIRECT_URL){ 2037 // Target page reads ?frq_confetti=1 and calls frqConfetti() (see README). 2038 location.assign(CFG.REDIRECT_URL + (CFG.REDIRECT_URL.indexOf('?')>-1 ? '&' : '?') + 'frq_confetti=1'); 2039 return; 2040 } 2041 var em = $('confirm-email'); if (em && state.email) em.textContent = state.email; 2042 go(CONFIRM_IDX, 'fwd'); 2043 try{ sessionStorage.removeItem(CFG.STORAGE_KEY); }catch(e){} 2044 el.live.textContent = 'Request sent! Your quote is on its way.'; 2045 frqConfetti(); 2046} 2047 2048/* ---------- confetti ---------- 2049 Self-contained DOM pieces (no CDN script, so nothing can be blocked 2050 and it stacks ABOVE the popup overlay; canvas-confetti painted at 2051 z-index 100, underneath our z-index 9999 dialog). Reusable: 2052 window.frqConfetti(). To reuse elsewhere, copy this function plus 2053 the .frq-cf CSS rules. */ 2054var BRAND_CONFETTI = ['#2979FF','#43F3F7','#64D7FF','#FFBD00','#FF3E8D','#00D641']; 2055function frqConfetti(){ 2056 try{ if (matchMedia('(prefers-reduced-motion: reduce)').matches) return; }catch(e){} 2057 var host = document.createElement('div'); 2058 host.className = 'frq-cf'; host.setAttribute('aria-hidden','true'); 2059 for (var i = 0; i < 80; i++){ 2060 var p = document.createElement('i'), square = i % 3 !== 0, size = 6 + Math.random()*6; 2061 p.style.left = (Math.random()*100) + '%'; 2062 p.style.width = size + 'px'; 2063 p.style.height = (square ? size*.6 : size) + 'px'; 2064 p.style.background = BRAND_CONFETTI[i % BRAND_CONFETTI.length]; 2065 p.style.borderRadius = square ? '2px' : '50%';
2066 p.style.setProperty('--dx', (Math.random()*160 - 80) + 'px'); 2067 p.style.setProperty('--rz', (Math.random()*720 - 360) + 'deg'); 2068 p.style.animationDuration = (1.7 + Math.random()*1.4) + 's'; 2069 p.style.animationDelay = (Math.random()*.5) + 's'; 2070 host.appendChild(p); 2071 } 2072 document.body.appendChild(host); 2073 setTimeout(function(){ if (host.parentNode) host.parentNode.removeChild(host); }, 4200); 2074} 2075window.frqConfetti = frqConfetti; 2076 2077/* ---------- popup open/close ---------- */ 2078var isOpen = false, lastFocus = null; 2079function frqOpen(){ 2080 if (isOpen) return; 2081 isOpen = true; lastFocus = document.activeElement; 2082 el.overlay.hidden = false; 2083 document.documentElement.style.overflow = 'hidden'; // lock page scroll 2084 render('fwd', true); // resumes the saved screen; focuses its heading 2085 /* Pre-mount the HubSpot form NOW, inside the (hidden) contact screen: 2086 by the time the user reaches it, the form is rendered and the 2087 slide-in animates a stable layout (probe-verified: the embed 2088 renders fine under display:none and lays out on reveal). Trade-off: 2089 HubSpot counts a form view per popup open. */ 2090 mountHsForm(); 2091} 2092function frqClose(){ 2093 if (!isOpen) return; 2094 isOpen = false; el.overlay.hidden = true; 2095 document.documentElement.style.overflow = ''; 2096 if (lastFocus && lastFocus.focus) try{ lastFocus.focus(); }catch(e){} 2097} 2098window.frqOpen = frqOpen; window.frqClose = frqClose; 2099 2100/* ---------- keyboard: Enter advances (outside the HubSpot form), Esc closes ---------- */ 2101function keys(e){ 2102 if (e.key !== 'Enter') return; 2103 var t = e.target; 2104 if (t && t.closest && (t.closest('button,a') || t.closest('[data-frq="hsmount"]'))) return; 2105 e.preventDefault(); // Enter inside the HubSpot form submits it natively 2106 advance(); 2107} 2108 2109/* ---------- events ---------- */ 2110function bind(){ 2111 el.form.addEventListener('click', function(e){ 2112 var o = e.target.closest && e.target.closest('[data-frq="ok"]'); 2113 if (o){ e.preventDefault(); advance(); return; } 2114 var b = e.target.closest && e.target.closest('[data-frq="backbtn"]'); 2115 if (b && !submitted && state.screen > 0) go(state.screen - 1, 'back'); 2116 var c = e.target.closest && e.target.closest('[data-frq="confirm-close"]'); 2117 if (c) frqClose(); // confirmation CTA just returns to the page 2118 var r = e.target.closest && e.target.closest('[data-frq="retry"]'); 2119 if (r) mountHsForm(); 2120 }); 2121 root.addEventListener('keydown', keys); 2122 // Esc closes from anywhere (frqClose is a no-op while the popup is closed). 2123 document.addEventListener('keydown', function(e){ if (e.key === 'Escape') frqClose(); }); 2124 el.form.addEventListener('input', function(e){ trackStart(); readInput(e.target); }); 2125 el.form.addEventListener('change', function(e){ trackStart(); readInput(e.target); }); 2126 el.close.addEventListener('click', frqClose); 2127 // The submit confirmation comes from the HubSpot embed as a message. 2128 window.addEventListener('message', function(e){ 2129 var d = e.data; 2130 if (!d || d.type !== 'hsFormCallback' || d.id !== CFG.HUBSPOT_FORM_GUID) return; 2131 if (d.eventName === 'onFormSubmitted') onHsSubmitted(); 2132 }); 2133 // Any element with data-frq-open (or a link to #get-a-quote) opens the popup. 2134 document.addEventListener('click', function(e){ 2135 var t = e.target.closest && e.target.closest('[data-frq-open],a[href="#get-a-quote"]'); 2136 if (t){ e.preventDefault(); frqOpen(); } 2137 }); 2138 // Minimal focus trap while the dialog is open. 2139 el.overlay.addEventListener('keydown', function(e){ 2140 if (e.key !== 'Tab') return; 2141 var list = Array.prototype.filter.call( 2142 el.overlay.querySelectorAll('a[href],button,input,select,textarea'), 2143 function(x){ return !x.disabled && x.offsetParent !== null; }); 2144 if (!list.length) return; 2145 var first = list[0], last = list[list.length-1]; 2146 if (e.shiftKey && document.activeElement === first){ e.preventDefault(); last.focus(); } 2147 else if (!e.shiftKey && document.activeElement === last){ e.preventDefault(); first.focus(); } 2148 }); 2149} 2150 2151/* ---------- boot ---------- */ 2152function init(){ 2153 /* Portal: move the overlay into a fresh .frq wrapper on <body>. 2154 Inside a Webflow section, an animated ancestor (transform/will-change) 2155 becomes the containing block for position:fixed and insets the whole 2156 popup; at body level, fixed means the real window. The wrapper keeps 2157 every ".frq ..." selector and token working. */ 2158 var portal = document.createElement('div'); 2159 portal.className = 'frq'; 2160 portal.setAttribute('data-frq-portal', ''); 2161 portal.appendChild(el.overlay);
2162 document.body.appendChild(portal); 2163 root = portal; // queries + key handling now target the portal subtree 2164 restore(); captureUtms(); save(); 2165 build(); bind(); 2166 render('fwd', false); // prepare the saved screen; overlay stays hidden 2167 if (location.hash === '#get-a-quote') frqOpen(); 2168} 2169try{ init(); } 2170catch(err){ 2171 // Launcher is a plain link to /contact-sales, so users still have a path. 2172 console.error('[frq] init failed:', err); 2173} 2174})(); 2175</script>
2175</div></div></div></div><div class="content-section no-margin-top no-padding-top mb-100"><div class="pricing-bar card my-sm"><div class="content-container narrow no-padding-bottom _100"><div class="pricing-table-box menu mobile"><div class="screen-size-disclaimer"><h5 class="heading-87">FOR MORE DETAILS</h5><div class="text-block-101">Please view this on a larger screen size</div></div><div class="div-block-61"><div class="text-block-47">Need help deciding?<br/></div><a data-w-id="533229d6-fdff-14fa-e543-acdf9300780a" href="/contact-sales" class="arrow-link w-inline-block"><div class="link-container"><div class="arrow-link-text">Contact Sales</div><div class="link-arrow">î</div></div></a></div><div class="pricing-menu-block"><h5 class="no-margin-top">Essentials</h5><div class="pricng-column-price mobile-sm minh-auto sm mt-10"><span class="price-green-horizonal">$0</span>/month</div></div><div class="pricing-menu-block"><h5 class="no-margin-top">Premium Plans</h5><a href="/contact-sales" class="button-9 button-large cta w-button">Talk with Sales</a></div></div><div class="w-layout-grid pricing-3-up desktop _3-row"><div id="w-node-_533229d6-fdff-14fa-e543-acdf9300781d-7eea52fb" class="flex"><a data-w-id="533229d6-fdff-14fa-e543-acdf9300781e" href="/contact-sales" class="arrow-link pricing-bar hide w-inline-block"><div class="link-container"><div class="arrow-link-text">Contact Sales</div><div class="link-arrow">î</div></div></a><div class="div-block-451"><div class="text-block-1401 bold">Compare plans</div></div></div><div class="pricing-menu-block flex"><h5 class="pricing-header-label"><strong>Free<br/></strong></h5></div><div class="pricing-menu-block flex"><h5 class="pricing-header-label">Premium Plans</h5></div></div></div></div><div class="pricing-bar card hidden"><div class="content-container narrow no-padding-bottom"><div class="pricing-table-box menu mobile"><div class="screen-size-disclaimer"><h5 class="heading-87">FOR MORE DETAILS</h5><div class="text-block-101">Please view this on a larger screen size</div></div><div class="div-block-61"><div class="text-block-47">Need help deciding?<br/></div><a data-w-id="533229d6-fdff-14fa-e543-acdf93007844" href="/contact-sales" class="arrow-link w-inline-block"><div class="link-container"><div class="arrow-link-text">Contact Sales</div><div class="link-arrow">î</div></div></a></div><div class="pricing-menu-block hidden"><h5 class="no-margin-top">Free</h5><div class="centered-column-container pricing-plan">Free<br/></div></div><div class="pricing-menu-block"><h5 class="no-margin-top">Enterprise</h5><div class="centered-column-container pricing-plan">Contact Us<br/></div></div></div><div class="w-layout-grid pricing-3-up desktop col-less"><div id="w-node-_533229d6-fdff-14fa-e543-acdf93007857-7eea52fb" class="flex"><a data-w-id="533229d6-fdff-14fa-e543-acdf93007858" href="/contact-sales" class="arrow-link pricing-bar hide w-inline-block"><div class="link-container"><div class="arrow-link-text">Contact Sales</div><div class="link-arrow">î</div></div></a></div><div class="pricing-menu-block"><h5 class="pricing-header-label">Standard</h5></div><h5 id="w-node-_533229d6-fdff-14fa-e543-acdf93007861-7eea52fb" class="pricing-header-label">Premium</h5></div></div></div><div class="content-container margin-top narrow _100"><div class="pricing-chart-desktop"><div class="pricing-chart-block first"><div class="div-block-475"><h4 class="pricing-header mb-0">Payment Fees</h4><div class="text-label-light-blue">~90% of donors cover fees ð¤</div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Platform fees<br/></div></div><div class="centered-column-container"><div class="text-block-1267">5%</div></div><div class="centered-column-container"><div class="text-block-1267">0-3%</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div class="tooltip-wrapper-praicing"><div>Processing fees<br/></div><div data-w-id="533229d6-fdff-14fa-e543-acdf9300787b" class="div-block-476"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/680b9e1786a76ec34a74ef2a_Vector%20(7).svg" loading="lazy" alt="" class="image-249"/><div style="opacity:0;display:none" class="tooltip-item"><div class="text-block-1407">Varies by processor. Shown here are common card processing fees with <a href="/funraise-payments" target="_blank" class="tooltip-item-link">Funraise Payments powered by Stripe</a>.</div><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/680b9f3b35465144d12c9761_down-arrow-svgrepo-com.svg" loading="lazy" alt="" class="image-250"/></div></div></div><div class="centered-column-container"><div class="text-block-1267">2.9% + 60¢</div></div><div class="centered-column-container"><div class="text-block-1267">2.9% + 60¢</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Donor Fee Coverage<br/></div></div><div class="centered-column-container">
2175<div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col highlight hide"><div><div class="tooltip-wrapper-praicing"><div class="text-block-1408"><strong>Estimated </strong><span class="text-span-35"><strong>Total</strong></span><strong> Payment Costs</strong><br/></div><div data-w-id="533229d6-fdff-14fa-e543-acdf930078a1" class="div-block-476"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/680b9e1786a76ec34a74ef2a_Vector%20(7).svg" loading="lazy" alt="" class="image-249"/><div style="opacity:0;display:none" class="tooltip-item"><div class="text-block-1407 mb-5">Because ~90% of donors cover fees, these are the average total payment costs for Funraise customers â and our best estimate of your costs.<br/></div><div class="text-block-1407">Calculations do not include the 60¢ per transaction fee or transactions that were ineligible for standard fee coverage models.</div><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/680b9f3b35465144d12c9761_down-arrow-svgrepo-com.svg" loading="lazy" alt="" class="image-250"/></div></div></div></div><div class="centered-column-container"><div class="text-block-1267 bold">2.5%</div></div><div class="centered-column-container"><div class="text-block-1267 bold">0.8%</div></div></div></div><div class="pricing-chart-block"><h4 class="pricing-header">Features</h4><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Donation Forms<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Donation Pages<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Recurring Donations<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Events & Ticketing<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Donor Management<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Donation Management<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Subscription Management<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Household Management<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Commitments & Pledge Management<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Automated Tasks<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container">
2175<div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Funraise App<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Donor Portal<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Fundraising Websites<br/></div></div><div class="centered-column-container"><div class="text-block-1267">1</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Auctions</div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Email Messaging</div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Peer-to-Peer Fundraising<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Attachments<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Funraise API<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Webhooks<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Permissions<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Subaccounts<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Inbound Email Parsing (BCC)<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Wealth Screening<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Fundraising Intelligence<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon green-plus">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Text Engagement</div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon green-plus">î</div></div></div></div><div class="pricing-chart-block"><h4 class="pricing-header">Integrations</h4><div class="w-layout-grid plan-chart-row _3-col gray"><div><div>Double the Donation<br/></div></div><div class="centered-column-container">
2175<div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Springboard<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col gray"><div><div>Google Maps (Address Auto-Complete)<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Shopify<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col gray"><div><div>Twitch<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Streamlabs<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col gray"><div><div>Klaviyo<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Daxko<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col gray"><div><div>Mailchimp<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Constant Contact<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col gray"><div><div>Salesforce<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>HubSpot<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Raiserâs Edge<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Virtuous<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col gray"><div><div>QuickBooks Online<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Facebook<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div></div><div class="pricing-chart-block"><h4 class="pricing-header">Payment Methods</h4><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Cards<br/></div></div><div class="centered-column-container">
2175<div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>ACH (eCheck)<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>PayPal<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Venmo<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Apple Pay<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>DAFpay<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Stock (DonateStock)<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Crypto (BitPay)<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div></div><div class="pricing-chart-block"><h4 class="pricing-header">Support & Services</h4><div class="w-layout-grid plan-chart-row _3-col"><div><div>Knowledge Base<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Funraise University<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Developer Docs<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Chat & Ticketing Support<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Onboarding Training<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray _3-col"><div><div>Custom Domains<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon green-plus">î</div></div></div><div class="w-layout-grid plan-chart-row _3-col"><div><div>Recurring Subscription Migration<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon green-plus">î</div></div></div></div></div><div class="pricing-chart-desktop hidden"><div class="pricing-chart-block"><h4 class="pricing-header">Features</h4><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Donation Forms<br/></div></div><div class="centered-column-container">
2175<div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Donation Pages<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Supporters<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Recurring Donations<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Events & Ticketing<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Supporter Management<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Donation Management<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Recurring Subscription Management<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Household Management<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Donation Tasks<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Automated Emails<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Funraise App<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Donor Portal App<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Bulk Imports<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Fundraising Websites<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Peer-to-Peer Fundraising<br/></div></div><div class="centered-column-container">
2175<div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Webhooks<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Attachments<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Text Engagement<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Reports & Dashboards<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Funraise API<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon green-plus">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Subaccounts<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon green-plus">î</div></div></div></div><div class="pricing-chart-block"><h4 class="pricing-header">Integrations</h4><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Double the Donation<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Mailchimp<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Constant Contact<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Klaviyo<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Google Maps (Address Auto-complete)<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Raiser's Edge<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>HubSpot<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Virtuous<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Salesforce<br/></div></div><div class="centered-column-container">
2175<div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Shopify<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Quickbooks Online<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Twitch<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Streamlabs<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Facebook<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div></div><div class="pricing-chart-block"><h4 class="pricing-header">Support & Services</h4><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Knowledge base<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Funraise University<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Developer docs<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Chat support<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Onboarding training<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Custom domains<br/></div></div><div class="centered-column-container"><div class="icon green-plus">î</div></div><div class="centered-column-container"><div class="icon green-plus">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Recurring subscription migration<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Dedicated Success Manager<br/></div></div><div class="centered-column-container"><div class="icon chart-x">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div></div><div class="pricing-chart-block"><h4 class="pricing-header">Payments</h4><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Card<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>PayPal<br/></div></div><div class="centered-column-container">
2175<div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Venmo<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>e-Check (ACH)<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row gray col-less"><div><div>Stock (DonateStock)<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Apple Pay<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div><div class="w-layout-grid plan-chart-row col-less"><div><div>Crypto<br/></div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div><div class="centered-column-container"><div class="icon chart-check">î</div></div></div></div></div></div></div><section class="key-points white-bg"><div class="w-layout-blockcontainer container-main w-container"><div class="h2-short-wrapper"><div class="label blue-primary">Nonprofit-friendly pricing</div><h2 class="body-headline-5">Go big on fundraising features, not cost.</h2></div><div><div class="w-layout-grid grid-46"><div id="w-node-_533229d6-fdff-14fa-e543-acdf93007d53-7eea52fb" class="key-poin-signle-wrapper"><img width="18" height="18" alt="" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67cf0b9ea09cdb09afd4ce6a_visibility.svg" loading="lazy" class="key-points-icone"/><div class="key-point-single-headline-4">Transparent pricing</div><div class="key-points-single-text-4">Avoid surprise costs and long-term contracts  with clear and transparent usage-based pricing.</div></div><div id="w-node-_533229d6-fdff-14fa-e543-acdf93007d59-7eea52fb" class="key-poin-signle-wrapper"><img width="12" height="12" alt="" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67cf0b9e3f22ba00243de464_open_in_full.svg" loading="lazy" class="key-points-icone"/><div class="key-point-single-headline-4">Fee-based costs</div><div class="key-points-single-text-4">Our risk-free fee-based model enables your organizationâs expenses to scale hand-in-hand with your fundraising success.</div></div><div id="w-node-_533229d6-fdff-14fa-e543-acdf93007d5f-7eea52fb" class="key-poin-signle-wrapper"><img width="18" height="18" alt="" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67cf0b9e69c58743869e8064_groups.svg" loading="lazy" class="key-points-icone"/><div class="key-point-single-headline-4">Weâre in this together</div><div class="key-points-single-text-4">We only win when you win. Funraise is inspired to provide technology and support that helps you raise more.</div></div><div id="w-node-_533229d6-fdff-14fa-e543-acdf93007d65-7eea52fb" class="key-poin-signle-wrapper"><img width="15" height="15" alt="" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67cf0b9e4eb6537cb1cd1bef_favorite_border.svg" loading="lazy" class="key-points-icone"/><div class="key-point-single-headline-4">Donor fee coverage</div><div class="key-points-single-text-4">Donors can cover your fees and reduce your costs even further.  With Funraise,  about 90% of donors cover fees.</div></div></div><div class="w-layout-grid grid-46"><div id="w-node-_533229d6-fdff-14fa-e543-acdf93007d6c-7eea52fb" class="key-poin-signle-wrapper"><img width="18" height="18" alt="" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67cf0b9e0999ecff2f3dbe7b_account_balance.svg" loading="lazy" class="key-points-icone"/><div class="key-point-single-headline-4">Volume pricing</div><div class="key-points-single-text-4">Raising a lot online? Letâs build a custom plan to maximize your impact.</div></div><div id="w-node-_533229d6-fdff-14fa-e543-acdf93007d72-7eea52fb" class="key-poin-signle-wrapper"><img width="12" height="12" alt="" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67cf0b9e2204fa06344b7b28_sentiment_very_satisfied.svg" loading="lazy" class="key-points-icone"/><div class="key-point-single-headline-4">
2175Weâre nonprofit people</div><div class="key-points-single-text-4">Funraise's platform and pricing model were built by nonprofit people. Weâve been in your shoes and we know what it takes.</div></div><div id="w-node-_533229d6-fdff-14fa-e543-acdf93007d78-7eea52fb" class="key-poin-signle-wrapper"><img width="18" height="18" alt="" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67cf0b9e9ba394633380181b_school.svg" loading="lazy" class="key-points-icone"/><div class="key-point-single-headline-4">Onboarding & Training</div><div class="key-points-single-text-4">Get started fast with onboarding training from a friendly Funraise expertâat no cost.</div></div><div id="w-node-_533229d6-fdff-14fa-e543-acdf93007d7e-7eea52fb" class="key-poin-signle-wrapper"><img width="15" height="15" alt="" src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67cf0b9ef02ba32eeb7ef3d4_input.svg" loading="lazy" class="key-points-icone"/><div class="key-point-single-headline-4">Bring your data</div><div class="key-points-single-text-4">No need to start from scratch. Import your historic donation and donor data. Even bring your existing recurring subscriptions.</div></div></div></div></div></section><section id="faq" class="faq"><div class="content-container margin-bottom large mb-109"><div class="cta-light my-l"><div class="cta-bg-pattern hide"></div><div class="cta-left-content lighter"><h2 class="body-headline-3">Ready to learn more?</h2><div class="bold-text">Weâre here to answer your questions.</div><ul role="list" class="sbs-list mt-sm left-align-mobile"><li class="sbs-list-item">Meet with a Funraise expert</li><li class="sbs-list-item">Explore use cases based on your fundraising strategy</li><li class="sbs-list-item">Learn how Funraise can help you raise more</li></ul><div class="cta-wrap"><a href="/contact-sales" class="button button-large cta w-button">Schedule your Demo</a></div></div><div class="cta-right-content"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67a0d7094ff9a57b58c691bd_Group%2011931%20(2)%20(1).webp" loading="lazy" sizes="100vw" height="Auto" alt="" srcset="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67a0d7094ff9a57b58c691bd_Group%2011931%20(2)%20(1)-p-500.webp 500w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67a0d7094ff9a57b58c691bd_Group%2011931%20(2)%20(1)-p-800.webp 800w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67a0d7094ff9a57b58c691bd_Group%2011931%20(2)%20(1)-p-1080.webp 1080w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/67a0d7094ff9a57b58c691bd_Group%2011931%20(2)%20(1).webp 1175w" class="cta-image"/></div></div></div><div class="w-layout-blockcontainer container-narrow w-container"><div class="h2-short-wrapper"><h2 class="body-headline-5">Frequently Asked</h2></div><div class="accordion-wrapper"><div class="accordion-item"><div id="q1" class="accordion-item-trigger"><h4 class="accordion-heading">Is there a Donors Cover Fees option?</h4><div class="arrow-faq accordion-icon">keyboard_arrow_down</div></div><div class="accordion-item-content"><p class="paragraph-5">Yes! Donors can opt in to cover fees. When donors cover fees, the additional amount covers both Funraise's platform fee and a portion of processing fees. With Funraise, about 90% of donors cover fees!</p></div></div><div class="accordion-item"><div id="q1" class="accordion-item-trigger"><h4 class="accordion-heading">Can I migrate my data?</h4><div class="arrow-faq accordion-icon">keyboard_arrow_down</div></div><div class="accordion-item-content"><p class="paragraph-5">Yes. All organizations have access to Funraise's data import tool. You'll be able to import donors and donations into Funraise.</p></div></div><div class="accordion-item"><div id="q1" class="accordion-item-trigger"><h4 class="accordion-heading">Can I migrate my recurring subscriptions?</h4><div class="arrow-faq accordion-icon">keyboard_arrow_down</div></div><div class="accordion-item-content"><p class="paragraph-5">Yes. In most cases, we can migrate recurring donation subscriptions to Funraise. This is dependent on your current gateway; <a href="#" whenClicked="Intercom('show');" class="text-link normal">contact us</a> to see if we can migrate your subscriptions.</p></div></div><div class="accordion-item"><div id="q1" class="accordion-item-trigger"><h4 class="accordion-heading">How flexible are these plans?</h4><div class="arrow-faq accordion-icon">keyboard_arrow_down</div></div><div class="accordion-item-content"><p class="paragraph-5">Weâre on your side, which means weâre here to help your organization succeed. If a feature you need isnât included in your ideal plan, letâs talk.<br/>â<br/>Free plans are standard and cannot be customized.</p></div></div><div class="accordion-item"><div id="q1" class="accordion-item-trigger"><h4 class="accordion-heading">Is Funraise only for nonprofit organizations?</h4><div class="arrow-faq accordion-icon">keyboard_arrow_down</div></div><div class="accordion-item-content"><p class="paragraph-5">Yes. Your organization must be registered as a nonprofit or NGO. Organizations around the globe can use Funraise, but a national organization identification number is required. As with most things in life, there are exceptions; <a href="#" whenClicked="Intercom('show');" class="text-link normal">contact us</a> with questions.</p></div></div><div class="accordion-item"><div id="q1" class="accordion-item-trigger"><h4 class="accordion-heading">Is Funraise for all nonprofit organizations?</h4><div class="arrow-faq accordion-icon">keyboard_arrow_down</div></div><div class="accordion-item-content"><p class="paragraph-5">Yes; however, Funraise does not work with organizations that promote hate or discrimination of any kind. We use the <a href="https://www.splcenter.org/fighting-hate/extremist-files/groups" target="_blank" class="text-link normal">
2175Southern Poverty Law Centerâs extremist groups list</a> as a guide, then as a team, we make our own informed decisions. We have refused service to organizations that are not aligned with a safe, equitable, and free future for all, and we will continue to do so.</p></div></div><div class="accordion-item"><div id="q1" class="accordion-item-trigger"><h4 class="accordion-heading">Are there setup fees?</h4><div class="arrow-faq accordion-icon">keyboard_arrow_down</div></div><div class="accordion-item-content"><p class="paragraph-5">Nope. <a href="/pricing-plans" class="text-link normal">Here's our full pricing breakdown.</a></p></div></div></div><div class="div-block-115"><div class="centered"><h4 class="heading-79">Still have questions?<br/></h4><div class="text-block-90">Weâre here for you! Click the button to chat with the team.<strong><br/></strong></div><div><a id="intercom-show" whenClicked="Intercom('show');" href="#" class="button button-large w-button">Chat with Funraise</a></div></div></div></div></section><div class="content-section"><div class="content-container margin-top"><div class="centered-container"><h5 class="gray-label">Trusted by Industry Leaders<br/></h5></div><div class="customer-logo-grid home"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5dd852008263e2619353799e_customer-logo-action-against-hunger.webp" alt="Action Against Hunger Logo" class="customer-logo-grid-logo"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5e6bf404521250d2c5112aaf_logo-usa-basketball.webp" alt="USA Basketball Logo" class="customer-logo-grid-logo"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5e6bf40475d1ae25ea94a1a3_logo-innocence-project.webp" alt="Innocence Project Logo" class="customer-logo-grid-logo"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5db9f2f2eb8c487387298ec4_customer-logo-national-wildlife-federation.webp" alt="National Wildlife Federation Logo" class="customer-logo-grid-logo"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/5e6bf40563acc86e2c311faf_logo-invisible-children.webp" alt="Invisible Children Logo" class="customer-logo-grid-logo"/><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60a2ea43e0c34c322f320d51_food-for-soul-logo.webp" alt="Boys & Girls Club Logo" class="customer-logo-grid-logo"/></div></div></div><div class="content-section left-content-section cta-hero"><div class="content-container left-content-block cta"><div class="content-left-row w-row"><div class="content-left-column cta w-col w-col-4 w-col-stack"><div class="left-content home cta"><h5 class="gray-label">GET STARTED<br/></h5><h2 class="heading-45">Not quite sure what your nonprofit needs?</h2><a href="/contact-sales" class="button button-large cta w-button">Contact Us</a></div></div><div class="image-right-column w-col w-col-8 w-col-stack"></div></div></div><div class="cta-hero-box"><img src="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60807cba3c84ea04d6befa82_home-cta-platform.webp" sizes="(max-width: 1620px) 100vw, 1620px" srcset="https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60807cba3c84ea04d6befa82_home-cta-platform-p-500.webp 500w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60807cba3c84ea04d6befa82_home-cta-platform-p-800.webp 800w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60807cba3c84ea04d6befa82_home-cta-platform-p-1080.webp 1080w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60807cba3c84ea04d6befa82_home-cta-platform-p-1600.webp 1600w, https://cdn.prod.website-files.com/5d6eb414117b673d211598f2/60807cba3c84ea04d6befa82_home-cta-platform.webp 1620w" alt="Funraise nonprofit software displays recent transactions and donation amounts." class="cta-hero"/></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/5d6eb414117b673d211598f2/5de8387585533806317a279b_en_badge_web_generic-nomargin-
2175p-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></div>
2175<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>
2175<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>
2175<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>
2175<!-- GTM noscript -->
vendor: 71 bytes, lines 2175-2177
2175 2176<noscript> 2177 <iframe src="https://www.googletagmanager.com/ns.html?id=
2177GTM-P7XD5SD
vendor: 96 bytes, lines 2177-2181
2177" 2178 height="0" width="0" style="display:none;visibility:hidden"></iframe> 2179</noscript> 2180 2181
2182<!-- ========================================================= 2183 BUTTONS OUTSIDE THE NAV: always nav-btn-default, never nav-free-btn 2184 ========================================================= -->
2185<script defer> 2186 document.addEventListener('DOMContentLoaded', () => { 2187 document.querySelectorAll('.nav-btn-default').forEach(btn => btn.style.display = 'flex'); 2188 document.querySelectorAll('.nav-free-btn').forEach(btn => btn.style.display = 'none'); 2189 }); 2190</script>
2190 2191 2192 2193<!-- NAV BUTTONS (geo): US â Sign up for Free, everyone else â Get a Demo. 2194 Both pairs: desktop (.nav-free-btn-en/.nav-btn-default-nav) 2195 and the mobile bar (.nav-free-btn/.nav-btn-default). 2196 Mida A/B tests still override this via CSS with !important. -->
2197<script defer> 2198 async function isUserFromUS() { 2199 const cached = sessionStorage.getItem('isUSUser'); 2200 if (cached !== null) return cached === 'true'; 2201 try { 2202 const response = await fetch('https://ipapi.co/json/'); 2203 const data = await response.json(); 2204 const isUS = data.country_code === 'US'; 2205 sessionStorage.setItem('isUSUser', String(isUS)); 2206 return isUS; 2207 } catch (e) { 2208 console.error('Geolocation check failed:', e); 2209 return false; // no response = safe default: Get a Demo 2210 } 2211 } 2212 2213 document.addEventListener('DOMContentLoaded', async () => { 2214 const free = document.querySelectorAll('.nav-free-btn-en, .nav-free-btn'); 2215 const demo = document.querySelectorAll('.nav-btn-default-nav, .nav-btn-default'); 2216 if (!free.length && !demo.length) return; 2217 const isUS = await isUserFromUS(); 2218 (isUS ? free : demo).forEach(btn => (btn.style.display = 'flex')); 2219 (isUS ? demo : free).forEach(btn => (btn.style.display = 'none')); 2220 }); 2221</script>
2221 2222 2223 2224<!-- NAVBAR + banner margin fix on scroll (throttled via requestAnimationFrame) -->
2225<script defer> 2226 document.addEventListener("DOMContentLoaded", () => { 2227 const bar = document.querySelector(".promo-bar"); 2228 const header = document.querySelector(".header-section"); 2229 if (!bar || !header) return; 2230 2231 function applyState(atTop) { 2232 if (atTop) { 2233 bar.style.display = "block"; 2234 header.style.marginTop = "45px"; 2235 } else { 2236 bar.style.display = "none"; 2237 header.style.marginTop = "0px"; 2238 } 2239 } 2240 2241 let ticking = false; 2242 window.addEventListener("scroll", () => { 2243 if (ticking) return; 2244 ticking = true; 2245 requestAnimationFrame(() => { 2246 applyState(window.pageYOffset === 0); 2247 ticking = false; 2248 }); 2249 }, { passive: true }); 2250 2251 window.addEventListener("resize", () => applyState(window.pageYOffset === 0)); 2252 applyState(true); 2253 }); 2254</script>
2254 2255 2256 2257<!-- Webflow: remove hidden conditional elements -->
2258<script defer> 2259 document.addEventListener("DOMContentLoaded", () => { 2260 document.querySelectorAll('.w-condition-invisible').forEach(el => el.remove()); 2261 }); 2262</script>
2262 2263 2264<!-- ALT fallback: derive alt text from file names for images missing alt -->
2265<script defer> 2266 document.addEventListener("DOMContentLoaded", () => { 2267 document.querySelectorAll("img").forEach(img => { 2268 if (!img.alt) { 2269 const src = img.src; 2270 const fileName = src.substring(src.lastIndexOf("/") + 1, src.lastIndexOf(".")); 2271 const underscore = fileName.lastIndexOf("_"); 2272 if (underscore !== -1) { 2273 img.alt = fileName.substring(underscore + 1); 2274 } 2275 } 2276 }); 2277 }); 2278</script>
2278 2279 2280<!-- INTERCOM: open the chat on click -->
2281<script defer> 2282 document.addEventListener("DOMContentLoaded", () => { 2283 document.querySelectorAll("#chat-now-nav").forEach(button => { 2284 button.addEventListener("click", () => { 2285 if (typeof Intercom === "function") { 2286 Intercom("show"); 2287 } 2288 }); 2289 }); 2290 }); 2291</script>
2291 2292 2293<!-- HUBSPOT: delayed loader (2026-07-31) â loads on first user interaction 2294 or after 4 s, whichever comes first. Replaces the old direct 2295 hs-script-loader line; visit tracking still fires, just later. -->
2296<script> 2297 (function () { 2298 var loaded = false; 2299 function loadHubSpot() { 2300 if (loaded) return; 2301 loaded = true; 2302 var s = document.createElement('script'); 2303 s.id = 'hs-script-loader'; 2304 s.async = true; 2305 s.defer = true; 2306 s.src = '//js.hs-scripts.com/6549460.js'; 2307 document.body.appendChild(s); 2308 ['pointerdown', 'keydown', 'touchstart', 'scroll'].forEach(function (e) { 2309 window.removeEventListener(e, loadHubSpot, { passive: true }); 2310 }); 2311 } 2312 ['pointerdown', 'keydown', 'touchstart', 'scroll'].forEach(function (e) { 2313 window.addEventListener(e, loadHubSpot, { passive: true, once: true }); 2314 }); 2315 setTimeout(loadHubSpot, 4000); 2316 })(); 2317</script>
2317 2318 2319<!-- FIRST INTERACTION event (2026-07-31) â GTM Custom Event trigger for 2320 delaying Intercom/Clarity/FB Pixel (see gtm-render-path-spec.md). 2321 Fires on first interaction or after 5 s, whichever comes first. -->
2322<script> 2323 (function () { 2324 var fired = false; 2325 function fire() { 2326 if (fired) return; fired = true; 2327 window.dataLayer = window.dataLayer || []; 2328 window.dataLayer.push({ event: 'first_interaction' }); 2329 } 2330 ['pointerdown', 'keydown', 'touchstart', 'scroll'].forEach(function (e) { 2331 window.addEventListener(e, fire, { passive: true, once: true }); 2332 }); 2333 setTimeout(fire, 5000); 2334 })(); 2335</script>
2335 2336 2337<!-- MATERIAL ICONS: replace ligature names (e.g. keyboard_arrow_down) with Unicode codepoints --> 2338<!-- Reason: subsetted fonts have no ligature tables â swapping to codepoints lets glyphs render -->
2339<script> 2340(function() { 2341 'use strict'; 2342 // Material Icons codepoints as \u-escapes so they survive copy-paste 2343 // (Private Use Area characters often get lost in clipboards/editors) 2344 var map = { 2345 "keyboard_arrow_down": "\uE313", 2346 "chevron_right": "\uE5CC", 2347 "check": "\uE5CA", 2348 "check_circle": "\uE86C", 2349 "favorite": "\uE87D", 2350 "lock": "\uE897", 2351 "code": "\uE86F", 2352 "payment": "\uE8A1", 2353 "attach_money": "\uE227", 2354 "group": "\uE7EF", 2355 "share": "\uE80D", 2356 "content_copy": "\uE14D" 2357 }; 2358 // Classes using Materialicons / MATERIAL ICONE in CSS 2359 var sel = '.arrow-faq,.accordion-icon,.icon-10,.text-span-33,.text-span-36,' + 2360 '.link-arrow,.arrow,.icon,.cta-icon,.api-arrow,.pricing-icon,.search-icon,' + 2361 '.material-icon,.search-button,.compare-icon,.icon-compare-page,.service-icon,' + 2362 '.eoy22-google-icon,.payments-tooltip-link,.tooltip-icone-green,' + 2363 '.text-block-18,.text-block-21,.text-block-24,.text-block-26,.text-block-37,' + 2364 '.text-block-40,.text-block-42,.text-block-1318,.text-block-1385,.text-block-1386'; 2365 function fix(root) { 2366 (root || document).querySelectorAll(sel).forEach(function(el) { 2367 var t = el.textContent.trim(); 2368 if (map[t]) el.textContent = map[t]; 2369 }); 2370 } 2371 if (document.readyState === 'loading') { 2372 document.addEventListener('DOMContentLoaded', function(){ fix(); }); 2373 } else { 2374 fix(); 2375 } 2376 // Also after window.load for CMS rich text that loads later 2377 window.addEventListener('load', function(){ fix(); }); 2378})(); 2379</script>
2379 2380 2381<!-- YEAR REPLACEMENT: {current.year} â current year (one script instead of two, one MutationObserver instead of 13) -->
2382<script> 2383(function() { 2384 'use strict'; 2385 2386 const YEAR_PLACEHOLDERS = ['{current.year}', '{current_year}']; 2387 const year = new Date().getFullYear().toString(); 2388 2389 function containsPlaceholder(text) { 2390 if (!text) return false; 2391 return YEAR_PLACEHOLDERS.some(p => text.includes(p)); 2392 } 2393 2394 function replaceInText(text) { 2395 let r = text; 2396 for (const p of YEAR_PLACEHOLDERS) r = r.split(p).join(year); 2397 return r; 2398 } 2399 2400 function shouldSkipElement(element) { 2401 if (!element) return true; 2402 const tag = element.tagName?.toLowerCase(); 2403 if (tag === 'script' || tag === 'style' || tag === 'noscript') return true; 2404 if (element.closest && element.closest('[data-initialized],[data-reactroot]')) return true; 2405 return false; 2406 } 2407 2408 function replaceInSubtree(root) { 2409 if (!root) return; 2410 const walker = document.createTreeWalker( 2411 root, 2412 NodeFilter.SHOW_TEXT, 2413 { 2414 acceptNode(node) { 2415 if (shouldSkipElement(node.parentElement)) return NodeFilter.FILTER_REJECT; 2416 return containsPlaceholder(node.textContent) 2417 ? NodeFilter.FILTER_ACCEPT 2418 : NodeFilter.FILTER_REJECT; 2419 } 2420 } 2421 ); 2422 const nodes = []; 2423 let n; 2424 while ((n = walker.nextNode())) nodes.push(n); 2425 nodes.forEach(node => { node.textContent = replaceInText(node.textContent); }); 2426 } 2427 2428 function debounce(fn, wait) { 2429 let t; 2430 return (...args) => { 2431 clearTimeout(t); 2432 t = setTimeout(() => fn(...args), wait); 2433 }; 2434 } 2435 2436 let observerStarted = false; 2437 function start() { 2438 replaceInSubtree(document.body); 2439 if (observerStarted) return; 2440 observerStarted = true; 2441 2442 const observer = new MutationObserver(debounce((mutations) => { 2443 for (const m of mutations) { 2444 if (m.type === 'childList') { 2445 m.addedNodes.forEach(node => { 2446 if (node.nodeType === Node.ELEMENT_NODE && !shouldSkipElement(node)) { 2447 replaceInSubtree(node); 2448 } else if (node.nodeType === Node.TEXT_NODE && !shouldSkipElement(node.parentElement)) { 2449 if (containsPlaceholder(node.textContent)) { 2450 node.textContent = replaceInText(node.textContent); 2451 } 2452 } 2453 }); 2454 } else if (m.type === 'characterData') { 2455 if (m.target.nodeType === Node.TEXT_NODE && !shouldSkipElement(m.target.parentElement)) { 2456 if (containsPlaceholder(m.target.textContent)) { 2457 m.target.textContent = replaceInText(m.target.textContent); 2458 } 2459 } 2460 } 2461 } 2462 }, 100)); 2463 2464 observer.observe(document.body, { 2465 childList: true, 2466 subtree: true, 2467 characterData: true 2468 }); 2469 } 2470 2471 if (document.readyState === 'loading') { 2472 document.addEventListener('DOMContentLoaded', start); 2473 } else { 2474 start(); 2475 } 2476 // Single late retry for CMS Rich Text on blog posts that load via window.load 2477 window.addEventListener('load', () => replaceInSubtree(document.body)); 2478})(); 2479</script>
2479 2480</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.