How to Build a Donation Site with WordPress and GiveWP: A Complete Technical Guide
GiveWP is a dedicated WordPress donation plugin that transforms any WordPress installation into a fully functional fundraising platform — complete with customizable donation forms, multi-gateway payment processing, donor management, and real-time reporting. Unlike generic contact or payment plugins, GiveWP is purpose-built for nonprofits, charities, and individual fundraisers, providing PCI-compliant payment flows and granular form controls out of the box.
This guide walks you through every stage of the process: from provisioning your hosting environment and installing WordPress, to configuring payment gateways, building donation forms, embedding them into pages, and managing donor data at scale. Each step includes configuration details that most tutorials omit.
Prerequisites: What You Need Before You Start
Before touching the WordPress dashboard, confirm the following server and software requirements are in place:
- PHP version: 7.4 minimum; PHP 8.1+ recommended for performance and security
- MySQL/MariaDB: 5.6+ or MariaDB 10.1+
- WordPress version: 5.8 or later (Gutenberg block editor support is required for native GiveWP blocks)
- SSL certificate: Mandatory — payment processors including Stripe and PayPal refuse connections over plain HTTP. Every live donation form must be served over HTTPS
- Memory limit: At least 256 MB (
WP_MEMORY_LIMITinwp-config.php) - Cron jobs: WordPress cron must be functional for scheduled email receipts and donation reports
If you are starting from scratch, a VPS Hosting plan gives you full root access to tune PHP settings, install required extensions (php-curl, php-mbstring, php-xml), and configure server-level caching — all of which directly affect donation form load times and payment gateway reliability.
Step 1: Provision Your Hosting Environment and Install WordPress
Choosing the Right Hosting Architecture
Donation sites handle sensitive financial data. Shared environments with resource contention can cause checkout timeouts and failed payment callbacks. For production fundraising campaigns, a VPS or dedicated instance is the technically sound choice.
If you prefer a managed control panel environment, a VPS with cPanel lets you deploy WordPress through Softaculous with one click while retaining the ability to configure PHP-FPM pools, set memory limits per domain, and manage SSL certificates from a single interface.
For organizations running multiple donation campaigns or requiring isolated environments per project, Dedicated Servers eliminate noisy-neighbor resource contention entirely.
Installing WordPress
Most control panels (cPanel, Plesk, DirectAdmin) include Softaculous or a similar auto-installer. For a manual installation via CLI:
cd /var/www/html
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
mv wordpress/* .
rm -rf wordpress latest.tar.gz
cp wp-config-sample.php wp-config.phpEdit wp-config.php to set your database credentials, then run the WordPress installer by visiting your domain in a browser.
Securing the Installation Before Going Live
Do not skip this. A donation site that gets compromised before launch destroys donor trust permanently.
- Force HTTPS by adding the following to
wp-config.php:
define('FORCE_SSL_ADMIN', true);- Install a free or paid SSL Certificate and verify the certificate chain is complete using
openssl s_client -connect yourdomain.com:443 - Set correct file permissions:
find /var/www/html -type d -exec chmod 755 {} ;
find /var/www/html -type f -exec chmod 644 {} ;- Disable XML-RPC if not needed, restrict
wp-login.phpby IP, and enable two-factor authentication on the admin account
Selecting a Theme
GiveWP is theme-agnostic but renders best on themes that support full-width page templates and do not inject conflicting CSS into form elements. Tested options include Astra, GeneratePress, OceanWP, and Kadence. Avoid pagebuilder-heavy themes that load excessive JavaScript, as this degrades form rendering performance and can interfere with Stripe's payment element.
Install your chosen theme under Appearance > Themes > Add New.
Step 2: Install and Activate the GiveWP Plugin
GiveWP's core plugin is free. Premium add-ons (Stripe Pro, Recurring Donations, Fee Recovery, Tributes) are sold separately or bundled in the GiveWP Plus or Agency plans.
Installation via WordPress Dashboard
- Navigate to Plugins > Add New
- Search for
GiveWP - Locate GiveWP – Donation Plugin and Fundraising Platform (by GiveWP)
- Click Install Now, then Activate
Installation via WP-CLI (Recommended for VPS Users)
wp plugin install give --activateVerify the installation:
wp plugin list | grep giveAfter activation, GiveWP creates its own database tables (wp_give_*) and registers a Donations top-level menu item in the WordPress admin sidebar.
Step 3: Configure Core GiveWP Settings
Navigate to Donations > Settings. The settings panel is organized into tabs. Work through each one systematically.
General Settings
| Setting | Recommended Value | Notes |
|---|---|---|
| Currency | Match your bank account currency | Mismatched currency triggers conversion fees |
| Currency Position | Before amount (e.g., $100) | Standard for English-language sites |
| Thousands Separator | Comma | Locale-specific — adjust for European markets |
| Decimal Separator | Period | Adjust for locales using comma decimals |
| Default Country | Your primary donor country | Pre-fills address fields on forms |
| Base State/Province | Your state/province | Reduces form friction for local campaigns |
| Success Page | Auto-created by GiveWP | Do not delete this page |
| Failure Page | Auto-created by GiveWP | Do not delete this page |
| History Page | Auto-created by GiveWP | Donors use this to view past contributions |
Critical: GiveWP auto-creates several required pages ([give_receipt], [give_login], [give_register], [give_history]) on activation. Deleting or unpublishing any of these breaks post-donation redirects.
Payment Gateway Configuration
Navigate to Donations > Settings > Payment Gateways.
Stripe Integration
Stripe is the recommended gateway for most campaigns due to its support for card payments, Apple Pay, Google Pay, and SEPA Direct Debit. GiveWP's free Stripe integration handles basic card processing; the premium Stripe Pro add-on unlocks the Stripe Payment Element (which dynamically displays payment methods based on the donor's location).
- Install the GiveWP Stripe add-on (free version available in the plugin directory)
- Navigate to Donations > Settings > Payment Gateways > Stripe
- Click Connect with Stripe — this uses OAuth, so you do not manually paste API keys in the free integration
- For manual API key entry (staging environments), toggle to Manual API Keys and enter your Publishable Key and Secret Key from the Stripe Dashboard under Developers > API Keys
- Enable Stripe Webhooks — GiveWP provides a webhook endpoint URL; register it in your Stripe Dashboard under Developers > Webhooks and select events:
payment_intent.succeeded,payment_intent.payment_failed,charge.refunded
PayPal Standard vs. PayPal Donations
GiveWP supports both PayPal Standard (legacy) and the newer PayPal Donations integration (recommended). PayPal Standard redirects donors off-site; PayPal Donations keeps them on your domain using PayPal's hosted fields.
- For PayPal Donations: navigate to Donations > Settings > Payment Gateways > PayPal Donations and click Connect with PayPal
- Ensure your PayPal account is a verified Business account; personal accounts cannot receive donations above certain thresholds
Offline Donations
Enable this gateway for check or bank transfer donations. It creates a pending donation record and sends the donor instructions. Useful for major donors who prefer wire transfers.
Email Settings
Navigate to Donations > Settings > Emails.
Configure the following email notifications:
- Donation Receipt (Donor): Sent to the donor after a successful payment. Include the
{donation_total},{donor_name},{form_title}, and{receipt_link}template tags - New Donation Notification (Admin): Sent to your admin email on each donation
- Donation Failed (Donor): Notifies the donor when a payment fails — critical for recovering abandoned donations
Set the From Email to a domain-authenticated address (e.g., donations@yourdomain.com). Sending from a free Gmail or Yahoo address causes deliverability issues. If you need a professional sending address, Email Hosting with proper SPF, DKIM, and DMARC records ensures donation receipts reach inboxes rather than spam folders.
Step 4: Build Your First Donation Form
Navigate to Donations > Add Form.
Form Architecture: Key Decisions
Donation Amount Structure
GiveWP offers three amount modes:
- Set Donation: A fixed amount — used for specific item-based fundraising (e.g., "$50 feeds a family for a month")
- Multi-level Donation: Predefined tiers with optional custom amount field. This is the most conversion-optimized layout — research consistently shows that anchoring with suggested amounts increases average donation size
- Custom Donation: Fully open text field — maximum flexibility, but no anchoring effect
For most campaigns, Multi-level with a custom amount fallback is the correct choice. Set your tiers at psychologically optimized intervals (e.g., $10, $25, $50, $100, $250) and enable the custom amount option.
Donation Goal
Enable the goal under Form Goal settings. Choose between:
- Amount: Tracks dollars raised toward a target
- Donation Count: Tracks number of individual donations
- Donor Count: Tracks unique donors
The progress bar rendered by the goal setting creates social proof and urgency — both are proven conversion drivers.
Recurring Donations
If you have the Recurring Donations add-on, enable it on the form to offer weekly, monthly, or annual giving options. Recurring donors have a significantly higher lifetime value than one-time donors. Configure the default billing period and whether recurring is opt-in or the default selection.
Form Fields Configuration
Under Donation Form > Fields, you can add, remove, and reorder fields. Standard fields include:
- First Name, Last Name (required by default)
- Email Address (required — used for receipts)
- Address fields (optional — required if you need to issue tax receipts with donor addresses)
- Comment field (optional — allows donors to leave a message)
- Anonymous donation toggle (allows donors to give without public recognition)
Do not add unnecessary fields. Every additional field reduces conversion rate. Collect only what you legally need for tax receipts and donor records.
Form Design Options
GiveWP provides three built-in form display formats:
- Full Form: All fields visible on page load
- Modal/Reveal: A "Donate Now" button triggers a modal overlay — reduces page clutter
- Button (Redirect): Redirects to a standalone donation page — useful for embedding a minimal CTA in blog posts
Publishing the Form
Click Publish. GiveWP generates a shortcode ([give_form id="XXX"]) and a Gutenberg block for embedding. Note the form ID — you will need it for manual shortcode embeds.
Step 5: Embed the Donation Form in a Page
Using the Gutenberg Block Editor
- Navigate to Pages > Add New
- Title the page (e.g., "Donate" or "Support Our Mission")
- Click the + block inserter and search for
Give Form - Select the Give Form block
- In the block sidebar, select your form from the Select a Donation Form dropdown
- Choose display style: Full Form, Button, or Modal
- Click Publish
Using Shortcode (Classic Editor or Custom Templates)
[give_form id="YOUR_FORM_ID" show_title="true" show_goal="true" show_content="above" display_style="modal"]Available shortcode parameters:
| Parameter | Values | Description |
|---|---|---|
id | Form post ID | Required |
show_title | true / false | Display form title |
show_goal | true / false | Display progress bar |
display_style | full / button / modal / reveal | Form display mode |
show_content | above / below / none | Form description placement |
Setting the Page as Your Primary Donation Page
After publishing, navigate to Donations > Settings > General and confirm the Success Page, Failure Page, and Donation History Page are correctly assigned. These are separate from your main donation page — they handle post-payment redirects.
Add the donation page to your site's primary navigation under Appearance > Menus so donors can find it without searching.
Step 6: Extend Functionality with Widgets and Sidebar Elements
GiveWP registers several widgets that reinforce social proof and drive additional conversions.
Navigate to Appearance > Widgets (or use the block-based widget editor in WordPress 5.8+).
Available GiveWP Widgets:
- Donation Form Widget: Embeds a compact version of a specific form in any widgetized area
- Donation Goal Widget: Displays a progress bar for a specific form's goal
- Donor Wall Widget: Shows recent donors (with optional anonymization) — powerful social proof element
- Recent Donations Widget: Displays a live feed of recent contributions with amounts
Implementation Note: The Donor Wall and Recent Donations widgets should only be enabled if you have explicit donor consent to display their names publicly. Include an "Anonymous Donation" checkbox on your form and honor it in widget display settings.
Custom CSS for Form Styling
GiveWP's default form styles are functional but generic. To match your brand, add custom CSS under Appearance > Customize > Additional CSS. Target GiveWP's CSS classes:
/* Primary donate button */
.give-submit {
background-color: #your-brand-color;
border-radius: 4px;
font-weight: 700;
}
/* Donation amount level buttons */
.give-donation-level-btn {
border: 2px solid #your-brand-color;
}
.give-donation-level-btn.give-btn-selected {
background-color: #your-brand-color;
color: #ffffff;
}Avoid overriding GiveWP's JavaScript-dependent classes (those prefixed with give-) in ways that hide or reposition form elements, as this can break the payment flow.
Step 7: Monitor Donations and Manage Donor Records
Donation Reports
Navigate to Donations > Reports. The reports dashboard provides:
- Earnings Over Time: Line chart of donation volume by day, week, month, or year
- Payment Methods: Breakdown of donations by gateway
- Forms: Per-form performance — identify which campaigns are converting
- Donors: New vs. returning donor trends
Export any report as CSV for import into accounting software or CRM systems.
Donor Management
Navigate to Donations > Donors. Each donor record includes:
- Total lifetime donation value
- All associated donation transactions
- Contact information
- Linked WordPress user account (if the donor registered)
You can manually add notes to donor records, which is useful for major gift tracking and relationship management.
Exporting Data
GiveWP's built-in export tool (under Donations > Tools > Export) supports CSV exports for:
- All donations within a date range
- Donors list
- Specific form submissions
For GDPR compliance, GiveWP integrates with WordPress's built-in Personal Data Export and Personal Data Erasure tools under Tools > Export Personal Data and Tools > Erase Personal Data.
Step 8: Performance, Security, and Compliance Hardening
These are the steps most tutorials skip — and the ones that determine whether your donation site survives real traffic and regulatory scrutiny.
Performance Optimization
- Page caching: Exclude donation pages, success pages, and failure pages from full-page caching. Cached checkout pages cause payment errors. In WP Rocket, W3 Total Cache, or LiteSpeed Cache, add these URLs to the cache exclusion list
- CDN configuration: Exclude the
/wp-json/give-api/endpoint from CDN caching — this is GiveWP's REST API endpoint used for form submissions - Database optimization: GiveWP writes a transaction record for every donation attempt (including failed ones). On high-volume campaigns, run
OPTIMIZE TABLE wp_give_paymentsperiodically - Object caching: Redis or Memcached object caching significantly reduces database load on donation pages under traffic spikes
Security Hardening
- Enable GiveWP's reCAPTCHA integration (under Donations > Settings > Advanced) to block automated donation form spam
- Set up Stripe Radar rules to flag suspicious donation patterns (e.g., multiple small test charges from the same IP)
- Regularly audit the Donations > Logs section for failed payment attempts and unusual activity
- Keep GiveWP and all add-ons updated — payment gateway integrations receive security patches frequently
GDPR and Legal Compliance
- Add a Privacy Policy checkbox to donation forms (GiveWP supports this via the Form Fields manager)
- Ensure your Privacy Policy page explicitly describes how donor data is stored, processed, and shared with payment processors
- If operating in the EU, configure GiveWP's data retention settings and ensure your payment processor's data processing agreement is signed
- For US-based nonprofits, GiveWP's donation receipts can be configured to include IRS-required language for tax-deductible contributions
GiveWP Free vs. Premium Add-ons: Capability Comparison
| Feature | GiveWP Free | GiveWP Plus / Agency |
|---|---|---|
| Unlimited donation forms | Yes | Yes |
| PayPal Donations | Yes | Yes |
| Stripe (basic card processing) | Yes | Yes |
| Recurring / subscription donations | No | Yes |
| Stripe Payment Element (Apple Pay, Google Pay) | No | Yes |
| Fee Recovery (donor covers processing fees) | No | Yes |
| Tributes and Honorariums | No | Yes |
| PDF receipts | No | Yes |
| Donor-covered fees | No | Yes |
| Salesforce / CRM integration | No | Yes |
| Form field manager (advanced) | Limited | Full |
| Annual donor statements | No | Yes |
The free tier is fully functional for straightforward one-time donation campaigns. Recurring donations and fee recovery are the two add-ons with the highest ROI for most organizations — they increase both donor lifetime value and net revenue per transaction.
Promoting Your Donation Site: Technical Channels
Beyond social media sharing, the following technical promotion strategies have measurable impact:
SEO for Donation Pages
- Install Yoast SEO or Rank Math and configure the donation page's meta title and description to include your cause and location (e.g., "Donate to [Cause] in [City] — [Organization Name]")
- Add FAQ schema to your donation page answering common donor questions (tax deductibility, how funds are used, refund policy)
- Build internal links from blog posts and campaign updates to the donation page
- Register your domain with Domain Registration using a
.orgTLD if available — it carries implicit nonprofit credibility with donors
Email Campaigns
Transactional emails (donation receipts) have open rates above 70%. Use them strategically:
- Include a secondary CTA in the receipt email (e.g., "Share this campaign with a friend")
- Set up a post-donation drip sequence thanking donors and providing impact updates
- Integrate GiveWP with Mailchimp or ActiveCampaign via their official add-ons to segment donors by form, amount, or frequency
Conversion Rate Optimization
- A/B test donation amount tiers — the default suggested amounts significantly influence average gift size
- Test modal vs. full-form display — modal forms often convert better on content pages where the form is secondary to editorial content
- Add a matching gift notice if your organization has a corporate matching partner — this is one of the highest-impact conversion elements available
Technical Decision Matrix: Is Your Setup Production-Ready?
Before accepting live donations, verify every item in this checklist:
- SSL certificate installed and verified (
https://loads without browser warnings) FORCE_SSL_ADMINset totrueinwp-config.php- Payment gateway in Live Mode (not test/sandbox mode)
- Stripe webhooks registered and verified in the Stripe Dashboard
- GiveWP success, failure, and history pages published and correctly assigned in settings
- Donation receipt emails tested and confirmed delivered (check spam folder)
- Donation form tested end-to-end with a real small transaction
- Caching plugins configured to exclude donation and receipt pages
- reCAPTCHA enabled on all public-facing forms
- Privacy Policy checkbox added to donation form
- Admin notification email confirmed working
- Donor data export tested (GDPR compliance verification)
- WordPress, GiveWP, and all active plugins updated to latest stable versions
Frequently Asked Questions
Does GiveWP work without a payment gateway configured?
Yes — the Offline Donations gateway is enabled by default and requires no third-party account. It creates a pending donation record and displays custom payment instructions to the donor. However, for any serious fundraising campaign, integrating Stripe or PayPal is essential for immediate, automated payment processing.
Can GiveWP handle recurring monthly donations without a premium add-on?
No. Recurring donations (subscriptions) require the Recurring Donations add-on, which is a premium feature. The free core plugin only supports one-time payments. This is the most common feature gap organizations discover after launch.
What happens if a donor's payment fails after they submit the form?
GiveWP creates a donation record with a Failed status and triggers the Donation Failed email notification to the donor. The failed record appears in Donations > Donations with a Failed status badge. You can manually resend payment instructions or contact the donor from the donor record.
Is GiveWP PCI compliant?
GiveWP itself does not store raw card data — it delegates card processing entirely to the payment gateway (Stripe or PayPal), both of which are PCI DSS Level 1 certified. Your server never receives or stores card numbers. However, your site must be served over HTTPS and you must not log POST request bodies that could capture card data in transit.
How many donation forms can I create with the free version of GiveWP?
There is no limit on the number of donation forms in either the free or premium versions. You can create separate forms for different campaigns, programs, or events, each with independent goals, amount tiers, and payment gateway assignments.
