Skip to content

HubSpot

The HubSpot nodes connect your workflows to HubSpot through its CRM API v3. Use them to automate your CRM: create a contact when a lead comes in, update a deal as the pipeline advances, search contacts by email, or list companies to process them.

There are six nodes, one per operation:

NodeOperationHTTP method
HubSpot: Create object (hubspotCreateObject)Create an objectPOST /crm/v3/objects/{object_type}
HubSpot: Get object (hubspotGetObject)Read an object by its idGET /crm/v3/objects/{object_type}/{id}
HubSpot: Update object (hubspotUpdateObject)Update propertiesPATCH /crm/v3/objects/{object_type}/{id}
HubSpot: Delete object (hubspotDeleteObject)Archive an objectDELETE /crm/v3/objects/{object_type}/{id}
HubSpot: Search objects (hubspotSearchObjects)Search with filtersPOST /crm/v3/objects/{object_type}/search
HubSpot: List objects (hubspotListObjects)List objectsGET /crm/v3/objects/{object_type}

The nodes use a HubSpot credential. Create it in Credentials → Add → HubSpot with this field:

FieldDescription
Private App tokenThe Private App token, from HubSpot → Settings → Integrations → Private Apps (starts with pat-). Never shown in logs.

HubSpot authentication sends the token in the Authorization header with the Bearer prefix. You can verify the credential with the Test button, which calls GET /crm/v3/objects/contacts?limit=1.

  • Properties (properties) are a flat map, not nested. For example: {"email":"a@b.com","firstname":"Ana"}. Property names are HubSpot’s internal names (firstname, lastname, email, phone, dealname, amount, subject…).
  • The generic CRM object types (object_type) are: contacts, companies, deals and tickets.
  • Delete archives: hubspotDeleteObject does not permanently remove — it archives the object (recoverable from HubSpot). The node returns { "archived": true, "id": ... }.
  • Objects are referenced by id. You can also use a unique property id (e.g. a contact’s email) depending on your HubSpot configuration.

HubSpot: Create object (hubspotCreateObject)

Section titled “HubSpot: Create object (hubspotCreateObject)”
ParameterTypeRequiredDescription
credentials_idcredentialYesHubSpot credential
object_typetextYesObject type (contacts, companies, deals, tickets)
propertiesJSONYesFlat map of properties, e.g. {"email":"a@b.com"}

Output: the created object, including its id and properties.

ParameterTypeRequiredDescription
credentials_idcredentialYesHubSpot credential
object_typetextYesObject type
object_idtextYesObject id
propertiestextNoProperties to return, comma-separated (e.g. email,firstname)

HubSpot: Update object (hubspotUpdateObject)

Section titled “HubSpot: Update object (hubspotUpdateObject)”
ParameterTypeRequiredDescription
credentials_idcredentialYesHubSpot credential
object_typetextYesObject type
object_idtextYesObject id
propertiesJSONYesProperties to update, e.g. {"firstname":"Ana"}

HubSpot: Delete object (hubspotDeleteObject)

Section titled “HubSpot: Delete object (hubspotDeleteObject)”
ParameterTypeRequiredDescription
credentials_idcredentialYesHubSpot credential
object_typetextYesObject type
object_idtextYesid of the object to archive

HubSpot: Search objects (hubspotSearchObjects)

Section titled “HubSpot: Search objects (hubspotSearchObjects)”
ParameterTypeRequiredDescription
credentials_idcredentialYesHubSpot credential
object_typetextYesObject type
searchJSONYesSearch body: filterGroups, query, sorts, properties, limit

Output: the results array with the matching objects.

HubSpot: List objects (hubspotListObjects)

Section titled “HubSpot: List objects (hubspotListObjects)”
ParameterTypeRequiredDescription
credentials_idcredentialYesHubSpot credential
object_typetextYesObject type
limitnumberNoResults per page (max 100)
aftertextNoPagination cursor (paging.next.after)
propertiestextNoProperties to return, comma-separated

Output: the results array of objects.

Create a contact from a form:

  • Node: HubSpot: Create object
  • object_type: contacts
  • properties: {"email":"{{data.email}}","firstname":"{{data.name}}","phone":"{{data.phone}}"}

Output:

{
"id": "701",
"properties": {
"email": "ana@acme.com",
"firstname": "Ana",
"createdate": "2026-08-05T10:00:00.000Z"
},
"createdAt": "2026-08-05T10:00:00.000Z",
"archived": false
}

Search contacts by email:

  • Node: HubSpot: Search objects
  • object_type: contacts
  • search: {"filterGroups":[{"filters":[{"propertyName":"email","operator":"EQ","value":"ana@acme.com"}]}],"properties":["email","firstname"],"limit":10}

Each node classifies errors so the engine knows whether a retry makes sense:

SituationRetryableWhat to do
Validation (400/409)NoHubSpot returns the message and category (e.g. unknown property, or duplicate contact). Fix the data.
Not found (404)NoThe object or type doesn’t exist. Check the id and object_type.
Authentication (401/403)NoInvalid token or missing scopes in the Private App. Check the credential.
Server (500)YesTemporary HubSpot error; retried automatically.
Rate limit (429)YesHubSpot’s Retry-After is honored and retried.
Network / TimeoutYesTransient issue; retried automatically.