Send remote requests to CiviCRM with Gravity Forms Webhooks. This can be done directly to the CiviCRM API or via Form Processor.
TL;DR; This extension makes it easier to send data from a Gravity Form to a remote CiviCRM installation.
The CiviCRM REST REST API consumed data via encoded JSON a HTTP form post. In APIv3, this variable is json
, in APIv4 this variable is params
. Out of the box, the Gravity Forms Webhooks extension does not support structured JSON or combining data encodings like this (i.e. a Request Format of FORM containing encoded JSON).
This extension also add the option to send an email notification when a webhook to CiviCRM fails.
- (Recommended) Install and configure the AuthX extension that comes with CiviCRM. This gives many options for authentication mechanisms.
- Configure authentication rules and mechanisms (Administer -> Administration Console -> Authentication). The defaults are probably okay.
- (Recommended) Install API Key Extension
- (Recommended) Install the Action Provider and Form Processor extensions. These are not necessary, but they do provide quite a bit for flexibility in how data from Gravity Forms is processed compared to directly using the CiviCRM API.
- Create a new contact to function as the creator of any data coming in from Gravity Forms; there are a number of ways to authenticate with this contact. This contact might need an attached user account if the Gravity Forms requests will require specific permissions.
- Add an API Key to this contact.
- Not the API Key and Site Key (if using Site Key Guard in AuthX)
- Determine the CiviCRM API end point. There are a number of options: legacy, modern, CMS specific... In this example, we will use the modern ones.
- Wordpress
- Drupal
- Joomla
- https://civicrm.example.org/index.php?option=com_civicrm&format=raw&task=civicrm/ajax/rest
- (with customization) https://civicrm.example.org/civicrm/ajax/rest
- To use the clean version of the URL with Joomla, add these likes to the
.htaccess
file user the `` section
# Provide a consistant way to access civicrm content RewriteCond %{REQUEST_URI} ^/civicrm/(.*)$ RewriteRule ^(.*)$ index.php?option=com_civicrm&format=raw&task=$1 [QSA]
- To use the clean version of the URL with Joomla, add these likes to the
- Create a Gravity Form
- Go to the Form Settings and add a Webhook
- Add the CiviCRM API end point to the Request URL with
entity
(e.g. Contact) andaction
(e.g. create) as query string parameters. - Choose
POST
for the Request Method andFORM
for the Request Format. - Enable the CiviCRM API Format
- Add Request Headers to provide authentication with CiviCRM. Out of the box, three are necessary with AuthX.
Authorization: Bearer **API_KEY**
X-Civi-Key: **SITE_KEY**
X-Requested-With: XMLHttpRequest
- Under the Request Body choose to Select Fields.
- Any normal key field will be directly passed to CiviCRM
- Any key that needs pass to CiviCRM in the
json
(v3) orparams
(v4) JSON encoded form value, prependjson.
orparams.
respectively. For example, to send CiviCRM a first name in the request, create the keyjson.first_name
.
- Add the CiviCRM API end point to the Request URL with