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

# Create Or Update Contact

> Documentation for the Create Or Update Contact action for GoHighLevel

![images/high\_level.svg](https://mintcdn.com/morfhealth/xO1VSxx3vG_s2CLQ/images/high_level.svg?fit=max\&auto=format\&n=xO1VSxx3vG_s2CLQ\&q=85\&s=c5b1eb9e944689d912b15646bb7f7fa1)

## Getting Started

Connect Morf to your GoHighLevel account to automate contact management, such as creating or updating contacts, applying tags, and syncing custom field values.

## Get access to the API

GoHighLevel uses OAuth2 to authorize Morf. You will connect the integration directly from the Morf Dashboard using the GoHighLevel OAuth flow — no manual credential copying is required.

## Configure GoHighLevel in Morf

1. In the Morf Dashboard, navigate to **Integrations** > **+ Connect Integration**.
2. Select **GoHighLevel** and click **Connect**.
3. You will be redirected to GoHighLevel to authorize access. Log in and approve the connection.
4. Once authorized, you will be returned to Morf and the integration will be active.

# Parameters

**Action** `Parameters`

**parameters**

**Email** `string`

`PII`
The contact's email address. Either Email or Phone must be provided.
This field maps to the destination API `email` field.

**Phone** `string`

`PII`
The contact's phone number. Either Email or Phone must be provided.
This field maps to the destination API `phone` field.

**First Name** `string`

`PII`
This field maps to the destination API `firstName` field.

**Last Name** `string`

`PII`
This field maps to the destination API `lastName` field.

**Name** `string`

`PII`
The contact's full name. This field maps to the destination API `name` field.

**Source** `string`

The attribution source for the contact. This field maps to the destination API `source` field.

**Tags** `List\<string\>`

Tags to apply to the contact. Tags drive GoHighLevel automations. This field maps to the destination API `tags` field.

**Custom Fields** `Map\<Custom Field, dynamic (any)\>`

`PII` `HI` `ID`
Custom field values to set on the contact. Each key is a GoHighLevel custom field ID and the value is the field value to set.
This field maps to the destination API `customFields` field.

```json Result Object Example theme={null}
{
  "$result_object_key": {
    "is_new": true,
    "id": "seD1BFO0FpEfLh8xdBst",
    "location_id": "ve9EPM428h8vShlRW1KT",
    "email": "jane.doe@example.com",
    "phone": "+15550001234",
    "first_name": "Jane",
    "last_name": "Doe",
    "contact_name": "Jane Doe",
    "company_name": "Acme Wellness",
    "source": "morf-workflow",
    "type": "lead",
    "tags": ["new-lead"],
    "custom_fields": [
      { "id": "6dvNaf7VhkQ9snc5vnjJ", "value": "VIP" }
    ],
    "date_added": { "seconds": "1720800000", "nanos": 0 },
    "date_updated": { "seconds": "1720800000", "nanos": 0 }
  }
}
```

```json Result Object Description theme={null}
{
  "$result_object_key": {
    "is_new": "Whether GoHighLevel created a new contact (true) or updated an existing one (false).",
    "id": "The unique identifier assigned by GoHighLevel.",
    "location_id": "The GoHighLevel location (sub-account) the contact belongs to.",
    "email": "The contact's email address.",
    "phone": "The contact's phone number.",
    "first_name": "The contact's first name.",
    "last_name": "The contact's last name.",
    "contact_name": "The contact's full name as computed by GoHighLevel.",
    "company_name": "The company name associated with the contact.",
    "source": "The attribution source recorded for the contact.",
    "type": "The contact type in GoHighLevel.",
    "tags": "The tags currently applied to the contact.",
    "custom_fields": "The custom field values set on the contact.",
    "date_added": "The time when the contact was created.",
    "date_updated": "The time when the contact was last updated."
  }
}
```

### Result Object Field Details

You can use the result of the action's data as inputs to downstream workflow actions.

Each fetch action requires a result object key to be specified which will nest the action's result data inside the downstream data context in the Workflow.

Here we demonstrate how to refer to this data using the prefix `$result_object_key`.

**Contact** `Fetch Action Response Object`

**fields**

**is\_new** `bool`

Whether GoHighLevel created a new contact (true) or updated an existing one (false).

```json CEL theme={null}
$result_object_key.is_new
```

```json Example theme={null}
true
```

**id** `string` *required*

`ID` The unique identifier assigned by GoHighLevel.

```json CEL theme={null}
$result_object_key.id
```

```json Example theme={null}
"seD1BFO0FpEfLh8xdBst"
```

**location\_id** `string` *required*

The GoHighLevel location (sub-account) the contact belongs to.

```json CEL theme={null}
$result_object_key.location_id
```

```json Example theme={null}
"ve9EPM428h8vShlRW1KT"
```

**email** `string`

`PII` The contact's email address.

```json CEL theme={null}
$result_object_key.email
```

```json Example theme={null}
"jane.doe@example.com"
```

**phone** `string`

`PII` The contact's phone number.

```json CEL theme={null}
$result_object_key.phone
```

```json Example theme={null}
"+15550001234"
```

**first\_name** `string`

`PII` The contact's first name.

```json CEL theme={null}
$result_object_key.first_name
```

```json Example theme={null}
"Jane"
```

**last\_name** `string`

`PII` The contact's last name.

```json CEL theme={null}
$result_object_key.last_name
```

```json Example theme={null}
"Doe"
```

**contact\_name** `string`

`PII` The contact's full name as computed by GoHighLevel.

```json CEL theme={null}
$result_object_key.contact_name
```

```json Example theme={null}
"Jane Doe"
```

**company\_name** `string`

The company name associated with the contact.

```json CEL theme={null}
$result_object_key.company_name
```

```json Example theme={null}
"Acme Wellness"
```

**source** `string`

The attribution source recorded for the contact.

```json CEL theme={null}
$result_object_key.source
```

```json Example theme={null}
"morf-workflow"
```

**type** `string`

The contact type in GoHighLevel.

```json CEL theme={null}
$result_object_key.type
```

```json Example theme={null}
"lead"
```

**tags** `List\<string\>`

The tags currently applied to the contact.

```json CEL theme={null}
$result_object_key.tags
```

```json Example theme={null}
["new-lead"]
```

**custom\_fields** `List\<CustomField\>`

The custom field values set on the contact. Each entry has an `id` and a `value`.

```json CEL theme={null}
$result_object_key.custom_fields
```

```json Example theme={null}
[{ "id": "6dvNaf7VhkQ9snc5vnjJ", "value": "VIP" }]
```

**date\_added** `Timestamp`

The time when the contact was created. Shape: `{ "seconds": "...", "nanos": ... }`.

```json CEL theme={null}
$result_object_key.date_added
```

```json Example theme={null}
{ "seconds": "1720800000", "nanos": 0 }
```

**date\_updated** `Timestamp`

The time when the contact was last updated. Shape: `{ "seconds": "...", "nanos": ... }`.

```json CEL theme={null}
$result_object_key.date_updated
```

```json Example theme={null}
{ "seconds": "1720800000", "nanos": 0 }
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.