Create Opportunity
highlevel.create_opportunity
ActionCRM & salesconnection required
Calls the HighLevel API with the connection's credentials.
Create an opportunity in a pipeline stage for a contact.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- OAuth 2.0
- Providers
- HighLevel
- Secret shape
- {"client_id": "…", "client_secret": "…", "refresh_token": "…"} for a marketplace app, or {"access_token": "…"} for a Private Integration Token
- Config it needs
- location_id, user_type, base_url
- Resolved by
- config.connection_id, else node.connection_id
Configuration
9 fields, 4 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
name Opportunity name. | string | Yes | — | — | — |
pipeline_id The pipeline it belongs in, from highlevel.list_pipelines. | string | Yes | — | — | — |
contact_id The contact the opportunity is for. | string | Yes | — | — | — |
status Starting status; HighLevel requires one on every create, and a new deal is normally open. | string | Yes | — | one of "open", "won", "lost", "abandoned" | open |
pipeline_stage_id The stage within the pipeline; HighLevel uses the first stage when this is blank. | string | No | — | — | — |
monetary_value Deal value, in the sub-account's currency. | number | No | — | ≥ 0 | — |
assigned_to User id to assign it to. | string | No | — | — | — |
custom_fields HighLevel's customFields list, as JSON — one entry per field, each with the field's id (or key) and its value. | array | No | — | array of object | — |
location_id Sub-account (location) id to act on instead of the connection's own. | string | No | — | — | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"status": "open"
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
id The opportunity id. | string | — |
name Opportunity name. | string | — |
monetaryValue Deal value. | number | — |
pipelineId The pipeline it sits in. | string | — |
pipelineStageId The stage it sits in. | string | — |
status open, won, lost or abandoned. | string | — |
contactId The contact it belongs to. | string | — |
locationId The sub-account it belongs to. | string | — |
assignedTo User id it is assigned to. | string | — |
createdAt When it was created (ISO-8601). | string | — |
updatedAt When it last changed (ISO-8601). | string | — |
{
"assignedTo": "",
"contactId": "",
"createdAt": "",
"id": "",
"locationId": "",
"monetaryValue": 0,
"name": "",
"pipelineId": "",
"pipelineStageId": "",
"status": "",
"updatedAt": ""
}Notes
- Scoped to the connection's location_id (the sub-account) unless the node overrides it.
See Create Opportunity run in a workflow.
In a technical demo we add the HighLevel connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.