15%

Save 15% on All Hosting Services

Test your skills and get Discount on any hosting plan

Use code:

Skills
Get Started
23.10.2024

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_LIMIT in wp-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.php

Edit 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.php by 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

  1. Navigate to Plugins > Add New
  2. Search for GiveWP
  3. Locate GiveWP – Donation Plugin and Fundraising Platform (by GiveWP)
  4. Click Install Now, then Activate
wp plugin install give --activate

Verify the installation:

wp plugin list | grep give

After 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

SettingRecommended ValueNotes
CurrencyMatch your bank account currencyMismatched currency triggers conversion fees
Currency PositionBefore amount (e.g., $100)Standard for English-language sites
Thousands SeparatorCommaLocale-specific — adjust for European markets
Decimal SeparatorPeriodAdjust for locales using comma decimals
Default CountryYour primary donor countryPre-fills address fields on forms
Base State/ProvinceYour state/provinceReduces form friction for local campaigns
Success PageAuto-created by GiveWPDo not delete this page
Failure PageAuto-created by GiveWPDo not delete this page
History PageAuto-created by GiveWPDonors 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).

  1. Install the GiveWP Stripe add-on (free version available in the plugin directory)
  2. Navigate to Donations > Settings > Payment Gateways > Stripe
  3. Click Connect with Stripe — this uses OAuth, so you do not manually paste API keys in the free integration
  4. 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
  5. 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

  1. Navigate to Pages > Add New
  2. Title the page (e.g., "Donate" or "Support Our Mission")
  3. Click the + block inserter and search for Give Form
  4. Select the Give Form block
  5. In the block sidebar, select your form from the Select a Donation Form dropdown
  6. Choose display style: Full Form, Button, or Modal
  7. 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:

ParameterValuesDescription
idForm post IDRequired
show_titletrue / falseDisplay form title
show_goaltrue / falseDisplay progress bar
display_stylefull / button / modal / revealForm display mode
show_contentabove / below / noneForm 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_payments periodically
  • 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
  • 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

FeatureGiveWP FreeGiveWP Plus / Agency
Unlimited donation formsYesYes
PayPal DonationsYesYes
Stripe (basic card processing)YesYes
Recurring / subscription donationsNoYes
Stripe Payment Element (Apple Pay, Google Pay)NoYes
Fee Recovery (donor covers processing fees)NoYes
Tributes and HonorariumsNoYes
PDF receiptsNoYes
Donor-covered feesNoYes
Salesforce / CRM integrationNoYes
Form field manager (advanced)LimitedFull
Annual donor statementsNoYes

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 .org TLD 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_ADMIN set to true in wp-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.

15%

Save 15% on All Hosting Services

Test your skills and get Discount on any hosting plan

Use code:

Skills
Get Started