> ## Documentation Index
> Fetch the complete documentation index at: https://docs.z360.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect Z360 Forms with WordPress

<iframe src="https://www.youtube.com/embed/uT4UOdITxMY" title="YouTube video player" frameborder="0" className="w-full aspect-video rounded-xl" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen />

You can connect WordPress form builders to Z360 so that every submission automatically creates a lead in a Z360 Form or Pipeline. This guide covers six popular form plugins that support webhooks natively through their settings UI, no custom code needed.

<Note>
  If your form plugin is not listed here, or if it doesn't support custom headers for Pipeline connections, see [Connect Z360 with WordPress using Custom Code](/connect-z360-with-wordpress-custom-code) for a Code Snippets approach that works with any form builder.
</Note>

### **Z360 Endpoints**

Z360 provides two types of endpoints. Both accept flat JSON.

**Forms (Webhook URL — no auth required):**

* URL format: `https://app.z360.biz/webhooks/forms/z360_{uuid}`
* Header: `Content-Type: application/json`
* Field names are **snake\_case**: `first_name`, `last_name`, `email`, `phone`
* Contacts are automatically tagged with "Inbound — Form"
* Found in: **Z360 → Forms** → select form → **Generate Form Links** → Webhook section

**Pipelines (API Endpoint — Bearer auth required):**

* URL format: `https://app.z360.biz/forms/{id}/api`
* Headers: `Content-Type: application/json` and `Authorization: Bearer {your_token}`
* Field names are **Title Case with spaces**: `First Name`, `Last Name`, `Email`, `Phone Number`
* Found in: **Z360 → Pipelines** → select pipeline → three dots → **Generate Link** → API / Webhook tab

<Warning>
  For Pipelines, the pipeline's **communication channel must be enabled**. If disabled, the API endpoint will not process requests and will redirect to the Z360 homepage instead.
</Warning>

### **Field Name Reference**

| Description   | Forms (Webhook) | Pipelines (API) |
| ------------- | --------------- | --------------- |
| First name    | `first_name`    | `First Name`    |
| Last name     | `last_name`     | `Last Name`     |
| Email address | `email`         | `Email`         |
| Phone number  | `phone`         | `Phone Number`  |

All field names are case-sensitive. Always copy them exactly as shown above.

### **Plugin Compatibility**

| Plugin                          | Plan Required       | Forms | Pipelines |
| ------------------------------- | ------------------- | ----- | --------- |
| Contact Form 7 + CF7 to Webhook | Free                | ✅     | ✅         |
| WPForms + Webhooks addon        | Elite               | ✅     | ✅         |
| Fluent Forms                    | Pro                 | ✅     | ✅         |
| Gravity Forms + Webhooks addon  | Elite               | ✅     | ✅         |
| Ninja Forms + Webhooks addon    | Elite or standalone | ✅     | ✅         |
| JetFormBuilder                  | Free                | ✅     | ❌         |

### **Setup by Form Builder**

<AccordionGroup>
  <Accordion title="Contact Form 7 (free)">
    **Required plugin:** [Contact Form 7 to Webhook](https://wordpress.org/plugins/cf7-to-webhook/) (free, by Jeronimo Starter)

    **CF7 Form tab** — note the field tag names (e.g., `first-name`, `last-name`, `email`, `phone`).

    #### Connecting to Z360 Forms

    * Go to the **Webhook** tab and check **"Send to Webhook"**.
    * **Webhook URL:** Paste your Z360 Webhook URL.
    * **Method:** POST
    * **Headers:**
      ```text theme={null}
      Content-Type: application/json
      ```
    * **Body:**
      ```json theme={null}
      {
          "first_name": "[first-name]",
          "last_name": "[last-name]",
          "email": "[email]",
          "phone": "[phone]"
      }
      ```

    #### Connecting to Z360 Pipelines

    * **Webhook URL:** Paste your Z360 API Endpoint URL.
    * **Method:** POST
    * **Headers** (one per line):
      ```text theme={null}
      Content-Type: application/json
      Authorization: Bearer z360_your-token-here
      ```
    * **Body:**
      ```json theme={null}
      {
          "First Name": "[first-name]",
          "Last Name": "[last-name]",
          "Email": "[email]",
          "Phone Number": "[phone]"
      }
      ```

    Replace the CF7 field tags with the actual tag names from your Form tab. Save and test.

    <Warning>
      Do not use curl-style syntax like `-H \"Content-Type: application/json\"`. The plugin expects plain `Key: Value` format, one header per line.
    </Warning>
  </Accordion>

  <Accordion title="WPForms (Elite plan required)">
    **Required:** WPForms **Elite** plan with the **Webhooks** addon activated.

    * Go to **WPForms → Addons** and install the **Webhooks** addon.
    * Open your form in the WPForms builder.
    * Go to **Settings → Webhooks** and toggle **Enable Webhooks** on.
    * Click the pencil icon to name your webhook (e.g., "Z360 Lead").

    #### Connecting to Z360 Forms

    * **Request URL:** Paste your Z360 Webhook URL.
    * **Request Method:** POST
    * **Request Format:** JSON
    * **Request Headers:** Leave empty (no authentication needed).
    * **Request Body:** Select **Select Fields**, then add rows:

    | Key          | Value                          |
    | ------------ | ------------------------------ |
    | `first_name` | (select your First Name field) |
    | `last_name`  | (select your Last Name field)  |
    | `email`      | (select your Email field)      |
    | `phone`      | (select your Phone field)      |

    #### Connecting to Z360 Pipelines

    * **Request URL:** Paste your Z360 API Endpoint URL.
    * **Request Method:** POST
    * **Request Format:** JSON
    * **Request Headers:** Add two rows:

    | Name            | Value                         |
    | --------------- | ----------------------------- |
    | `Content-Type`  | `application/json`            |
    | `Authorization` | `Bearer z360_your-token-here` |

    * **Request Body:** Select **Select Fields**, then add rows:

    | Key            | Value                          |
    | -------------- | ------------------------------ |
    | `First Name`   | (select your First Name field) |
    | `Last Name`    | (select your Last Name field)  |
    | `Email`        | (select your Email field)      |
    | `Phone Number` | (select your Phone field)      |

    Save the form and test a submission.
  </Accordion>

  <Accordion title="Fluent Forms (Pro required)">
    **Required:** Fluent Forms **Pro** plan.

    * Go to **Fluent Forms → Integrations** and enable the **Webhooks** module.
    * Open your form and go to **Settings → WebHook**.
    * Click **+ Add New**.

    #### Connecting to Z360 Forms

    * **Name:** Give it a name (e.g., "Z360 Form").
    * **Request URL:** Paste your Z360 Webhook URL.
    * **Request Method:** POST
    * **Request Format:** JSON
    * **Request Header:** Add one header:

    | Key            | Value              |
    | -------------- | ------------------ |
    | `Content-Type` | `application/json` |

    * **Request Body:** Select **Selected Fields**, then map:

    | Key          | Value                                                 |
    | ------------ | ----------------------------------------------------- |
    | `first_name` | (select your First Name field via SmartCode dropdown) |
    | `last_name`  | (select your Last Name field via SmartCode dropdown)  |
    | `email`      | (select your Email field via SmartCode dropdown)      |
    | `phone`      | (select your Phone field via SmartCode dropdown)      |

    #### Connecting to Z360 Pipelines

    * **Name:** Give it a name (e.g., "Z360 Pipeline").
    * **Request URL:** Paste your Z360 API Endpoint URL.
    * **Request Method:** POST
    * **Request Format:** JSON
    * **Request Header:** Add two headers:

    | Key             | Value                         |
    | --------------- | ----------------------------- |
    | `Content-Type`  | `application/json`            |
    | `Authorization` | `Bearer z360_your-token-here` |

    * **Request Body:** Select **Selected Fields**, then map:

    | Key            | Value                                                 |
    | -------------- | ----------------------------------------------------- |
    | `First Name`   | (select your First Name field via SmartCode dropdown) |
    | `Last Name`    | (select your Last Name field via SmartCode dropdown)  |
    | `Email`        | (select your Email field via SmartCode dropdown)      |
    | `Phone Number` | (select your Phone field via SmartCode dropdown)      |

    Click **Save Feed** and test a submission.
  </Accordion>

  <Accordion title="Gravity Forms (Elite license required)">
    **Required:** Gravity Forms **Elite** license with the **Webhooks** addon activated.

    * Go to **Forms → Add-Ons** and activate the **Webhooks** addon.
    * Open your form and go to **Settings → Webhooks → Add New**.

    #### Connecting to Z360 Forms

    * **Name:** Give it a name (e.g., "Z360 Form").
    * **Request URL:** Paste your Z360 Webhook URL.
    * **Request Method:** POST
    * **Request Format:** JSON (the `Content-Type: application/json` header is set automatically).
    * **Request Headers:** No additional headers needed.
    * **Request Body:** Select **Select Fields**, then add rows:

    | Parameter Name | Value                          |
    | -------------- | ------------------------------ |
    | `first_name`   | (select your First Name field) |
    | `last_name`    | (select your Last Name field)  |
    | `email`        | (select your Email field)      |
    | `phone`        | (select your Phone field)      |

    #### Connecting to Z360 Pipelines

    * **Name:** Give it a name (e.g., "Z360 Pipeline").
    * **Request URL:** Paste your Z360 API Endpoint URL.
    * **Request Method:** POST
    * **Request Format:** JSON
    * **Request Headers:** Add two rows:

    | Name            | Value                         |
    | --------------- | ----------------------------- |
    | `Content-Type`  | `application/json`            |
    | `Authorization` | `Bearer z360_your-token-here` |

    * **Request Body:** Select **Select Fields**, then add rows:

    | Parameter Name | Value                          |
    | -------------- | ------------------------------ |
    | `First Name`   | (select your First Name field) |
    | `Last Name`    | (select your Last Name field)  |
    | `Email`        | (select your Email field)      |
    | `Phone Number` | (select your Phone field)      |

    Click **Save Settings** and test a submission.
  </Accordion>

  <Accordion title="Ninja Forms (Elite membership or standalone addon)">
    **Required:** Ninja Forms **Elite** membership, or the **Webhooks** addon purchased separately.

    * Install and activate the **Webhooks** addon.
    * Open your form and go to **Emails & Actions → Add New Action → Webhooks**.

    #### Connecting to Z360 Forms

    * **Remote URL:** Paste your Z360 Webhook URL.
    * **Remote Method:** POST
    * **Encode as JSON:** Enable this option.
    * **Args (field mapping):** Add rows:

    | Key          | Value                                 |
    | ------------ | ------------------------------------- |
    | `first_name` | (select or map your First Name field) |
    | `last_name`  | (select or map your Last Name field)  |
    | `email`      | (select or map your Email field)      |
    | `phone`      | (select or map your Phone field)      |

    Use the merge tag icon on the right of each field to select the correct form field.

    #### Connecting to Z360 Pipelines

    * **Remote URL:** Paste your Z360 API Endpoint URL.
    * **Remote Method:** POST
    * **Encode as JSON:** Enable this option.
    * **Args (field mapping):** Add rows:

    | Key            | Value                                 |
    | -------------- | ------------------------------------- |
    | `First Name`   | (select or map your First Name field) |
    | `Last Name`    | (select or map your Last Name field)  |
    | `Email`        | (select or map your Email field)      |
    | `Phone Number` | (select or map your Phone field)      |

    You will also need to pass the Bearer token. Add one more row:

    | Key             | Value                         |
    | --------------- | ----------------------------- |
    | `Authorization` | `Bearer z360_your-token-here` |

    Save and test a submission.

    <Note>
      If the Pipeline connection does not work using the Args approach above, use the [Custom Code method](/connect-z360-with-wordpress-custom-code) for Ninja Forms instead, which gives full control over headers and body.
    </Note>
  </Accordion>

  <Accordion title="JetFormBuilder (free — Forms only)">
    **Required:** JetFormBuilder plugin (free, by Crocoblock). No additional addons needed.

    JetFormBuilder has a built-in **Call Webhook** post-submit action. It sends all form field data directly to a URL, but it does not support custom headers or field name mapping. This means it works with **Z360 Forms only** (no auth required), not Pipelines.

    <Warning>
      For Pipelines, JetFormBuilder cannot add the required `Authorization: Bearer` header. Use the [Custom Code method](/connect-z360-with-wordpress-custom-code) or [Bit Integrations](/connect-z360-with-bit-integrations) instead.
    </Warning>

    #### Connecting to Z360 Forms

    **Important:** JetFormBuilder sends data using the form's field names as JSON keys. You must name your form fields to match exactly what Z360 expects.

    **Step 1:** Set your form field names. In the JetFormBuilder editor, click each field and set the **Field Name** to:

    * First Name field → `first_name`
    * Last Name field → `last_name`
    * Email field → `email`
    * Phone field → `phone`

    **Step 2:** Add the webhook action.

    * In the form editor, go to **Post Submit Actions**.
    * Click **+ New Action** and select **Call Webhook**.
    * **Webhook URL:** Paste your Z360 Webhook URL.
    * Click **Update** to save the form.

    **Step 3:** Test a submission and check Z360 for the lead.

    <Note>
      If the field names in your form do not match the Z360 webhook field names exactly (`first_name`, `last_name`, `email`, `phone`), the lead will not be created or will have missing data.
    </Note>
  </Accordion>
</AccordionGroup>

### **Testing Your Integration**

After configuring any of the form builders above:

* Submit the form using a **real phone number** with country code (e.g., `+15551234567`). Z360 validates phone numbers and rejects fake or test numbers.
* Go to Z360 and check that the lead appeared in the correct form or pipeline.
* If you set up an error notification email in your plugin, check it for any webhook failure alerts.

### **Tips**

* Always copy field names and URLs directly from Z360 — do not type them from memory.
* Test with your own email and phone number first before going live.
* If your form plugin has a "send email" option alongside the webhook, keep it enabled during testing as a fallback indicator that the form itself works.
* Each pipeline has its own API endpoint and Bearer token. When connecting multiple pipelines, use the correct endpoint and token for each.

## Frequently Asked Questions

<AccordionGroup>
  <Accordion title="What's the difference between Forms and Pipelines endpoints?">
    The Forms webhook URL creates leads in a standalone Z360 Form. It uses snake\_case field names and no authentication. The Pipelines API endpoint creates leads in a specific pipeline stage. It uses Title Case field names with spaces and requires a Bearer token.
  </Accordion>

  <Accordion title="Which plugins work for free?">
    Contact Form 7 (with the free CF7 to Webhook plugin) supports both Forms and Pipelines for free. JetFormBuilder supports Forms for free. All other plugins require a paid plan or addon for webhook functionality.
  </Accordion>

  <Accordion title="Can I send additional fields beyond the default four?">
    Yes. Add them to the webhook body using the matching field name format — snake\_case for Forms, Title Case for Pipelines — and create a corresponding field in your WordPress form.
  </Accordion>

  <Accordion title="Does the phone number need a country code?">
    Yes. Z360 validates phone numbers and expects them with a country code (e.g., `+1` for US). If your form does not collect the country code, you may need to prepend it before it reaches Z360.
  </Accordion>

  <Accordion title="My plugin isn't listed here. What do I do?">
    If your plugin doesn't support webhooks natively, or can't send custom headers for Pipeline connections, see [Connect Z360 with WordPress using Custom Code](/connect-z360-with-wordpress-custom-code) which works with any form builder using the free Code Snippets plugin.
  </Accordion>
</AccordionGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Form submits with an error message">
    Check that the endpoint URL is correct and the Z360 form or pipeline exists. For CF7, make sure the Headers field uses plain `Key: Value` format — not curl-style syntax with `-H` flags or escaped quotes.
  </Accordion>

  <Accordion title="Form submits successfully but no lead appears in Z360">
    For Forms: verify the Webhook URL matches exactly what Z360 shows in Generate Form Links. For Pipelines: check that the pipeline's communication channel is enabled. When disabled, the API endpoint returns a redirect (HTTP 302) which WordPress treats as a success — no error is shown, but no lead is created.
  </Accordion>

  <Accordion title="Getting a 422 error or phone number rejected">
    Field names do not match what Z360 expects. For Forms, use snake\_case: `first_name`, `last_name`, `email`, `phone`. For Pipelines, use Title Case: `First Name`, `Last Name`, `Email`, `Phone Number`. Also make sure the phone number is real and includes a country code.
  </Accordion>

  <Accordion title="Getting a 401 Unauthorized error (Pipelines only)">
    The Bearer token is incorrect or missing. Copy it again from Z360's API / Webhook tab. Make sure the format is exactly `Bearer z360_your-token-here` with a single space after "Bearer" and no trailing spaces.
  </Accordion>

  <Accordion title="JetFormBuilder sends data but Z360 shows missing fields">
    JetFormBuilder sends data using the form's field names as JSON keys. Make sure each field's **Field Name** is set to exactly `first_name`, `last_name`, `email`, and `phone`. If any name is different (e.g., `name` instead of `first_name`), Z360 will not recognize the field.
  </Accordion>
</AccordionGroup>

📖 **Related articles:**

* [Connect Z360 with WordPress using Custom Code](/connect-z360-with-wordpress-custom-code)
* [Connect Z360 with Bit Integrations](/connect-z360-with-bit-integrations)
* [Connect Z360 with Third-Party Forms via Zapier](/connect-z360-with-third-party-forms-via-zapier)
* [Integrations Overview](/Integrations-overview)
