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

# GoHighLevel

> Connect a GoHighLevel location to Wave Runner to trigger workflows from contact events and sync CRM data.

The GoHighLevel integration connects a GHL location to Wave Runner using OAuth. Once connected, Wave Runner registers a webhook in your GHL account automatically so contact creation events arrive in real time. Use those events as workflow triggers, write contact updates back to GHL, and route Facebook Lead Ads through your GHL pipeline into Wave Runner workflows.

## Connecting GoHighLevel

<Steps>
  <Step title="Open the integrations page">
    In Wave Runner, click **Settings** in the navbar, then select the **Integrations** tab.
  </Step>

  <Step title="Click Connect on the GoHighLevel card">
    Find the GoHighLevel card in the **CRM** section and click **Connect**. Wave Runner redirects you to the GoHighLevel marketplace authorization screen.
  </Step>

  <Step title="Select a location">
    Choose the location (sub-account) you want to connect. If your GHL account has multiple locations, select the one that corresponds to the contacts you want Wave Runner to access.
  </Step>

  <Step title="Authorize the integration">
    Review the requested permissions and click **Allow**. GoHighLevel redirects you back to Wave Runner.
  </Step>

  <Step title="Confirm the connection">
    The GoHighLevel card status changes to **Connected**, showing the location name. Wave Runner registers a contact-created webhook in GHL in the background.
  </Step>
</Steps>

<Note>
  GoHighLevel's OAuth flow may drop query parameters during the redirect in some browser configurations. Wave Runner uses a fallback cookie mechanism to preserve your session, so the connection completes successfully regardless.
</Note>

<Warning>
  You must have **Agency Admin** or **Location Admin** access for the GHL location you want to connect. Sub-account users without admin rights cannot authorize third-party integrations.
</Warning>

## Trigger events

After connecting, select **GoHighLevel → Contact Created** as the trigger in any Wave Runner workflow. When a new contact is created in your GHL location, Wave Runner executes any active workflow using this trigger immediately.

## CRM action nodes

Add a **GoHighLevel** action node inside any workflow to write data back to your CRM:

* **Create Contact** — creates a new contact in the connected GHL location
* **Update Contact** — updates fields on an existing GHL contact record
* **Add to Campaign** — enrolls the contact in a GoHighLevel campaign sequence
* **Add Tag** — applies a tag to the contact record

## Facebook Lead Ads via GoHighLevel

If you route Facebook Lead Ads through GoHighLevel, Wave Runner captures those leads through the GHL contact-created webhook. When someone submits a Lead Ad form connected to your GHL pipeline, GHL creates a contact and Wave Runner fires the **Contact Created** trigger.

<Tip>
  For direct Facebook Lead Ads integration without GoHighLevel, connect Facebook separately under **Settings → Integrations → Facebook Leads**.
</Tip>

## Contact variables

When a workflow starts from a **GHL Contact Created** event, Wave Runner makes the contact's fields available as variables in any text field.

| Variable         | Description             |
| ---------------- | ----------------------- |
| `{name}`         | Full contact name       |
| `{phone_number}` | Contact's phone number  |
| `{email}`        | Contact's email address |

<Note>
  GHL contact variables are populated from the webhook payload. If a field is empty in GHL, the variable resolves to an empty string.
</Note>

## Two-way contact sync

When Wave Runner receives a GHL contact-created event, it checks whether the contact already exists by matching phone number variants. If a match is found, Wave Runner updates the record. If not, Wave Runner creates the contact and adds it to a **CRM Contacts** list. GoHighLevel is the source of truth when the integration is active.

## Disconnecting GoHighLevel

<Steps>
  <Step title="Open the integrations page">
    Go to **Settings → Integrations**.
  </Step>

  <Step title="Click Configure on the GoHighLevel card">
    The card shows **Configure** when a connection is active.
  </Step>

  <Step title="Remove the connection">
    Click **Disconnect** or the trash icon next to the connection entry. Wave Runner stops receiving webhook events from that GHL location immediately.
  </Step>
</Steps>

<Warning>
  Disconnecting GoHighLevel does not delete your workflows. Workflows using the GHL trigger stop firing until you reconnect a GHL location and redeploy the workflow.
</Warning>
