What actually transfers when you switch donation plugins
This is the question worth answering honestly before anything else, because the wrong assumption here is expensive. Here is the real split:
| What you have | Moves automatically? | How |
|---|---|---|
| Donor records (name, email, phone) | Yes | CSV import |
| Past donation history and amounts | Yes | CSV import |
| Gift dates, campaigns, designations | Yes | CSV import |
| Transaction IDs (for reconciliation) | Yes | CSV import |
| Lifetime giving totals | Yes | Recalculated from imported gifts |
| Active recurring donations | No | Not technically possible, see below |
| Stored card details | No | Held by Stripe or PayPal, never by any plugin |
| Form styling and page layout | No | Rebuilt in the new plugin |
Anyone who tells you recurring gifts transfer cleanly between donation plugins is overselling. Read the next section before you plan a migration date.
Why active recurring donations cannot be migrated
When a donor sets up a monthly gift, the subscription object is created in your Stripe or PayPal account by the plugin that ran the form. The plugin stores a reference to it. The charge schedule, the saved payment method, and the customer record all live at the processor.
A different plugin can read that history, but it has no authority over a subscription it did not create, and the donor's saved card is deliberately not exportable. That is a security feature, not a limitation someone forgot to build.
So you have three honest options:
- Run both plugins during a transition. Keep the old plugin installed and connected purely so existing subscriptions keep charging and recording, while every new gift goes through the new form. This is the lowest-risk path and the one most organizations should take.
- Ask recurring donors to re-subscribe. Honest, simple, and it costs you some of them. Expect attrition. If you do this, write a warm, specific email explaining why, and make the new form take fifteen seconds to complete.
- Let them run out naturally. Stop new subscriptions on the old plugin, leave existing ones alone, and let the base migrate over time as donors lapse and re-give.
Why organizations are leaving GiveWP right now
Two things, and it is fair to name both plainly.
The free version takes a cut. Per GiveWP's own fee documentation, the free version applies a 2% platform fee to Stripe donations after an initial grace period, removed by holding a license or the premium Stripe add-on. That is on top of Stripe's own processing fee. A developer on WordPress.org described finding out the hard way, when a client asked why they were taking 2% of their donations.
The product changed hands. Following the StellarWP wind-down in 2026, GiveWP's blog and resource URLs now redirect to Liquid Web's site. The plugin continues, but the content operation and the brand's independent presence did not survive the transition, which understandably makes people ask what else changes.
Competitor pricing and fee details verified August 2026. Vendors change terms, so confirm current figures on their own site before deciding. Our full breakdown is in the donation plugin cost comparison and the platform fee guide.
How to export your donation history from your current plugin
Every serious donation tool can produce a CSV. The exact menu differs:
- GiveWP: Donations, then Tools, then the Exports tab, then Export Donation History. Include at minimum email, first name, last name, amount, date, status, and the transaction or payment ID.
- Charitable: Donations, then Export, choosing a date range that covers everything.
- Donorbox: Donations, then the export action, which produces a CSV of the donation table.
- A spreadsheet or an old system: any CSV works, as long as it has one row per gift and columns for email, amount, and date.
Export everything, not just the last year. Storage is free and re-importing later is more work than doing it once.
How to import donation history into Donor Merchant
In WordPress, go to Donor Merchant, then Import, and upload the CSV.
- Upload. The file is read and the column headers are examined.
- Check the mapping. Columns are matched automatically by name, so "Donation Amount", "amount", and "Gross" all land on the same field. Anything the matcher gets wrong is corrected from a dropdown, with sample values from your own file shown next to each one so you can see what you are mapping. Email, amount, and date are required. Everything else is optional.
- Preview without saving. This runs the entire import in memory and reports exactly how many donations would be added, across how many donors, how many are duplicates, and how many rows are incomplete. Nothing is written.
- Import. Records are written directly as completed history.
Two design decisions worth knowing about. Imported donations never send email. Historical records are written silently, so nobody gets a receipt for a gift they made in 2021, and no outgoing webhook or Mailchimp sync fires. And the import is safe to run twice. Gifts already on file are detected by transaction ID, or by matching donor, amount, and date, so a re-run adds only what is genuinely new.
Campaign or form names in your file are matched to existing campaigns, and created if they do not exist yet, so a multi-campaign history stays organized instead of collapsing into one pile.
What to check after the import
- Total raised. Compare the dashboard figure against the total in your old system for the same date range. They should match within rounding.
- Donor count. A number noticeably lower than expected usually means one donor appears under several email addresses in the source data.
- Spot check three donors. Pick your largest, your longest-running, and one recent, and confirm their gift lists look right.
- Skipped rows. The summary reports rows skipped as incomplete. If that count is high, a required column was probably mapped to the wrong thing. Fix the mapping and re-run; duplicates are filtered automatically.
A migration sequence that does not break anything
- Export your full history to CSV and keep the file somewhere safe. This is your backup.
- Install Donor Merchant and connect Stripe or PayPal in test mode.
- Run a test donation end to end and read the receipt.
- Import the CSV, using preview first.
- Verify the totals above.
- Switch your donate page to the new form and go live.
- Leave the old plugin installed and connected until its recurring subscriptions are dealt with.
Note that Donor Merchant also has offline donation entry, so cash and check gifts can go into the same record as your online history and your year-end statements come out complete.