> For the complete documentation index, see [llms.txt](https://docs.middle.app/middle-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.middle.app/middle-docs/guides/app-reference/highlevel/integration-guides/gravity-forms.md).

# Gravity Forms

## What this integration does

A single **Gravity Forms Submission to HighLevel** workflow runs from a Gravity Forms Entry and creates or updates the matching HighLevel contact. It syncs the standard contact fields (email, phone, first name, last name) plus any number of custom fields configured per form.

## Identity resolution

The action requires either an email or phone number to be present on the submission. HighLevel treats email and phone as unique identifiers, so passing an existing contact's email or phone updates that contact instead of creating a duplicate.

{% hint style="warning" %}
**Duplicate risk** If a form doesn't collect an email or phone field, or a submitter enters an email/phone that doesn't match their existing contact record, a duplicate contact can be created.
{% endhint %}

## Field mapping

### Defaults

By default, the integration maps First, Last, Email, and Phone.

### Custom properties

Within the feature setup for this integration [Module](/middle-docs/modules.md), you can build out a mapping of Gravity Forms Entry fields with HighLevel properties. The workflow then scans the entry's fields and matches each one by its **label text** (case-insensitive). If no field on the entry matches a given label, that HighLevel field is left blank on the contact.

<figure><img src="/files/tOiZbYtJmvVWwidJed8E" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Because matching is done by label text, renaming a field on the Gravity Form (for example, changing "Page" to "Page Origin") breaks that field's sync until the label is corrected. The First/Last name match also assumes the form uses Gravity Forms' **Name** field type, whose sub-fields default to the labels "First" and "Last." A plain single-line text field labeled anything else won't map to first/last name.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.middle.app/middle-docs/guides/app-reference/highlevel/integration-guides/gravity-forms.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
