How to Create a Donation Form in WordPress (2 Ways, Step by Step)

The fastest route takes about five minutes.
- Build your donation form on a donation platform, then find the Share functionality in the form builder.
- Choose the iframe option, not the script one. WordPress strips script tags, so an iframe is what reliably survives. Copy it.
- In WordPress, add a Custom HTML block to your page (or, in the Classic editor, switch from Visual to Text) and paste the iframe in.
- Update or publish, then test with a real card and refund yourself.
That’s it — no plugin, no payment addon, no processor configured inside WordPress. If you’d rather keep everything inside WordPress, Gravity Forms with Stripe (Method 2) will do it.
Which way should you use?
Method 1 — Embed a donation form (no plugin)
The fastest route, and the only one where donor data never touches your website. The platform owns the form; WordPress stays a website rather than becoming a payments system.
These are the steps for Donately, since that’s the flow I can walk you through precisely.
Get the embed code
- Build your form in the form builder, then find the Share button in the top-right corner.
- Click Share to open the sharing and embedding options. You’ll see a direct link — quick, but it sends people to an external page and typically converts worse — and options to embed the form in your own site.
- In the “Embed on your website” section, choose the iframe option. There’s a simple script option too, and it’s more flexible in general, but WordPress will sometimes strip script tags out of your page. The iframe is what survives that. Click Copy.
Paste it in — Gutenberg (block) editor
- Open the page or post where you want the form.
- Add a new block and search for HTML.
- Choose the Custom HTML block and place it where the form should appear.
- If you see the option, click Edit as HTML to open the input view.
- Paste your iframe code in.
- Click Update or Publish.
The form now renders inline, exactly where you put the block.
Paste it in — Classic editor
Older WordPress setups use the Classic editor, and the same iframe works:
- Click into the content area where the form should go.
- Switch from the Visual tab to the Text tab so you’re editing HTML directly.
- Paste the iframe code at the right spot.
- Update or publish.
Either way, supporters give without leaving your page.
Optional: the advanced script
If you’d rather manage the form’s behaviour in your own codebase, there’s an advanced script option that exposes the form’s configurable settings. It’s worth it only if you have a sensible place to put it and someone who’ll maintain it, but it lets you:
- Change pre-selected amounts or design variants in code
- Set currencies and other advanced options
- Adjust things without going back to the form builder to regenerate the embed each time
Then test with a real card and refund yourself. Do this on every method — it’s the step people skip and regret.
There’s a dedicated WordPress integration page with the current version of these steps.
Method 2 — Gravity Forms plugin with Stripe
If you want to keep everything inside WordPress and keep it simple, this is the combination to use. Gravity Forms is a mature, well-maintained form builder, and its Stripe Add-On handles the payment side without a donation-specific plugin. One cost to know before you start: the Stripe Add-On needs a Gravity Forms Pro licence, $159/year (checked 17 August 2026). That is the real price of the “keep it in WordPress” route, and it is worth comparing against what a donation platform charges before you commit.
- Install the Stripe Add-On. From the Gravity Forms Add-Ons page, install and activate it.
- Connect Stripe. Go to Gravity Forms Settings → Stripe and use Connect with Stripe to link your account.
- Set up the webhook — don’t skip this. Gravity Forms needs webhooks enabled to know a payment succeeded. Click View Instructions, follow them in Stripe, then reveal your signing secret and paste it into the Live Signing Secret field in WordPress. This is the step people miss, and the symptom is a payment that goes through in Stripe but never registers in WordPress.
- Choose your payment collection method — the Stripe Field, or one of the alternatives.
- Build the form. For a donation you rarely need more than name, email, a pricing field for the amount, and the Stripe field.
- Create a Stripe Feed. Go to Form Settings → Stripe → Add New. Name it, then set Transaction Type — Products and Services for one-off gifts, Subscription for recurring. Map the payment amount to your pricing field, and map the billing and customer fields to their form fields.
- Publish and embed it, then test with a real card and refund yourself.
Watch for the webhook in step 3 and the Stripe Feed in step 6 — a form with no feed collects data and takes no money.
Other options in this category
Other general form plugins do the same job — WPForms is the most heavily marketed, and connects Stripe under Settings → Payments. There are also dedicated WordPress donation plugins, Charitable among them, which add donation-specific features like goals and donor profiles.
This guide doesn’t rank them, for one reason: everything in the section below applies to all of them equally. They differ in features. They don’t differ in where your donor data ends up.
One name you’ll see recommended, and why it isn’t here
GiveWP was for years the default answer to this question, and you’ll still find it at the top of most older guides. It’s worth knowing its ownership history before adopting it new.
Liquid Web acquired GiveWP and its maker Impress.org on 11 May 2021 and folded it into a new umbrella brand, StellarWP. StellarWP was reported retired in 2026, its products absorbed directly into Liquid Web, with GiveWP rebranded to Give. Liquid Web has kept it as one of its core offerings, so this isn’t a shutdown and existing sites keep working — nothing here says rip it out if you already run it.
But that’s two brand changes in five years, and you’re choosing something to run your donations on for the next five. Roadmap continuity is a fair thing to weigh, and it’s the reason this guide doesn’t put it forward as the starting point.
What people get wrong about donation plugins
Worth naming up front: nearly every guide on this topic is published by a form plugin company. That’s not a conspiracy, but it does explain what the guides leave out.
Four things go wrong, and none of them are about features.
They don’t ask where the data goes. The form is the visible part, so it gets all the attention. What matters is where the gift, the donor and the history end up — and whether you can get them out again. Decide that before you choose the form.
They don’t think about security. This is the one to take most seriously. WordPress is a constant target for attacks, and it is the wrong place for donor data to live. A donation plugin keeps names, contact details and giving history in your WordPress database, which means your donors’ data is now only as safe as your site, your hosting, your other plugins and whoever last logged in. Keeping donor records off the website entirely removes that whole category of risk.
They don’t think ahead. Pick tools that can grow with you. The setup that suits twenty gifts a year is not the setup that suits a monthly giving programme and a year-end appeal, and switching later means migrating donor history — which is genuinely painful. Choose for where you’re going, not only where you are.
They take “free” at face value. Plenty of tools claim to be free and turn out to have sharply limited functionality, paid add-ons for the things you actually need, or hidden tips added to your donors’ gifts. Free is a claim about a price page, not about a total. Do your homework.
The three things a form plugin doesn’t do
1. It doesn’t issue tax receipts
This is the big one, and it’s remarkable how invisible it is. Neither of the two most prominent guides on this topic mentions tax receipting at all — not once, across roughly 7,300 words between them.
Donors need receipts. Depending on where you are and the size of the gift, your organisation may be obliged to provide them, in a specific format, within a specific window. A form plugin sends a confirmation email. A confirmation email is not a receipt.
2. It doesn’t keep a donor record
A form plugin stores form entries. An entry is a row: name, email, amount, date.
A donor record is a person — every gift they’ve made, whether they’re recurring, whether they came from an appeal, whether they’ve lapsed. Six months later, the difference is whether you can ask “who gave last year but not this year” and get an answer, or whether someone exports a CSV and starts matching by hand. Where that data lands is a question about your integrations, not about your form.
3. It doesn’t really manage recurring giving
Both guides mention recurring donations. Neither explains what happens when a card expires, when a payment fails, when a donor wants to change their amount, or when they want to cancel without emailing you. Recurring giving isn’t a checkbox at setup — it’s an ongoing operation, and that operation is where monthly revenue is actually won or lost.
A dedicated donation plugin handles more of this than a general form builder does — that’s the genuine case for one. It’s still a plugin running inside your website, with your donors’ data inside it.
When a form plugin is genuinely the right call
Method 2 is the honest answer for a lot of organisations, and it’s worth saying so plainly rather than burying it. Gravity Forms with Stripe will take a card today, and for a single campaign it’s entirely adequate. Like every tool it has limits — the ones in the section above — but “adequate and running this week” beats “perfect and not built.”
It’s the right call when:
- You’re running one campaign, not a donation programme. A memorial fund, a single appeal, a one-off community drive.
- You already own a licence for other forms on the site, so the marginal cost is zero.
- Volume is low enough that manual receipting is fine. Twenty gifts a year is twenty emails; that’s an afternoon, not a system.
- You have a CRM already and someone whose job is keeping it current.
If two or more of those describe you, install the plugin and move on.
One thing worth getting right whichever method you pick: keep the donor on your site. A form that redirects to a page branded like someone else’s organization loses people at exactly the wrong moment — covered in more detail here.
Frequently asked questions
How do I create a donation form in WordPress?
Two ways. Embed a form from a donation platform by copying its iframe code into a Custom HTML block — fastest, and no plugin needed. Or use Gravity Forms with the Stripe Add-On: connect Stripe under Settings → Stripe, enable the webhook, build the form with a pricing field and the Stripe field, then create a Stripe Feed under Form Settings → Stripe.
Can you accept donations on WordPress without a plugin?
Yes. Embedding a donation platform’s form needs no plugin, no payment addon and no processor set up inside WordPress — you paste an iframe into a Custom HTML block, or into the Text tab of the Classic editor.
Why doesn’t my donation form embed code work in WordPress?
Usually because WordPress strips script tags out of page content. If you pasted a script-based embed and nothing renders, switch to the iframe version of the same embed and paste that into a Custom HTML block instead.
Is it safe to keep donor data in WordPress?
It’s the wrong place for it. WordPress is a constant target for attacks, so donor records held in your WordPress database are only as secure as your site, your hosting and every plugin on it. Keeping donor data on a dedicated platform removes that risk rather than managing it.
Is there a free way to add a donation form to WordPress?
Partly. Several donation plugins offer a free core with paid add-ons for the things most organisations actually need — recurring giving and integrations especially — so price the add-ons before treating any of them as free. Embedding a donation platform carries no WordPress licence cost at all, though the platform has its own pricing. Either way, “free” is a claim about a price page rather than a total.
Do WordPress donation plugins send tax receipts?
Generally no. They send a confirmation email, which isn’t the same thing. If your donors need receipts, check this before you choose — it’s the most commonly missed requirement.
Can I add recurring donations to a WordPress form?
Yes. In Gravity Forms, set the Stripe Feed’s Transaction Type to Subscription rather than Products and Services. On most donation plugins recurring is a paid add-on, so check the tier before committing. On the embed route, recurring management sits with the platform — including failed payments, card expiry and donor self-service.
What’s the difference between a donation plugin and a donation platform?
A plugin collects a payment inside WordPress, and keeps the data there. A platform runs the donation — receipting, donor history, recurring giving, reporting — and embeds the form into your site while keeping donor records off it.
Let's Fundraise Together!
Sign up today and see why thousands of organizations trust Donately to manage their online fundraising.
.webp)




