Beginner's Guide for WordPress - Start your WordPress Blog in minutes.
Choosing the Best
WordPress Hosting
How to Easily
Install WordPress
WordPress Plugins
View all Guides

How to Create a Donate Form for Nonprofit Organization using WordPress

Last updated on by
Special WordPress Hosting offer for WPBeginner Readers
How to Create a Donate Form for Nonprofit Organization using WordPress

In the past we have shown you how to add a PayPal donate button in WordPress. When working with a non-profit, just the donate button is not sufficient. They want to have a page with a video, their mission statement, and a donate form that they can use to collect payments. In this article, we will show you how to create a robust donate form for Nonprofit organizations using WordPress. This donate form will allow the user to pick an amount, choose whether it is recurring or one-time, add payment (you choose between or PayPal), and add donors to a special email list.

To create something as robust is this, you either need a lot of coding knowledge, or you need Gravity Forms. While we could have hard coded the form, we wanted to give our client the ability to change things around in the future as easily as possible. Therefore, we decided to stick with the Gravity Forms plugin. Note: You will need the Developer version if you wish to use and PayPal payment gateways. (Gravity Forms Coupon if you haven’t bought it already).

First thing you need to do is install and activate Gravity Forms along with the following add-ons (MailChimp, and PayPal or Next, you need to configure each of these add-ons which is fairly easy. For you need the API and transaction key, for PayPal you need to turn on some settings, for MailChimp you need the API.

Next, you need to setup a SSL Certificate because it is required by Use the plugin WordPress HTTPs. The cheapest SSL certificate we found was $12.99 / year. Ask your host if they already have a SSL Certificate available for you. Some do provide SSL Certificate with the hosting account (for example. HostGator Business Plan use coupon “wpbeginner” to start for $0.01 for the first month).

Now we are ready to create the form. Gravity Forms make this process a piece of cake with their drag-drop interface. We added a Pricing Field (Product) radio button for donation amounts (we gave 5 options $25, $50, $100, $500, $1,000). We added another radio button to decide the frequency of payments whether it will be one-time or monthly recurring.

Gravity Forms Donate Amount and Frequency

From the advanced field section, we added the name field, email field, phone field, and the address field.

Gravity Forms Advanced Field - Contact Info

From the Pricing Fields, we added the Credit Card field. You don’t need to add Credit Card field, if you are using PayPal.

Gravity Forms Credit Card Field

Next, we added a checkbox to add the donor’s email to our special email list. This is a simple checkbox with one value that says “Yes, I would like to receive updates from XYZ organization”. We decided to use MailChimp for our client, but you can do this with Aweber and Campaign Monitor as well because Gravity Forms have add-ons available.

Now that you have the form created, we need to integrate the Payment Methods and MailChimp to our form.

Go to MailChimp option under Gravity Forms and click Add New. It asks you to specify which MailChimp list you want. Select the one that you want to add the emails to. Then it asks you to select which form you want this in, so select the form name. Next you need to Map the fields. So for Email Address, get your form field Email. For name, get your form field name. Make sure to Enable opt-in condition so it says Export If is Yes, I would like like to… If your MailChimp list has groups, then you can select groups as well. Don’t forget to double opt-in to comply with MailChimp’s policies.

Go to PayPal option under Gravity Forms and click Add New. Enter your PayPal email address, mode will be production, enter transaction type (donation), and gravity form. Map your fields such as customer name, email, address etc. Select the options that you want. Enable PayPal Condition and say If Frequency is One-time use this form. Then repeat this whole process again except change transaction type to subscriptions, enter the Recurring amount to be Donation Amount, billing cycle should be 1 month, and recurring time should be infinite (Basically until the user cancels). Fill in the rest of the fields and then enable PayPal condition to say If frequency is recurring. Save and you are good to go.

For the process is the same as PayPal, so follow that.

Once you are done go to Pages. Create a new page called donate. Embed a Video, add text below it or above it, and then simply add the Gravity Forms using the icon next to Add Media icon.

And you are done. You just created a robust donate form for nonprofit organization using WordPress. Let us know if you have tips and tricks to improve on this method.

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi. Page maintained by Syed Balkhi.

WPBeginner's Video Icon
Our HD-Quality tutorial videos for WordPress Beginners will teach you how to use WordPress to create and manage your own website in about an hour. Get started now »


  1. Josh Pollock says:

    I just wanted to add that at the time this was written, Gravity Forms + PayPal was probably the easiest way. I’ve use Give a few times to set up donation forms and it is super easy. There is a lot virtue I think to using a solution designed specifically for your use when it exists and it is done well.

  2. Jeremy says:

    Hi, you mentioned in the article that:
    “We added a Pricing Field (Product) radio button for donation amounts (we gave 5 options $25, $50, $100, $500, $1,000). “

    I do NOT see a radio button option from the Pricing Field, but there is one from the regular fields section. Can I use that? How do I add the dollar sign? By default, it does not have $ sign.

    How do I add a user defined donation amount?


  3. Brandon says:

    Is there any way possible for a submit button to do a two step process when a user clicks it. I want to be able for the user to pay a fee as well as donate if they have clicked that option as well. How would I go about doing that?
    I am using authorize for the payment, and Paypal for the donation.

  4. Brenden says:

    This is a Gravity Forms question but I thought someone might be able to answer.. If I have to buy the developer version of the plugin, but am designing for the client.. Will the form stop working for the client if I canceled my subscription?

    • WPBeginner Support says:

      No, it will not stop working. However, they will not receive any updates and will have to buy their own license to continue receiving updates and support.

  5. Noc says:

    Hi, i created the form except one part. I need to add an option for anonymous donations. How can i achieve that. Thanks a lot.

  6. WPBeginner Staff says:

    Check out the plugins mentioned in how to add a PayPal donate button in WordPress.

    • WPBeginner Staff says:

      You probably missed it, just below the screenshot you will find.

      ‘All you really need to do is simply paste the YouTube URL in the page editor on it’s own line and save your changes.’

  7. Adrian VV says:

    Hello, Thanks for the very helpful article. I’ve been using GF for just a few months now. It’s great. I’m on staff with a nonprofit who raises funds for individual staff members. I’m building our org a new wp site and am considering using woo-commerce for donations and the selling of some of our resources. However, upon coming across your article, it seems a whole lot simpler than purchasing hundreds of dollars in extensions that woo-commerce offers. What I would like to know is, if I create a donate now button on a particular staff members profile page that will take them to the donate form, is there a way to set a description, staff donation number, or even just a staff name that will auto fill for that particular staff member should they come to the form from that staff button? Or, should someone come to the form from another link on the site, can we have a dropdown staff member id to designate a donation to that particular staff person? Seems like I would have to create a new form for EACH staff member. Thank you!

  8. Steve says:

    Great post! We’ve experimenting with GravityForms and we love it.

    For this piece, however, we can’t seem to get GF and AuthNet to connect properly. We’ve got the latest versions of WP, GF, and AuthNet Add-On, and a properly installed SSL. When we try to process a card, we get an error message. The log shows no response from AuthNet. And, we’ve noticed that the our AuthNet settings (in the WP admin panel for the GF plugin settings) get “green check marks” (accepted) regardless of what we enter (it even shows as working if we leave the API Login ID and Transaction Ket fields blank). (Similar error to this post:

    Do you have any ideas or suggestions for us?

    • Steve says:

      Problem solved! Checking the server’s PHP error logs, we found this:

      PHP Warning: curl_exec() has been disabled for security reasons wp-content/plugins/gravityformsauthorizenet/api/lib/shared/AuthorizeNetRequest.php on line 103

      This is a new server and, apparently, CURL does not install by default when using Apache. We installed CURL, and everything worked as expected. So, it wasn’t a problem with Authorize.Net OR Gravity Forms, just needed a server configuration adjustment.

      (PS – that should have read “Transaction Key” above, and not “Transaction Ket” – sorry for the typo!)

  9. Pete says:

    Thank you for this tutorial, it worked perfectly and helped me set up one-time and recurrin payments from the same form.

  10. Yan says:

    Hi there-
    I just purchased the developers version and I’m trying to build the form, but I can’t see the “Credit Card” field on the Pricing section. What did I do wrong? I really need that field for my donation form.

    PS- the coupon in this post doesn’t work. I still paid full price :(

  11. Greg says:


    Are and PayPal payment gateways the only ones that will work with Gravity Forms?Trying to set up a donations page and the client currently uses LinkPointCart for their payment gateway…Can Gravity Forms be used with Link Point Cart? Any advice you can provide would be appreciated. Thanks

  12. Julia says:

    This has been fantastically helpful. Thank you so much for sharing.

  13. Sarah Khan says:

    I set it up this way and have transferred to a new domain name. The monthly donors from the old domain are getting error messages. Is this an issues I should fix with PayPal and Or with gravity forms? I appreciate any insight you can provide. Thanks in advance :)

  14. Reginald says:

    Hi WPBeginner!

    Man great post. This reminds so much when I wanted to start a crowdfunding website with WordPress. I paid a hefty price for that at that time and man, ended up my partner took over for good.

    Thanks for sharing the lovely plugin as I might be able to use on my new site :)


  15. Barry Zickuhr says:

    Absolutely brilliant article. I was able to take this from square one to up and running in a matter of an hour and a half. THANKS!

  16. Umesh says:


    I am using Gravity form and Paypal pro add-on to get the donation form working. It works fine but the question I have is, why the payment notification received from paypal does not include Address info that I have in my form?

    Any suggestions would be a great help.


    • Editorial Staff says:

      If I’m correct, then the address information doesn’t transfer to PayPal. Probably best to ask this in Gravity Forms support forums.

  17. ruyn13 says:

    Using a custom form like this, is there a way to log the donations for registered and logged in users and then allow them to see their past donations in the front-end?

    • Editorial Staff says:

      Interesting idea. It’s possible, but not out of the box. You would have to store the donation amount and date somewhere in usermeta, so you can easily pull it.

      • ruyn13 says:

        Thank you for the encouraging response!

        Forgive my ignorance (I’m a recent convert from, but how would I do that? If you came up with a great solution and wrote an article on it, it would be pretty popular. I know that on the site many people are looking for some way to add a donation history. It’s a common enough complaint on the various donation plugins out there. It would be even better if the admin had the ability to add donations made by phone or check to a user as well.

      • ruyn13 says:

        Just a thought, but could someone make this form generate a post to a custom post type and log donations that way (again, I’m a beginner, so I don’t know for sure)?

  18. Simon says:

    Hi. I am wondering about setting up the frequency buttons. Do I do that in the pricing fields or somewhere else? Thanks for this. It is just what I was looking for.

    • Editorial Staff says:

      To do that, you actually have to set it up first in the PayPal add-on or add-on. Setup two separate payment types. One as recurring the other as one-time payment. Then you would have to configure the conditionals properly. It was a bit complicated, but there is no easy way to do that. Basically, setup the two radio buttons for frequency. Then in your payment add-on load the specific one based on the radio conditional. Hope this helps.

      • Chris says:

        Hi, I hope you can help. I’m trying implement a donation form in which users select a donation level and then has the option to make this a one-time or recurring payment. I’m trying to follow the steps outlined here but I can’t see how to create 2 separate PayPal Feeds for a form?? I have the Developer License and PayPal plugin and it would be great to be able to accomplish this. Thanks for any guidance.

        • Rob says:

          Gravity Forms > select your form, go to Form Settings > PayPal
          It will show PayPal Feeds, then Add New

  19. Rod says:

    Could you add a field to specify a fund?

    • Editorial Staff says:

      If you mean add an other field and let user enter the amount. Yes you can. You have to use a conditional feature that Gravity Forms have.

      • Rod says:

        Actually a text field specifying which fund to collect the money and then bring that through or have a record of what they wanted and the dollar amount.

        • Editorial Staff says:

          Yes you would need to use Gravity forms text field. But then only open it conditionally when the user checks the radio button other. Then specify in add-on for Gravity forms that this particular field is also a payment amount field.

  20. Bryan Chalker says:

    Thanks so much for this tutorial. Perfectly clear and absolutely essential for the client I had.

  21. Sam says:

    Hi Syed, thanks for the tip. This help out a great deal.

    I was wondering if you could tell me how to add a field that will allow for a potential donor enter any amount they want while still having the checkboxes or radio buttons?


    • Editorial Staff says:

      Hey Sam,

      Yes that is possible. In Gravity Forms, add an option called Other in your radio buttons. Then create a new text field. When you click on the advanced tab in GF, you will see the checkbox to enable Conditional Logic. Then show that field only when the user clicks the other option. Also make sure that your payment option is taking that into account. Basically it is just a bunch of conditional logics.

      • Sam says:

        Thanks so much. I got it to work nicely. I’ve run into another small issue though. In creating the other amount and selecting recurring amount, I’m not able to get it to redirect to Paypal. I can get the single payment and other donation amount to work nicely, but the minute I select recurring amount with other payment, it fails.

        You can view the donation form for Thinking Forward here.

        I look forward to hearing from you.

        • Editorial Staff says:

          Hey Sam, really not sure what the issue would be. We used platform on the donation example. You will probably get a better answer at Gravity Forms support forum.

  22. hollywood_cat says:

    Heard a lot of good things about Gravity Forms.  Was wondering if it attracts a lot of spam as most forms seem to.  The only one I have used which doesn’t is Fast Secure Contact Form but I am pretty sure it doesn’t integrate with PayPal which is a shame.

    • wpbeginner says:

       @hollywood_cat No particular form attracts SPAM. It is your site that does. If you put proper SPAM protection (such as captcha, or honeypot) then it will be fine. Gravity Forms have both options.

  23. MarkStanwyck says:

    I see that you need SSL Certificate because it is required by, but do you need one if you are going to use PayPal?

    • wpbeginner says:

       @MarkStanwyck No if you are using PayPal, you don’t need it.

      • MarkStanwyck says:

         @wpbeginner Thanks. Do you have to use the WordPress HTTPs plugin or could I just have Go Daddy install the certificate and be good to go?

        • wpbeginner says:

           @MarkStanwyck Because the page lives on WordPress, the https plugin must be installed to force https on that page.

        • MarkStanwyck says:

           @wpbeginner Got it. I was just surprised to see that the plugin only had 82 reviews. I thought if it provided such critical functionality than it would be more popular.

        • wpbeginner says:

           @MarkStanwyck The newest version of HTTPs is extremely unstable. We recommend using 2.0.4 << that is the last stable version that we found is working. As you can notice, that the current version is being reported by so many.

        • MarkStanwyck says:

           @wpbeginnerThanks! However, it look like the 3.0.1 update fixed the major issue everyone was having.

  24. JeroenOnstenk says:

    Is it possible to use this work around for multiple non-profit organizations on one WordPress website? So create for each organization a separate donation form?

    • wpbeginner says:

       @JeroenOnstenk Yes it is possible as long as you are on the only admin managing it (a lot of confidential information goes in the backend). 
      Also the domain name must be generic as well… otherwise the users would wonder why they are on an off-site domain name to give donation. You would also need to have a homepage explaining why they are on the site… You can create a specific page template for each organization with their logos.  

  25. thewebmasterblogs says:

    Thanks. I was looking for this for my other site.Just one question though, for this to work, do I have to use Gravity Forms? Won’t some other contact form plugin like Contact Form 7 do the trick? 

    • wpbeginner says:

       @thewebmasterblogs Unless they have an extension/add-on it will not be as easy. However, it is certainly do-able by coding an extension for it.

      • shumail says:

         @wpbeginner  @thewebmasterblogs Can I use this with to take donations ? 

        • wpbeginner says:

           @shumail  @thewebmasterblogs It won’t work with Gravity Forms because they do not have that add-on.

  26. zimbrul says:

    Can’t believe that: I was looking for something like that for a website I’ve built for a baby with a genetic disorder called Epidermolysis bullosa dystrophica. I asked the guys at Gravity Forms how to do this but couldn’t get a “step-by-step” guide. I.m going to implement this on the site in discussion.

  27. 906graphics says:

    Our current donation area operates on the Django framework. I’ve heard from our developer that if we switch the rest of the site to WP, that’s OK—but don’t move the secure donation area from Django because it’s more secure than WP will ever be. What are your thoughts?

    • wpbeginner says:

       @906graphics Total BS… You are not storing any data on your end. You are merely transferring the information over a SECURED connection to … You can get a real high quality SSL certificate but that’s it… its pretty much a page with a form on it. I’d like to know why is running on Django so much more secure… because I don’t see anything..

Add a Comment

We're glad you have chosen to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and all links are nofollow. Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.