Webhook tool

GoHighLevel AI voice agents for every client sub-account

Give each client sub-account its own Cartesia agent that answers, qualifies and writes the contact through the HighLevel API with that location's token.

Lead capture agent

Answers calls for a client's business and creates the contact.

Instructions

Greet the caller as the business, learn their name and need, and save them as a contact. Offer to transfer to the owner for urgent requests.

Handoff
Business owner

Connected tools

  • Save contactWebhook
  • Transfer to ownerTransfer

What a GoHighLevel AI voice agent can do

Open one to watch a call. The grey lines are the tools the agent calls mid-sentence.

Each sub-account gets its own agent, phone number and token, so one client's caller data never reaches another client's.

Tool definitions

Webhook tools go to POST /v1/agents/tools. Transfers are a system tool on the agent. Replace the placeholder values in capitals with your own.

Webhook

Save contact

Creates or updates the contact.

Show the JSON definition
upsert_contact
{
  "type": "webhook",
  "name": "upsert_contact",
  "description": "Creates or updates a contact with what the caller shared.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://services.leadconnectorhq.com/contacts/upsert",
    "method": "POST",
    "request_body_schema": {
      "type": "object",
      "properties": {
        "firstName": {
          "type": "string",
          "description": "Caller's first name."
        },
        "phone": {
          "type": "string",
          "dynamic_variable": "system__caller_id"
        },
        "locationId": {
          "type": "string",
          "constant_value": "YOUR_LOCATION_ID"
        },
        "source": {
          "type": "string",
          "constant_value": "Voice agent"
        }
      },
      "required": [
        "firstName"
      ]
    },
    "request_headers": {
      "Version": "v3"
    },
    "authentication": {
      "mode": "bearer",
      "token": {
        "type": "secret",
        "secret_value": "YOUR_PRIVATE_INTEGRATION_TOKEN"
      }
    }
  }
}

Transfer

Transfer to owner

Cold transfer to the owner.

Show the JSON definition
transfer_to_owner
{
  "config": {
    "system_tools": {
      "transfer_to_number": {
        "description": null,
        "pre_tool_speech": "auto",
        "transfers": [
          {
            "destination": {
              "type": "phone",
              "phone_number": "+14155550108"
            },
            "condition": "The caller says it is urgent or asks for the owner."
          }
        ]
      }
    }
  }
}

Set it up

No native connector. The tools call HighLevel's API with a private integration token for the location, and call events can start a workflow. Vendor details read in October 2026.

  1. Create a private integration token

    Create a private integration for the client's sub-account and select only the contact scopes you need.

  2. Add the tool

    Paste the token as a bearer secret and your locationId as a constant, so the model cannot change it.

  3. Optional: trigger a workflow

    Add a post-call webhook to the agent that posts to a small relay, which forwards the call to a workflow's Inbound Webhook trigger.

  4. Test with a number you own

    Call the agent and check the contact.

Before you build

The tool uses the current API version

HighLevel's reference lists Version v3 for the upsert endpoint and marks its 2021-07-28 docs as unmaintained. The upsert follows the location's duplicate-contact setting.

Constants keep tenants apart

Fixing locationId as a constant on the tool means the model cannot write into another location.

Enterprise-grade security

  • HIPAA compliant badge

    HIPAA compliant

  • SOC 2 Type 2 badge

    SOC 2 Type 2

  • GDPR badge

    GDPR

GoHighLevel AI voice agent FAQs

Does GoHighLevel have an AI voice agent?

Yes. HighLevel's Voice AI agents work on LC Phone or Twilio numbers, collect caller details, book appointments and trigger workflows. A Cartesia agent is the alternative when you want to choose the voice and model, or call webhook tools in your own systems alongside HighLevel.

Why use a Cartesia AI voice agent instead of HighLevel's Voice AI?

A Cartesia agent calls webhook tools you define, uses the voice and model you choose, and works the same way on a Cartesia number, a Twilio number or a SIP trunk, so one build serves clients on different carriers. It writes to HighLevel with the contacts upsert endpoint. It runs at $0.03/min, plus LLM usage and telephony.

How do I connect GoHighLevel to an AI voice agent?

Create a private integration for the client's sub-account and select only the contact scopes you need. Paste the token as a bearer secret on the upsert tool and set the location ID as a constant, so the model can't write into another location.

Can a call start a GoHighLevel workflow?

Yes. Add a post-call webhook to the agent and send it through a small relay to a workflow's Inbound Webhook trigger, so a finished call starts the workflow you choose.

Will the agent create duplicate contacts in GoHighLevel?

The tool writes through HighLevel's contacts upsert endpoint, which follows the location's duplicate-contact setting. Whether a repeat caller updates an existing contact or adds a new one depends on that setting in each sub-account.

Get started today

Talk to an expert.

Connect with a member of our team and learn how Cartesia can help you build world-class voice experiences.

Contact Sales

Start building.

Access our models via API and bring a voice agent into production in minutes.

Try Cartesia