Educational / Authority6 min read

The Nonprofit Website Donation Stack We Recommend (Agencies)

Stop reinventing the donation setup on every nonprofit project. Here is an opinionated, repeatable stack — builder, form layer, processor, receipts, analytics — so the giving part is boring and predictable every time.

KindLumen TeamJanuary 23, 2026Updated January 23, 2026

Quick answer

  • Standardize the donation stack so every nonprofit project is repeatable.
  • The form layer should be a client-owned, on-brand inline embed.
  • The processor is the client’s own Stripe, never a pooled platform balance.

The fastest way to lose money on nonprofit web work is to treat every project as a blank page. New builder, new donation tool, new way of wiring up Stripe, new everything. You pay for that novelty in research time, in setup mistakes, and in a support burden that is different for every client.

The fix is an opinionated stack. Decide once how you do nonprofit donation sites — which layers, which tools, who owns what — and run that same playbook every time. The build gets faster, the handoff gets cleaner, and your support load drops because every client’s setup looks the same.

Here is the reference stack I recommend, layer by layer, with the tradeoffs and a sample table you can adapt. The point is not that you copy my exact picks. It is that you pick a stack and stop improvising.

nonprofit team discussing donor strategy and retention planning for The Nonprofit Website Donation Stack We Recommend (Agencies)

The five layers of a donation stack

Strip a nonprofit giving setup down and there are five layers. Most broken setups are missing one or have glued two together badly.

  1. CMS / builder — where the site lives and how the client edits content.
  2. Donation form layer — the branded form the donor actually sees and uses.
  3. Processor — what moves the money. For nonprofits, this is the client's own Stripe.
  4. Email / receipts — the confirmation the donor expects and the record finance needs.
  5. Analytics — so you and the client can see what is working.

Standardize each layer and the whole thing becomes repeatable. Let each layer be a fresh decision per project and you are doing five times the work for no reason.

Layer 1: the builder

Pick one or two builders and get genuinely good at them. The usual agency choices for nonprofit work are Webflow (design control, real CMS, no plugin sprawl), WordPress (familiar to clients, huge ecosystem, but plugin maintenance), and Squarespace (fast for small orgs, less flexible).

The trap is being a generalist who builds on whatever the last client used. You want to be the agency that does nonprofit Webflow sites, or nonprofit WordPress sites, exceptionally well — not one that re-learns a builder every quarter. Whatever you standardize on, make sure it can host an inline embed cleanly, because that is the next layer.

Layer 2: the donation form (the layer everyone gets wrong)

This is the layer that makes or breaks the project, and the one most agencies treat as an afterthought. The form layer should be an inline embed, branded to the client, that the client manages from a dashboard. Not a redirect to a hosted page, not a plugin the client must maintain.

The reasons are the same ones that come up across all agency donation work: an inline embed keeps the donor on the design you built, a branded form looks like part of the site, and a dashboard-managed tool means the client edits amounts and copy without calling you. This is also where you make sure recurring giving and branded receipts are built in rather than bolted on. The deeper selection logic is in the best donation form to hand off to a nonprofit client.

Standardizing this one layer is what makes the rest repeatable. Once you have a go-to form layer, every nonprofit project drops it in the same way.

Layer 3: the processor (always the client’s Stripe)

The processor is non-negotiable: the client's own Stripe account, under their legal entity, with their bank and tax details. PayPal or Square as a secondary is fine, but Stripe is the spine.

Never route donations through your agency account or a platform that pools funds and pays the client out later. Pooled funds make the client dependent on a vendor's payout schedule and make you adjacent to a money-handling relationship you do not want. Client-owned Stripe means direct payouts on Stripe's normal schedule, the nonprofit rate of 2.2% + 30¢ if they qualify, and a clean break if you ever offboard. Wire the form layer to their Stripe and this layer just works.

Layers 4 and 5: receipts and analytics

Email and receipts. Donors expect an instant, branded confirmation, and the client's bookkeeper expects to find the gift later. The good news: a decent form layer includes branded receipts and donor records, so this layer is often handled by the same tool rather than a separate integration. If your form layer does not do receipts, you are buying a second tool to patch the gap — a reason to choose the form layer carefully.

Analytics. Keep it simple. Donors on the donate page, completion rate, one-time vs monthly split. You do not need a heavy analytics build for a small nonprofit — a privacy-friendly analytics tool plus whatever reporting the donation tool gives you is plenty. The point is that you and the client can answer "is the donate page working" without guessing. For the on-site improvements that move those numbers, see website improvements that increase donations.

A sample reference stack

Here is one concrete version of the stack you can adapt. The exact tools matter less than committing to a set and reusing it.

LayerSample pickWhy / tradeoff
BuilderWebflow (or WordPress)Design control and a real CMS; WordPress if the client demands familiarity
Donation formInline embed (e.g. KindLumen)On-brand, client-managed, recurring + receipts built in, low maintenance
ProcessorClient's own StripeDirect payouts, nonprofit rate, clean offboarding; PayPal optional secondary
ReceiptsHandled by the form layerOne fewer tool to integrate if the form layer does branded receipts
AnalyticsPrivacy-friendly analytics + tool reportingEnough to answer “is the donate page working” without a heavy build

The form layer in that table is where KindLumen fits — an inline, client-owned, branded embed on the client's Stripe that also covers receipts and records, so it collapses two layers into one. You can see that side on the features page. Once your stack is set, the launch part is just a checklist — see the donation page launch checklist for agencies.

Frequently asked questions

What is a nonprofit website donation stack?

The set of layers that together take a donation: the CMS/builder, the donation form layer, the payment processor (the client’s Stripe), email/receipts, and analytics. Standardizing each layer so you use the same setup on every project is what makes nonprofit web work repeatable and low-maintenance.

Which layer do agencies most often get wrong?

The donation form layer. It’s frequently treated as an afterthought and ends up as a redirect that breaks the design or a plugin the client must maintain. It should be a branded inline embed the client manages from a dashboard, on their own Stripe.

Should every nonprofit client use the same stack?

As much as possible, yes. Standardizing the builder, form layer, processor, receipts, and analytics speeds up builds, makes handoffs cleaner, and cuts your support load because every client’s setup looks the same. Vary only when a client has a genuine constraint.

Do I need a separate tool for donation receipts?

Not if your form layer includes branded receipts and donor records, which good ones do. That collapses the receipts layer into the form layer and removes an integration. If your form tool doesn’t handle receipts, you’ll be patching the gap with a second tool.

Product links

Use the research, then choose the right donation setup.

Compare your options, then move into a donation setup your team can launch and maintain with confidence.

Related reading