HighLevel icon

CONNECT APP

Build with HighLevel

HighLevel is a subscription-based all-in-one marketing and customer relationship management solution for agencies and professionals.

CRM

  • OAuth

MCP

Give your agent HighLevel tools

Every HighLevel action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's HighLevel account for each tool call — you store no tokens.

// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": "{project_id}",
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "highlevel_oauth",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// e.g. run Add Contact to Campaign:
const result = await mcp.callTool({
  name: "highlevel_oauth-add-contact-to-campaign",
  arguments: {
    contactId: "Contact ID",
    campaignId: "Campaign ID",
  },
})

API PROXY

Call the HighLevel API directly

For an endpoint with no pre-built tool, the Connect proxy forwards your request to the HighLevel API with the connected user's credentials attached. You store no tokens and write no refresh logic.

const resp = await pd.proxy.get({
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  accountId: "apn_xxxxxxx",
  url: "https://api.example.com/v1/me",
})

// Any allowed HighLevel endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.

SDK

Run HighLevel actions from your backend

Connect a user's HighLevel account once, then run Add Contact to Campaign on their behalf from your own code — TypeScript, Python, or plain HTTP.

import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "highlevel_oauth-add-contact-to-campaign",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    highlevel_oauth: { authProvisionId: "apn_xxxxxxx" },
    contactId: "Contact ID",
    campaignId: "Campaign ID",
  },
})

REFERENCE

App details

Reference metadata for the HighLevel connector in the Pipedream registry.

App slug
highlevel_oauth
Authentication
OAuth
Categories
CRM
Actions
6
Triggers
2
API proxy
Available

OAuth scopes

These are the scopes Pipedream's managed HighLevel OAuth client requests when one of your users connects an account. Supply your own OAuth client to request a different set.

  • businesses.readonly
  • businesses.write
  • calendars.write
  • calendars.readonly
  • calendars/events.readonly
  • calendars/events.write
  • campaigns.readonly
  • contacts.readonly
  • contacts.write
  • conversations.readonly
  • conversations.write
  • conversations/message.readonly
  • conversations/message.write
  • forms.readonly
  • links.readonly
  • links.write
  • locations.readonly
  • locations.write
  • locations/customValues.readonly
  • locations/customValues.write
  • locations/customFields.readonly
  • locations/customFields.write
  • locations/tags.readonly
  • locations/tags.write
  • locations/templates.readonly
  • locations/tasks.readonly
  • opportunities.readonly
  • opportunities.write
  • snapshots.readonly
  • surveys.readonly
  • users.readonly
  • users.write
  • workflows.readonly