Automation Blog

Gravity Forms to Zapier Webhook Workaround

How to connect Gravity Forms to Zapier by sending form submission data as a webhook — using the Gravity Forms Webhooks add-on to POST form field values to a Zapier Catch Hook trigger when the native Zapier add-on isn't an option or doesn't fit your needs.

Gravity FormsZapierWebhooksWordPress

By Troy Tessalone · · 5 minutes

Automation Guide

A practical field guide from Automation Ace.

Gravity Forms to Zapier Webhook Workaround

The native Gravity Forms Zapier add-on requires a paid Gravity Forms license tier and a separate add-on installation. If you're on a plan that doesn't include it, or if you want more control over exactly what data is sent and when, you can route form submissions directly to Zapier using the Gravity Forms Webhooks add-on — included with the Elite and Pro license tiers — or via a lightweight custom function. The result is the same: form data arrives at a Zapier Catch Hook as a structured JSON payload the moment a form is submitted.

Option 1: Gravity Forms Webhooks Add-On (Recommended)

The Gravity Forms Webhooks add-on is the cleanest path. It's included with Gravity Forms Elite and some Pro plans, and it lets you configure a webhook per-form with a visual field mapper — no custom code required.

Step 1: Set Up the Zapier Catch Hook

  1. In Zapier, create a new Zap and choose Webhooks by Zapier as the trigger
  2. Select Catch Hook as the trigger event
  3. Copy the unique webhook URL Zapier provides

Step 2: Configure the Gravity Forms Webhook Feed

  1. In your WordPress admin, go to Forms → [Your Form] → Settings → Webhooks
  2. Click Add New to create a webhook feed
  3. Set the Request URL to your Zapier Catch Hook URL
  4. Set Request Method to POST
  5. Set Request Format to JSON
  6. Under Request Body, choose Select Fields to map specific form fields, or All Fields to send the complete submission
  7. If mapping specific fields, add a row for each: give it a key name (e.g., first_name) and map it to the corresponding form field using the dropdown
  8. Save the feed

Step 3: Test the Connection

  1. In Zapier, click Test trigger so Zapier is listening
  2. Submit a test entry on your Gravity Form
  3. Zapier receives the payload and maps the field keys you configured
  4. Continue building your Zap from there

Option 2: WordPress + wp_remote_post() (No Add-On Required)

If you don't have the Webhooks add-on, you can send the webhook using a small PHP function in your theme's functions.php or a code-snippets plugin:

add_action( 'gform_after_submission', 'send_gf_to_zapier', 10, 2 );

function send_gf_to_zapier( $entry, $form ) {
    // Only fire for a specific form ID — replace 3 with your form ID
    if ( (int) $form['id'] !== 3 ) return;

    $zapier_url = 'https://hooks.zapier.com/hooks/catch/XXXXXX/YYYYYYY/';

    $payload = [
        'form_id'    => $form['id'],
        'entry_id'   => $entry['id'],
        'first_name' => rgar( $entry, '1.3' ),  // field 1, input 3
        'last_name'  => rgar( $entry, '1.6' ),  // field 1, input 6
        'email'      => rgar( $entry, '2' ),     // field 2
        'message'    => rgar( $entry, '3' ),     // field 3
        'date'       => $entry['date_created'],
    ];

    wp_remote_post( $zapier_url, [
        'body'    => wp_json_encode( $payload ),
        'headers' => [ 'Content-Type' => 'application/json' ],
        'timeout' => 10,
    ] );
}

Replace XXXXXX/YYYYYYY with your Catch Hook URL path. The field IDs ('1.3', '2', etc.) correspond to your Gravity Forms field numbers — find them in the Form Editor by hovering over each field, which shows its ID in the bottom left. Use rgar() (Gravity Forms' helper for safe array access) to read entry values without risking PHP errors on missing keys.

Mapping Gravity Forms Field IDs

Gravity Forms uses numeric field IDs. Standard field types:

  • Single-line text, number, email, phone, textarea — accessed as rgar( $entry, 'N' ) where N is the field ID shown in the editor
  • Name field — a compound field. First name is 'N.3', last name is 'N.6' (where N is the field ID)
  • Address field — street is 'N.1', city is 'N.3', state is 'N.4', zip is 'N.5'
  • Checkbox — each option is a separate sub-field ('N.1', 'N.2', etc.); checked values are non-empty strings
  • Drop-down and radio — accessed as rgar( $entry, 'N' ), returns the selected label

To see all field IDs for a submission, temporarily dump $entry in the function or use the Gravity Forms Entry Detail view in the admin.

Conditional Webhook Sending

Both approaches support conditional logic — only send the webhook when certain conditions are met:

// Only send if the lead source is "Referral"
$lead_source = rgar( $entry, '5' );
if ( $lead_source !== 'Referral' ) return;

The Webhooks add-on also has a built-in conditional logic section in the feed settings — set conditions based on any field value without writing code.

What the Zapier Zap Receives

The Catch Hook trigger receives your JSON payload as individual fields. If you included first_name, email, and message in the body, those appear as mappable fields in subsequent Zap steps. No transformation is needed unless you want to reformat values — for date formatting or string manipulation, add a Code step after the trigger.

Comparison: Webhooks Add-On vs. Native Zapier Add-On

The native Gravity Forms Zapier add-on is simpler to configure but creates a dependency on Zapier's polling interval for trigger checks. The Webhooks add-on sends data instantly on submission — the Zap fires the moment the form is submitted, not the next time Zapier polls. For time-sensitive workflows (lead notifications, confirmation emails, CRM record creation), the webhook approach is preferable. For WordPress contact form alternatives, the same webhook pattern applies to Contact Form 7 with Zapier.

The Gravity Forms Webhooks add-on is the most reliable path: configure the feed in the form settings, point it at your Zapier Catch Hook URL, map the fields you want, and submissions arrive at Zapier instantly. If the add-on isn't available on your plan, the gform_after_submission action hook with wp_remote_post() achieves the same result with a small amount of PHP. Either way, you control exactly which fields are sent and under what conditions.

For the Contact Form 7 equivalent of this pattern, see connecting Contact Form 7 to Zapier via webhook. For sending the received data to downstream apps, see passing data through Webhooks in Zapier. For help wiring up a Gravity Forms to Zapier workflow, talk to Automation Ace.

Gravity FormsZapierWebhooksWordPress

Disclaimer: This article may include links to apps, products, or services. Some links may be affiliate links, which means Automation Ace may earn a commission at no extra cost to you.

Build Better Systems

Ready to automate with confidence?

Share your tools, process, and goals. Automation Ace can design the workflow, integration, AI assist, or code bridge that fits your business.

Start a Project