Having a good donation page is a key part of the modern fundraising process. Thankfully, WordPress makes this a fairly easy thing to setup. For only a few hundred dollars you can buy all the off-the-shelf tools you need, and then put them all together on your website. WordPress and it’s plugin ecosystem makes this easy. You may not even need to contract a developer!

Here’s what you need:

Let’s break these requirements down…

WordPress is assumed for this guide. You’ll need to be able to install plugins.

Gravity Forms is a paid Form-Builder Plugin for WordPress. The Standard plugin costs $39, but if you want some additional add-ons such as Mailchimp and Campaign Monitor you’ll need either the Business or Developer editions. Gravity Forms allows you to build your form with a variety of fields, conditional logic and validation. There are other Form-Builder plugins out there, but Gravity Forms probably has the best feature set and support.

A Payment Gateway with a Gravity Forms Add-On is the next ingredient. A Payment Gateway allows you to accept Credit Card donations online by linking your donation form directly to your bank’s merchant facility. If you have ever made an online payment, chances are you unknowingly used a Payment Gateway. In Australia, I recommend looking at eWay as it has an eWay Gravity Forms Add-On ready to go. A good Payment Gateway should also preferably include fraud detection and prevention.

An SSL Certificate is another essential ingredient. This ensures all communication between your server and the client’s web browser is encrypted and secured. This helps prevent man-in-the-middle attacks. If you have Shared Hosting, your hosting company will probably be able to sell you an SSL Certificate for as little as $50. Alternatively, you can use another vendor such as GeoTrust RapidSSL and install it yourself. Ideally you’d have an Extended Validation certificate (which gives you the green bar in most browsers). Shop around for the best deal on certificates.

If your website wasn’t built with SSL in mind, you’ll need some way of forcing all Donation page requests onto the SSL version of your site. An easy way to do this is with a plugin such as WordPress HTTPS.

If you have a Donor CRM which supports payment processing or just transaction logging, then you should also integrate your Donation Form with this CRM. This will allow you to automatically record transactions against your client records, and create receipts, run reports, etc. all without manually entering the data.

Sidenote: If you’re in Australian Christian Media, there’s a decent chance you are using the Profiler CRM. If so, I’ve already built a Gravity Forms Add-On. Download your copy today.

Finally, building a Donation Page may need some customisation of your WordPress Theme (or Child-Theme). There are a few things which may need to be changed:

  • Strip back all distracting items such as menus, banners, sidebars, etc.
  • Remove non-SSL resources
  • Customise the layout of the form

UPDATE: These customisations can now be performed with the new WordPress Fancy Fundraising plugin. This plugin fixes all the common issues and gives you a purpose-built donation template to use on your donation page. No developers required!

These are the key ingredients. You’ll need basic knowledge of WordPress configuration and possible a little development expertise to get your page looking good.

WordPress Donation Form Setup Steps

  1. Purchase Gravity Forms
  2. Sign up for a payment gateway
  3. Install and activate your WordPress plugins
    1. Gravity Forms
    2. Payment Gateway Add-On
    3. CRM Add-On
    4. WordPress HTTPS
  4. Setup the Payment Gateway Add-On Settings
    1. Under Forms > Settings, you can find your payment gateway’s settings screen. You generally need the following fields provided by your Gateway:
      1. API Key
      2. API Password
      3. Customer ID
      4. Encryption Key
  5. Create a new form
    1. You can either create a form from scratch or import my starter template form. Guidance on correct form setup can be found under the heading “Form Field Setup”.
  6. Setup your CRM integration
    1. Settings for this are generally found in the individual form’s “Settings” menu. You’ll often need to enter your API Key, Database name and donation code information.
  7. Setup email notifications for the form
  8. Customise your template (or install WP Fancy Fundraising)
  9. Create a new page
    1. Embed your new form using the Shortcode (an Add Form link is at the top of the page)
    2. Enable the “Force SSL” setting for this page
    3. Select your new template from the Template Name drop-down
  10. Test your form!!!
  11. Add your Donation Page to your main menu and site header

Form Field Setup

Deciding which form fields to include and how to configure them is an art unto itself. Here are my suggestions:

Field Name Field Type Notes
Donation Type Standard > Radio Buttons Required field. Two values: ‘once’ and ‘regular’.
Donation Amount Pricing > Option (Radio Buttons) Required field. Have an option for each of your most popular giving amounts. Also have an “Other” field.
Other Amount Pricing > Product Required field. Use Conditional Logic to only display this field if “Other” is selected in the “Donation Amount” field.
Credit Card (Card Number, Expiry & CCV) Pricing > Credit Card Required field. This one field will add all the necessary credit-card fields.
First Name Standard > Single Line Text Required field.
Last Name Standard > Single Line Text Required field.
Organisation Name Standard > Single Line text Optional field.
Email Address Advanced > Email Required field.
Address Advanced > Address Required field.
Phone Number Advanced > Phone Required field.
Comments Standard > Paragraph Text Optional field.

To make this form setup easier for you, I’ve created a sample form. You can import this form and customise it to your suit your specific needs. Download Now.

You may also need to enable a Captcha to prevent automated submissions (anti-fraud software can be used instead).

Recurring Payments

Many NFP’s wish to take Recurring Payments, generally on a monthly basis. There are multiple ways to do this. Many Payment Gateways allow you to setup monthly payments directly with them. In eWay’s case, there is a special form-field you can insert into your Gravity Form which allows users to select the frequency of their gift.

If you use a CRM with built-in recurring payment functionality, it makes more sense to integrate directly with that. Profiler has this option – you can have it automatically setup the recurring payments as a ‘pledge’ to trigger automatically at a fixed interval and generate the appropriate receipts, EOFY statements, etc.

There are now a number of third-party payment processing companies that offer a service that sits between you and your gateway, allowing gateway independence and regular payment triggering. I generally recommend steering away from these companies, unless you have very specific requirements that can’t be met by your gateway or CRM provider. They generally add another monthly fee, transaction fees, single points of failure and lock-in. For small NFP’s, I don’t think this can be justified.

Customising Your Donations Page Template

The best donation pages exclude all distracting elements, allowing the user to focus on form completion un-hindered. Depending on your technical prowess, you may need to engage a developer for this step.

Create a WordPress Template that includes your logo, the form, a footer, and any appeal-specific copy/branding. Other elements such as your main menu, social icons and sidebar should be excluded from this template. For examples of where this has been done well, see Hope 103.2 and Organising for Action‘s donation pages.

Possibly the hardest part of this whole process is excluding non-HTTPS elements. Well-designed plugins and themes won’t cause you trouble, but unfortunately there is a lot of poorly written code for WordPress. Short of fixing the plugins yourself and doing a pull request or submitting a patch, you may need to manually re-write some code when the page renders.

Whatever you do, don’t delete wp_header() or wp_footer(). Much of WordPress (including Gravity Forms itself) relies on these function calls to work correctly. Please fix the root-cause of the problem wherever possible.

If Your CRM or Payment Gateway Doesn’t Have An Add-On

If your CRM or Payment Gateway doesn’t already have an add-on, you may need to engage the services of a developer to build one. I’ve done this myself for Profiler – and released it as an open source plugin.

If you would like to take a crack at this yourself, take a look at the Add-On Framework Documentation and the sample project. It’s a fairly easy process to build one, and should only take a day or two of raw development time.

What Not To Do

There are a multitude of things that can be done incorrectly when setting up your WordPress Donation Forms. Here are some key mistakes to avoid:

  • Failure to test the form correctly
  • Failure to integrate directly with a gateway and CRM
  • Choosing a Payment Gateway that doesn’t have a Gravity Forms Add-On
  • Failure to install a SSL Certificate
  • Failure to remove non-SSL elements from your page
  • Failure to create a donation-specific template
  • Too many form fields
  • Confusing/ambiguous form fields
  • Mixing tax-deductible and non-tax-deductible payments on one page (keep membership separate and explain the differences)
  • Allowing the form to be submitted without the correct fields filled out
  • Conditional Logic mistakes
  • Fixing “non-SSL” elements by deleting wp_footer() or wp_header()
  • Hacking a off-the-shelf theme without creating a child theme


I hope these instructions help you setup your WordPress Donation Form for your Not-For-Profit. I’ve followed this formula now for a few NFP’s, and we’re seeing good results. And again, make sure you test everything!