🎉 Celebrate with 10% OFF on All Products! Use Code: GFEX10 Or Buy Any 2+ Items for 30% OFF with Code: GFEX30!
Guides & Tutorials November 9, 2026

How to Connect Gravity Forms to CiviCRM (Donations, Volunteers, Events)

GravityExtra
How to Connect Gravity Forms to CiviCRM (Donations, Volunteers, Events)

If your charity, association or campaign runs CiviCRM, every form on your website is a doorway into it: donation forms, volunteer sign-ups, newsletter forms, event registrations, membership enquiries. Yet on many WordPress sites those forms still end in an e-mail inbox, and somebody copies names, addresses and amounts into CiviCRM by hand. This guide explains why that happens, what the usual workarounds cost, and how to connect Gravity Forms to CiviCRM directly, on the same site or over the CiviCRM API, with the Gravity Forms CiviCRM Add-On.

The problem: your forms and your supporter database do not talk

CiviCRM is built for organisations that live on relationships: donors, members, volunteers, event participants. It keeps one record per person with every gift, every event and every conversation. Gravity Forms is the form builder many of those same organisations use on their WordPress website, because it is flexible, handles payments and conditional logic, and does not need a developer for every new form.

The gap sits between the two. A supporter fills in the donation form; Gravity Forms stores the entry and sends a notification. Then a staff member or a volunteer opens CiviCRM, searches for the person, wonders whether “Maren Okafor” and “M. Okafor” are the same supporter, types in the new address, records the gift with the right financial type, adds the person to the newsletter group and maybe writes a note about what they ticked on the form. Multiply that by every form, every week.

Manual copying has three costs. It takes time that a small team does not have. It creates mistakes: wrong amounts, missed Gift Aid declarations, duplicates when the same person is entered twice. And it delays everything that depends on CiviCRM, like the thank-you letter, the receipt, the volunteer rota and the next mailing, because the data is only as fresh as the last copy session.

CiviCRM has its own contribution and event pages, but many organisations prefer their Gravity Forms: the forms match the website, they already connect to payment gateways, they use conditional logic and multi-page layouts, and the web team knows how to build them. Throwing those forms away to use a different form system is rarely what anyone wants.

Why webhooks, automation services and custom code fall short

There are three common ways to bridge the gap, and each has a price.

Automation services. A service such as Zapier or Make can catch a form entry and push it to CiviCRM. That means a monthly subscription that grows with the number of tasks, your supporters’ personal data passing through another company’s servers, and an automation chain that someone has to rebuild whenever a field changes. Matching existing contacts, adding groups and tags, and keeping a donation Pending until the payment clears quickly turns into a long, fragile chain of steps.

Webhooks plus CiviCRM extensions. Another route is to send each entry as a webhook and configure a matching processor inside CiviCRM. It works, but it needs the webhooks feature of the most expensive Gravity Forms licence, an extension installed and configured on the CiviCRM side, and someone who understands both systems to maintain the mapping. Every new form becomes a small integration project.

Custom development. A developer can write code that calls the CiviCRM API on submission. For a single form that is fine; for a dozen forms, with payments, duplicates, retries when CiviCRM is busy, and updates to WordPress, Gravity Forms and CiviCRM every few months, it becomes code that someone has to own for years.

What matters CiviCRM add-on Automation service Manual copying
Yearly cost From $39 per year, no per-entry fees $240 to $600 or more per year, rising with volume Staff hours every week
Setup A settings screen and one feed per form, about 15 minutes Multi-step automations per form None, but no end to it
Supporter data Goes straight from your site to your CiviCRM Passes through a third party Sits in inboxes
Duplicates Matched by e-mail or your CiviCRM dedupe rules Extra lookup steps to build Depends on who types
Payments Completed only when paid; refunds follow Custom logic Checked by hand

Step-by-step: connect Gravity Forms to CiviCRM

Step 1: install the add-on and choose where CiviCRM is

Install the add-on, then go to Forms → Settings → CiviCRM and activate your licence. Under Where is CiviCRM? pick On this WordPress site if the CiviCRM plugin runs on the same WordPress site. That is all: the add-on talks to CiviCRM directly on the server, with no API key.

If CiviCRM runs on another website, pick Another CiviCRM site (API). Enter the site address, choose the address style (Clean URLs, WordPress, Joomla or a custom template), and paste the API key of a dedicated CiviCRM API user. Add the site key if your CiviCRM asks for one. Save and press Test connection: the add-on reads one contact and your lists, and writes nothing.

The CiviCRM connection settings: Where is CiviCRM? set to Another CiviCRM site (API), the site address https://crm.harbourfoodbank.org, API address style WordPress, the API key and the site key hidden as dots, a 30 second timeout and the Test connection result Connected to CiviCRM (API). 3 groups and 4 financial types found.
Connect CiviCRM on the same site, or another CiviCRM site over API version 4, and test it in one click.

Step 2: create a feed and map the supporter

Open the donation form, go to Settings → CiviCRM and add a feed. Pick the contact type, Individual for most forms, Organization for corporate partners, Household if you work with households, and map the form fields: name, e-mail, phone and each part of the address. The location type (Home, Work) and phone type (Mobile, Phone) come from your CiviCRM. Then map your CiviCRM custom fields, such as a preferred contact method, interests or a Gift Aid declaration; the list is read from your CiviCRM, so new custom fields appear without any code.

The CiviCRM feed settings in Gravity Forms: feed name Donors to CiviCRM, contact type Individual, a field map that links first name, last name, email, phone and each part of the address field to CiviCRM, location Home, phone type Mobile, and three CiviCRM custom fields (Donor details: Preferred contact, Interests and Gift Aid) mapped to form fields
Map form fields to the CiviCRM contact, its e-mail, phone and address, and to your CiviCRM custom fields.

Under Matching existing contacts, choose how returning supporters are found: by the same e-mail address, by your CiviCRM unsupervised duplicate rule, or by any other dedupe rule you set up in CiviCRM. Choose whether a returning supporter’s empty fields are filled, or all mapped fields are updated.

Step 3: groups, tags and a record of the submission

Tick the groups the supporter should join, such as your newsletter list or a volunteers group, and the tags you use to segment, like Website. Tick Record an activity to keep the full form answers on the contact’s record, with a subject such as Donation form: {form_title}. Choose Scheduled as the status when a staff member should follow up.

Step 4: record the donation the right way

Tick Record a contribution, choose the amount field, the financial type (Donation, Member Dues, Event Fee) and the payment method. This is where a plain integration usually goes wrong: a donation must not show as received before the money has arrived. The add-on records the contribution as Completed only when the Gravity Forms payment status is Paid. While a card payment is still processing, the contribution is Pending, and it moves to Completed when the payment add-on reports the payment, or to Refunded, Failed or Cancelled. Offline gifts such as cheques and pledges are recorded as Pending for your finance team.

The Contribution section of the CiviCRM feed: Record a contribution is ticked, the amount comes from the Donation amount field, financial type Donation, payment method Credit Card, and entries without a payment are recorded as Pending
Record a contribution: Completed only when the Gravity Forms payment status is Paid.

Submit a test entry. The entry gets a note with the CiviCRM contact id, a link to the contact and a line for each step, and a CiviCRM box on the entry screen.

A Gravity Forms entry from the Donate to Harbour Food Bank form with the side box CiviCRM: status Sent, a link to Contact #19, Activity #33 and Contribution #18 Pending, and an entry note listing each step sent to CiviCRM with a tick
Each entry gets a CiviCRM box and a note with the contact link and every step that was sent.

In CiviCRM you see the supporter with the e-mail, phone, address and custom fields, the group, the tag, the activity and the contribution.

The CiviCRM contact screen of Maren Okafor created from the form: contact source Website form: Donate to Harbour Food Bank, tag Website, home e-mail, home mobile, home address in Hull, and the Donor details custom fields Preferred contact Email, Interests Home delivery and Gift Aid Yes, with one contribution, one activity and one group
The same supporter in CiviCRM: contact, e-mail, phone, address, custom fields, group, tag, activity and contribution.

Pro tips for real organisations

  • Volunteer and event forms: add a second form with Register the contact for a CiviCRM event, pick the event and the participant role (for example Volunteer). Use conditional logic to register only people who chose a certain shift.
  • Supporter number in the thank-you message: put {civicrm_contact_id} in the confirmation or the notification, so supporters can quote it when they call.
  • One form, several feeds: one feed adds everyone to the newsletter group; a second, conditional feed records gifts over a certain amount with a Major donor tag and a scheduled follow-up activity.
  • Busy CiviCRM servers: if CiviCRM is down for maintenance, the add-on tries again after 5 minutes, 30 minutes and 2 hours. Resending an entry never records a second gift or activity.
  • Keys out of the database: set the API key and site key in wp-config.php with GECIVI_API_KEY and GECIVI_SITE_KEY.

Every form entry, in CiviCRM, without copying

Contacts with duplicate matching, groups, tags, activities, donations and event sign-ups from your Gravity Forms, on the same site or over the CiviCRM API. One yearly licence, no per-entry fees.

Frequently asked questions

Does it work when CiviCRM is not on WordPress?

Yes. Choose Another CiviCRM site (API) and connect to CiviCRM on Drupal, Backdrop, Joomla or Standalone through API version 4. Your forms stay on your WordPress site.

Will it create duplicates of people who are already in CiviCRM?

Not if you choose matching. The add-on finds existing contacts by e-mail address or with your own CiviCRM dedupe rules, and only adds e-mail addresses and phone numbers the contact does not have yet.

Which payment gateways does it support?

Any Gravity Forms payment add-on or GravityExtra gateway that reports payments to Gravity Forms. The contribution is Completed only when the entry is Paid, and it follows refunds and failed payments.

Is my supporters’ data sent anywhere else?

No. Entries go from your WordPress site to your CiviCRM only. API keys are stored encrypted and never appear in notes or logs.

CiviCRM is a registered trademark of CIVICRM LLC. The Gravity Forms CiviCRM Add-On is made by GravityExtra and is not affiliated with or endorsed by CIVICRM LLC.

0
0
Your Cart
Your cart is emptyReturn to Shop
🔥 FREQUENTLY BOUGHT TOGETHER
Complete Combo & Save 40%!
ITEM IN YOUR CART
Gravity Forms Klaviyo Add-on
$39.00/yr
+
🎁 RECOMMENDED ADD-ON SAVE 40% OFF
Original Price: $39.00/yr
Bundle Special Price: $23.40/yr