

One-click floating Donate button: appears on every page automatically once enabled.
Add a donate button or an embedded donation form to your nonprofit’s WordPress site with no code. Donors give once or start a monthly gift, and donations go straight into your own Stripe account, with automatic tax receipts. Your connected account also includes donor records, fundraising accounting, and year-end tax statements at no extra cost. There is a flat 1% platform fee on top of Stripe’s standard payment processing, no monthly fee, and your donors are never asked for a tip.
DonatoTomato is operated by Dev1 Consulting LLC, a US company. Donations are processed through Stripe Connect and land directly in your nonprofit’s own Stripe account, so your organization is the merchant of record and we never hold your funds.
This plugin is open source (GPL-2.0-or-later) with full, unminified source published on GitHub. Nothing is hidden, and no third-party tracking libraries are bundled in.
Before you start: the plugin connects to a free DonatoTomato account where your campaigns and payments live. If you don’t have one yet, you can create it (about 2 minutes) right from the plugin’s setup screen, then paste your Organization ID into the plugin and you’re done. Want to see the donation form working first? There is a live demo on the DonatoTomato homepage, no sign-up required.
DonatoTomato is a donation platform built for US nonprofits. Accept one-time and recurring donations through an embeddable donation form, with automatic tax receipts, donor management, and a flat 1% platform fee on top of Stripe’s standard processing (no monthly cost).
Three ways to add donations to your site:
Features:
Built into your connected DonatoTomato account:
Beyond the on-site form, the free DonatoTomato account this plugin connects to includes the back office for running donations:
How it works:
DonatoTomato is a hosted donation platform, and this plugin is its WordPress front end. You will need (1) a free DonatoTomato account, about 2 minutes to create from the plugin’s setup screen, and (2) a Stripe account connected inside DonatoTomato, so donations are charged through your own Stripe and land directly in your bank. There is nothing to host, patch, or back up on your side.
This plugin connects to external services operated by DonatoTomato (Dev1 Consulting LLC) and Stripe. By using this plugin you agree to their respective terms and privacy policies.
DonatoTomato Platform (app.donatotomato.com)
When a visitor loads a page containing a DonatoTomato widget, their browser loads an iframe from app.donatotomato.com. When a page contains a DonatoTomato Donate button (including the site-wide floating Donate button), the browser additionally loads a small focal-modal script (embed.js, ~2KB gzip) from app.donatotomato.com that opens the donation iframe in a pop-up overlay when the button is clicked. The plugin admin also fetches a list of your campaigns from app.donatotomato.com to populate the campaign picker dropdown. Donation form submissions, including donor name, email, and payment details, are transmitted to and processed by DonatoTomato and Stripe. No payment or donor data is stored on your WordPress site.
Stripe
Payment processing is handled by Stripe via the DonatoTomato platform. Stripe’s privacy policy applies to all donation transactions.
The full, unminified source code for this plugin, including the Gutenberg block source that is compiled into build/index.js, is publicly available on GitHub:
github.com/iCodeWebApps/donatotomato-wp
The repository contains the complete, human-readable source. The compiled production output committed in build/ is generated entirely from src/index.js via the official @wordpress/scripts build tool.
Build instructions:
git clone https://github.com/iCodeWebApps/donatotomato-wp.gitnpm install (requires Node.js 18+)npm run build (outputs to build/)npm run startThere are no third-party developer libraries vendored into this plugin. The only build dependency is @wordpress/scripts, which is the official WordPress build tooling.
There are three widget styles: a floating Donate button (admin-configured, site-wide, recommended), an inline embed (donation form sits directly on a page), and a Donate button block (button anywhere on your site opens the donation form in a pop-up overlay).
Configure under Settings DonatoTomato Floating Donate Button. No shortcodes, no blocks. Pick a campaign from the dropdown, tweak label/color/size/shape/position, save. The button appears on every front-end page automatically.
Shortcode:
[donatotomato campaign="your-campaign-id"]
With optional overrides:
[donatotomato slug="your-org" campaign="your-campaign-id" width="480" height="600"]
Gutenberg Block: Search for “DonatoTomato Widget” in the block inserter (under Embeds). Enter your Campaign ID in the block settings panel.
Shortcode:
[donatotomato_button campaign="your-campaign-id"]
With optional overrides:
[donatotomato_button campaign="your-campaign-id" label="Give now" class="my-custom-class"]
Gutenberg Block: Search for “DonatoTomato Donate Button” in the block inserter (under Embeds). Enter your Campaign ID and optional label.
If you raise money for several things at once, one missionary or program or project per fund, you do not need a separate embed for each. Add choose="yes" instead of a campaign ID and the donation form opens on a list of your active campaigns, so the donor picks where their gift goes:
[donatotomato choose="yes"]
[donatotomato_button choose="yes" label="Give to a worker"]
The Shortcode Builder has a checkbox for this, so you do not have to type it by hand. Campaigns appear in the list as soon as they are Active, and drop off when you pause or end them.
If your organization only has one active campaign, the donor goes straight to it and never sees a list.
When that list gets long, you can point one page at part of it. Give each campaign a group name in your DonatoTomato dashboard, then name the group in the shortcode:
[donatotomato choose="yes" group="Missionaries"]
[donatotomato_button choose="yes" group="Programs" label="Support a program"]
The donor sees only the campaigns in that group. Add a worker to the group later and every page offering that group picks them up on its own, with nothing to edit. Capitalisation and extra spaces do not have to match what you typed in the dashboard, and names containing spaces or an ampersand work as written. The Shortcode Builder has a box for the group, so this does not have to be typed by hand either.
A group is a way to shorten a long list rather than a way to hide a campaign: a visitor can still reach every active campaign through an embed with no group. If a group has no active campaigns in it, the form says so plainly and offers a link to your full list. Leave the group out and the donor sees every active campaign, exactly as before.
Adding to your nav menu: Most themes support adding a Custom Link or Custom HTML to the menu. Use the shortcode in a Custom HTML block, or paste the rendered HTML directly: <button type="button" class="donatotomato-button" data-dt-donate="your-campaign-id">Donate</button> (works only after the plugin is active so the supporting script is loaded).