Reference · Tools

HubSpot

Manage contacts, companies, deals, tickets, engagements, and contact lists in the HubSpot CRM platform.

Action Sales v1

The HubSpot node covers the CRM's main objects — contacts, companies, deals, tickets, engagements and contact lists — with full create, read, update, delete and search. A typical build is enriching a new lead, creating the contact and company, and opening a deal against them in one run.

Node type
Action
Parameters
53
Outputs
Output, Error
Credentials
HubSpot API

HubSpot

Manage contacts, companies, deals, tickets, and engagements in HubSpot CRM.

Overview

The HubSpot tool provides full CRM operations for managing contacts, companies, deals, tickets, engagements (emails, tasks, meetings, calls), and contact lists. It supports create, read, update, delete, search, and bulk list operations across all HubSpot CRM object types. Uses OAuth2 / API key / App Token authentication against the HubSpot API (api.hubapi.com). Supports pagination for large result sets with returnAll/limit parameters. Contact search uses CRM v3 filter groups with property-based filtering.

Category: Sales
Tool Name: hubspot
Version: 1

Appearance: Icon: si-hubspot | Color: #ff7a59

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires HubSpot API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Companycompany
Contactcontact
Contact ListcontactList
Dealdeal
Engagementengagement
Ticketticket

Operations

Which operations are available depends on the selected resource — see the parameter subsections below.

OperationValueDescription
Create or UpdateupsertCreate a contact, or update the existing contact with the same email address.
DeletedeleteDelete a record by its ID.
GetgetRetrieve a single record by its ID.
Get ManygetAllList records, one output item per record.
Get Recently Created/UpdatedgetRecentlyCreatedUpdatedList records that were created or modified recently.
SearchsearchFind records using property filter groups.
CreatecreateCreate a new record.
Search by DomainsearchByDomainFind companies by their website domain.
UpdateupdateUpdate an existing record by its ID.
AddaddAdd a contact to a contact list.
RemoveremoveRemove a contact from a contact list.

Parameters

Company: Create

ParameterTypeRequiredDefaultDescription
NamestringYesThe name of the company.
Company Properties (additionalFields)collectionNo{}
— About UsstringNo
— Annual RevenuenumberNo0
— CitystringNo
— Company Domain NamestringNo
— Company Owner IDstringNoOwner ID.
— Country/RegionstringNo
— Custom Properties (customPropertiesUi)fixedCollectionNo{}
— — Property NamestringNo
— — ValuestringNo
— DescriptionstringNo
— IndustrystringNoIndustry value.
— Is PublicbooleanNofalse
— Lead StatusstringNo
— Lifecycle StatusstringNo
— Number of EmployeesnumberNo0
— Phone NumberstringNo
— Postal CodestringNo
— State/RegionstringNo
— Street AddressstringNo
— Street Address 2stringNo
— TypestringNo
— Website URLstringNo
— Year FoundedstringNo

Company: Delete

ParameterTypeRequiredDefaultDescription
Company IDstringYesThe HubSpot company ID.

Company: Get

ParameterTypeRequiredDefaultDescription
Company IDstringYesThe HubSpot company ID.
Additional FieldscollectionNo{}
— Include Merge AuditsbooleanNofalse

Company: Get Many

ParameterTypeRequiredDefaultDescription
OptionscollectionNo{}
— PropertiesstringNoComma-separated list of property names to return.
— Property ModeoptionsNovalue_only
Options: value_only, value_and_history
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Company: Get Recently Created/Updated

ParameterTypeRequiredDefaultDescription
Additional FieldscollectionNo{}
— SincedateTimeNoOnly return results modified after this date.
— PropertiesstringNo
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Company: Search by Domain

ParameterTypeRequiredDefaultDescription
DomainstringYesWebsite domain to search (without protocol, e.g., “example.com”).
OptionscollectionNo{}
— PropertiesstringNoComma-separated list of property names to include.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Company: Update

ParameterTypeRequiredDefaultDescription
Company IDstringYesThe HubSpot company ID.
Update FieldscollectionNo{}
— NamestringNo
— About UsstringNo
— Annual RevenuenumberNo0
— CitystringNo
— Company Domain NamestringNo
— Company Owner IDstringNo
— Country/RegionstringNo
— Custom Properties (customPropertiesUi)fixedCollectionNo{}
— — Property NamestringNo
— — ValuestringNo
— DescriptionstringNo
— IndustrystringNo
— Lead StatusstringNo
— Lifecycle StatusstringNo
— Number of EmployeesnumberNo0
— Phone NumberstringNo
— Postal CodestringNo
— State/RegionstringNo
— Street AddressstringNo
— TypestringNo
— Website URLstringNo
— Year FoundedstringNo

Contact: Create or Update

ParameterTypeRequiredDefaultDescription
EmailstringYesContact email address (used as unique identifier for upsert).
Contact Properties (additionalFields)collectionNo{}
— Annual RevenuenumberNo0
— Associated Company IDstringNoCompany ID to associate after creation.
— CitystringNo
— Company NamestringNo
— Contact Owner IDstringNoOwner ID. Find via HubSpot Settings > Users & Teams.
— Country/RegionstringNo
— Custom Properties (customPropertiesUi)fixedCollectionNo{}
— — Property NamestringNo
— — ValuestringNo
— DescriptionstringNo
— First NamestringNo
— GenderstringNo
— IndustrystringNo
— Job TitlestringNo
— Last NamestringNo
— Lead StatusstringNoLead status value. Fetch valid values from GET /properties/v2/contacts/properties (hs_lead_status).
— Life Cycle StagestringNoLifecycle stage value (e.g., subscriber, lead, opportunity, customer).
— Mobile Phone NumberstringNo
— Number of EmployeesstringNo
— Original SourcestringNo
— Phone NumberstringNo
— Postal CodestringNo
— State/RegionstringNo
— Street AddressstringNo
— Website URLstringNo
OptionscollectionNo{}
— Resolve DatabooleanNotrueWhether to fetch the full contact profile after upsert.

Contact: Delete

ParameterTypeRequiredDefaultDescription
Contact ID (contactId)stringYesThe VID of the contact.

Contact: Get

ParameterTypeRequiredDefaultDescription
Contact ID (contactId)stringYesThe VID of the contact.
Additional FieldscollectionNo{}
— Form Submission ModeoptionsNoall
Options: all, none, newest, oldest
— List MembershipsbooleanNofalse
— PropertiesstringNoComma-separated list of property names to return.
— Property ModeoptionsNovalue_only
Options: value_only, value_and_history

Contact: Get Many

ParameterTypeRequiredDefaultDescription
Additional FieldscollectionNo{}
— Form Submission ModeoptionsNoall
Options: all, none, newest, oldest
— List MembershipsbooleanNofalse
— PropertiesstringNoComma-separated list of property names to return.
— Property ModeoptionsNovalue_only
Options: value_only, value_and_history
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Contact: Get Recently Created/Updated

ParameterTypeRequiredDefaultDescription
Additional FieldscollectionNo{}
— Form Submission ModeoptionsNoall
Options: all, none, newest, oldest
— List MembershipsbooleanNofalse
— PropertiesstringNoComma-separated list of property names to return.
— Property ModeoptionsNovalue_only
Options: value_only, value_and_history
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
ParameterTypeRequiredDefaultDescription
Filter Groups (filterGroupsUi)fixedCollectionNo{}Filter groups for search (max 3 groups, AND within group, OR across groups).
— FiltersfixedCollectionNo{}
— — Property NamestringNoContact property internal name.
— — OperatoroptionsNoEQ
Options: EQ (equal), NEQ (not equal), LT (less than), LTE (less than or equal), GT (greater than), GTE (greater than or equal), HAS_PROPERTY, NOT_HAS_PROPERTY, CONTAINS_TOKEN, NOT_CONTAINS_TOKEN
— — ValuestringNo
Additional FieldscollectionNo{}
— Sort BystringNocreatedate
— DirectionoptionsNoDESCENDING
Options: ASCENDING, DESCENDING
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Contact List: Add

ParameterTypeRequiredDefaultDescription
List IDstringYesThe ID of the contact list.
ByoptionsYesemailWhether to identify the contact by ID or email.
Options: id (Contact ID), email (Email)
EmailstringYes(shown when By is email)
Contact ID (id)stringYes(shown when By is id)

Contact List: Remove

ParameterTypeRequiredDefaultDescription
List IDstringYesThe ID of the contact list.
Contact ID (id)stringYes

Deal: Create

ParameterTypeRequiredDefaultDescription
Deal Stage (stage)stringYesDeal stage ID. Find via HubSpot Settings > Deals > Pipelines, or GET /crm-pipelines/v1/pipelines/deals.
Deal Properties (additionalFields)collectionNo{}
— AmountstringNo
— Associated Company IDs (associatedCompany)stringNoComma-separated company IDs.
— Associated Contact VIDs (associatedVids)stringNoComma-separated contact VIDs.
— Close DatedateTimeNo
— Custom Properties (customPropertiesUi)fixedCollectionNo{}
— — Property NamestringNo
— — ValuestringNo
— Deal NamestringNo
— Deal Owner IDstringNoOwner ID.
— Deal TypestringNoDeal type value. Find via GET /properties/v1/deals/properties/named/dealtype.
— DescriptionstringNo
— PipelinestringNoPipeline ID. Find via GET /crm/v3/pipelines/deals.

Deal: Delete

ParameterTypeRequiredDefaultDescription
Deal IDstringYesThe HubSpot deal ID.

Deal: Get

ParameterTypeRequiredDefaultDescription
Deal IDstringYesThe HubSpot deal ID.
FilterscollectionNo{}
— Include Property VersionsbooleanNofalse
— PropertiesstringNoComma-separated list of property names to return.

Deal: Get Many

ParameterTypeRequiredDefaultDescription
FilterscollectionNo{}
— Include AssociationsbooleanNofalse
— PropertiesstringNoComma-separated list of property names to return.
— Properties with HistorystringNo
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Deal: Get Recently Created/Updated

ParameterTypeRequiredDefaultDescription
FilterscollectionNo{}
— SincedateTimeNo
— Include Property VersionsbooleanNofalse
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
ParameterTypeRequiredDefaultDescription
Filter Groups (filterGroupsUi)fixedCollectionNo{}
— FiltersfixedCollectionNo{}
— — Property NamestringNo
— — OperatoroptionsNoEQ
Options: EQ (equal), NEQ (not equal), LT (less than), LTE (less than or equal), GT (greater than), GTE (greater than or equal), HAS_PROPERTY, NOT_HAS_PROPERTY, CONTAINS_TOKEN, NOT_CONTAINS_TOKEN
— — ValuestringNo
Additional FieldscollectionNo{}
— Sort BystringNocreatedate
— DirectionoptionsNoDESCENDING
Options: ASCENDING, DESCENDING
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Deal: Update

ParameterTypeRequiredDefaultDescription
Deal IDstringYesThe HubSpot deal ID.
Update FieldscollectionNo{}
— AmountstringNo
— Close DatedateTimeNo
— Custom Properties (customPropertiesUi)fixedCollectionNo{}
— — Property NamestringNo
— — ValuestringNo
— Deal NamestringNo
— Deal Owner IDstringNo
— Deal TypestringNo
— DescriptionstringNo
— PipelinestringNo
— StagestringNo

Engagement: Create

ParameterTypeRequiredDefaultDescription
TypeoptionsYesemailThe type of engagement to create.
Options: call, email, meeting, task
MetadatacollectionNo{}
— Body / NotesstringNo
— SubjectstringNo
— From EmailstringNo(shown when Type is email)
— First NamestringNo(shown when Type is email)
— Last NamestringNo(shown when Type is email)
— CCstringNoComma-separated email addresses. (shown when Type is email)
— BCCstringNo(shown when Type is email)
— HTMLstringNo(shown when Type is email)
— TextstringNo(shown when Type is email)
— StatusoptionsNoNOT_STARTED(shown when Type is task)
Options: NOT_STARTED, IN_PROGRESS, WAITING, COMPLETED, DEFERRED
— For Object TypeoptionsNoCONTACT(shown when Type is task)
Options: CONTACT, COMPANY, DEAL, TICKET
— Start TimedateTimeNo(shown when Type is meeting)
— End TimedateTimeNo(shown when Type is meeting)
— TitlestringNo(shown when Type is meeting)
— Internal Meeting NotesstringNo(shown when Type is meeting)
— To NumberstringNo(shown when Type is call)
— From NumberstringNo(shown when Type is call)
— Duration (ms)numberNo0(shown when Type is call)
— Recording URLstringNo(shown when Type is call)
Additional FieldscollectionNo{}
— AssociationscollectionNo{}
— — Owner IDnumberNo0
— — Company IDsstringNoComma-separated company IDs.
— — Contact IDsstringNoComma-separated contact VIDs.
— — Deal IDsstringNoComma-separated deal IDs.
— — Ticket IDsstringNoComma-separated ticket IDs.

Engagement: Delete

ParameterTypeRequiredDefaultDescription
Engagement IDstringYesThe HubSpot engagement ID.

Engagement: Get

ParameterTypeRequiredDefaultDescription
Engagement IDstringYesThe HubSpot engagement ID.

Engagement: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Ticket: Create

ParameterTypeRequiredDefaultDescription
Pipeline IDstringYesPipeline ID. Find via GET /crm-pipelines/v1/pipelines/tickets.
Stage IDstringYesStage ID within the pipeline.
Ticket NamestringYes
Additional FieldscollectionNo{}
— Associated Company IDsstringNoComma-separated company IDs to associate.
— Associated Contact IDsstringNoComma-separated contact IDs to associate.
— CategorystringNoTicket category value.
— Close DatedateTimeNo
— Create DatedateTimeNo
— DescriptionstringNo
— PrioritystringNoTicket priority value.
— ResolutionstringNo
— SourcestringNo
— Ticket Owner IDstringNo

Ticket: Delete

ParameterTypeRequiredDefaultDescription
Ticket IDstringYes

Ticket: Get

ParameterTypeRequiredDefaultDescription
Ticket IDstringYes
Additional FieldscollectionNo{}
— Include DeletedbooleanNofalse
— PropertiesstringNoComma-separated property names.
— Properties with HistorystringNo

Ticket: Get Many

ParameterTypeRequiredDefaultDescription
Additional FieldscollectionNo{}
— PropertiesstringNo
— Properties with HistorystringNo
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

Ticket: Update

ParameterTypeRequiredDefaultDescription
Ticket IDstringYes
Update FieldscollectionNo{}
— Associated Company IDsstringNo
— Associated Contact IDsstringNo
— CategorystringNo
— Close DatedateTimeNo
— Create DatedateTimeNo
— DescriptionstringNo
— Pipeline IDstringNo
— PrioritystringNo
— ResolutionstringNo
— SourcestringNo
— Stage IDstringNo
— Ticket NamestringNo
— Ticket Owner IDstringNo

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The HubSpot response is merged onto the input item JSON — the fields that arrived on the item stay on it, and any field HubSpot returns under the same name overwrites the incoming one. Binary data on the input item is forwarded unchanged.

How many items come out:

  • Single-record operations — create, upsert, get, update, delete, add, remove — produce exactly one output item per input item.
  • List operations — getAll, getRecentlyCreatedUpdated, search, searchByDomainfan out: one output item per record returned, each carrying a copy of the input item’s fields. A result set with no matches produces no output item at all for that input item, so a downstream node can receive fewer items than this node was sent.

Delete returns no body from HubSpot, so the node emits a confirmation object instead:

{
  "vid": "12345",
  "deleted": true
}

vid is the ID you supplied — Contact ID, Company ID, Deal ID, Engagement ID or Ticket ID.

Everything else is the HubSpot API response spread onto the item exactly as HubSpot returned it; the node does not rename, flatten or filter it, so the available fields are whichever ones your HubSpot portal returns for that object (and whichever ones the Properties option asked for).

OperationWhat lands on the item
upsert (Contact)With Resolve Data on (the default), the full contact profile, carrying isNew from the write. With Resolve Data off, the create/update response.
delete (Contact, Company, Deal, Engagement)The HubSpot response when there is one, otherwise the deleted confirmation shown above.
delete (Ticket)Always the deleted confirmation shown above.
getAll, getRecentlyCreatedUpdated, search, searchByDomainOne item per record, each holding that record as HubSpot returned it.
All other operationsThe HubSpot response object for the single record, spread onto the item.

Reference the result downstream by expression, e.g. {{ $json.vid }}.

Usage Examples

  • Create or update a contact by email
  • Search for contacts by property filters
  • Create a deal in a specific pipeline stage
  • Get all companies with pagination
  • Create a support ticket and associate it with a company
  • Log a meeting engagement with associated contacts
  • Add a contact to a list by email

Example Configuration

Create or update a contact from the email address on the incoming item, then read the full profile back:

{
  "type": "hubspot",
  "parameters": {
    "resource": "contact",
    "operation": "upsert",
    "email": "{{ $json.email }}",
    "additionalFields": {
      "firstName": "John",
      "lastName": "Doe",
      "jobTitle": "Marketing Manager",
      "companyName": "Acme Corp",
      "phoneNumber": "+1-555-0123",
      "city": "New York",
      "customPropertiesUi": {
        "customPropertiesValues": [
          { "property": "lead_source", "value": "website" }
        ]
      }
    },
    "options": {
      "resolveData": true
    }
  }
}

Search contacts by property, newest first, capped at 50 results:

{
  "type": "hubspot",
  "parameters": {
    "resource": "contact",
    "operation": "search",
    "filterGroupsUi": {
      "filterGroupsValues": [
        {
          "filtersUi": {
            "filterValues": [
              {
                "propertyName": "lifecyclestage",
                "operator": "EQ",
                "value": "marketingqualifiedlead"
              }
            ]
          }
        }
      ]
    },
    "additionalFields": {
      "sortBy": "createdate",
      "direction": "DESCENDING"
    },
    "returnAll": false,
    "limit": 50
  }
}

Create a company, naming it from the incoming item:

{
  "type": "hubspot",
  "parameters": {
    "resource": "company",
    "operation": "create",
    "name": "{{ $json.company }}",
    "additionalFields": {
      "companyDomainName": "acme.com",
      "industry": "Technology",
      "numberOfEmployees": 100,
      "annualRevenue": 5000000,
      "city": "San Francisco",
      "stateRegion": "CA",
      "websiteUrl": "https://acme.com"
    }
  }
}

Create a deal in a pipeline stage and associate it with a company:

{
  "type": "hubspot",
  "parameters": {
    "resource": "deal",
    "operation": "create",
    "stage": "appointmentscheduled",
    "additionalFields": {
      "dealName": "Acme Corp - Q1 Contract",
      "amount": "50000",
      "closeDate": "2024-03-31T23:59:59Z",
      "dealOwner": "12345",
      "associatedCompany": "67890",
      "dealType": "newbusiness"
    }
  }
}

Log a meeting engagement against a contact and a company:

{
  "type": "hubspot",
  "parameters": {
    "resource": "engagement",
    "operation": "create",
    "type": "meeting",
    "metadata": {
      "title": "Product Demo with Acme Corp",
      "body": "Product demonstration and requirements discussion",
      "startTime": "2024-02-15T14:00:00Z",
      "endTime": "2024-02-15T15:00:00Z",
      "internalMeetingNotes": "Client showed strong interest in enterprise features"
    },
    "additionalFields": {
      "associations": {
        "contactIds": "12345,67890",
        "companyIds": "54321"
      }
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

HubSpot CRM tool for managing contacts, companies, deals, tickets, and engagements with full CRUD and search support.

Behavior notes

  • Expressions resolve in the identifier fields only. {{ $json.field }} is evaluated for Email, Contact ID, Name, Company ID, Domain, Deal Stage, Deal ID, Type, Engagement ID, List ID, Pipeline ID, Stage ID, Ticket Name and Ticket ID. Anything you type inside a collection — Contact/Company/Deal Properties, Update Fields, Options, Filters, Filter Groups, Metadata — is sent to HubSpot exactly as written, so put expressions in the identifier fields, not in the collections.
  • Engagement Create needs at least one Metadata field. An empty Metadata collection fails the item before any request is made.
  • Search accepts at most three filter groups. Filters inside one group are combined with AND; separate groups are combined with OR.
  • Ticket Get Many reads the whole ticket list and then applies Limit, so a small Limit makes the result shorter but not the call cheaper.

Common Patterns

  • Bulk operations with pagination — for operations that return large datasets, always set Return All or a Limit deliberately, and narrow the payload with the Properties option.
  • Custom properties — the Custom Properties collection works the same way on contacts, companies and deals: one Property Name / Value pair per custom field.
  • Search with multiple filter groups — use several filter groups when you need OR logic between conditions, and several filters inside one group for AND logic.

Error Prevention Tips

  1. Always specify required parameters for each operation type
  2. Use correct data types - strings for IDs, numbers for numeric values, ISO 8601 for dates
  3. Follow collection structures exactly - flat objects for collections, proper groupKeys for fixedCollections
  4. Check display conditions - ensure parameter combinations are valid for the selected resource and operation
  5. Use proper property names - refer to HubSpot documentation for exact custom property internal names

Frequently asked questions

Why is my expression not being evaluated?

Expressions resolve in the identifier fields only — Email, Contact ID, Name, Company ID, Domain, Deal Stage, Deal ID, Type, Engagement ID, List ID, Pipeline ID, Stage ID, Ticket Name and Ticket ID. Anything typed inside a collection such as Properties, Update Fields, Options, Filters or Metadata is sent to HubSpot exactly as written.

How should I set custom property values then?

Put the expression in an identifier field where it resolves, or compute the value upstream and reference it there. Inside the property collections the literal text is transmitted.

Can I search rather than fetch by ID?

Yes — search is supported alongside CRUD, so you can find records by criteria when you do not hold the HubSpot ID.

How do I react to changes in HubSpot?

Use the HubSpot Trigger for inbound events and this node for the follow-up work. They use different credentials: the trigger needs a HubSpot Developer credential, this node a HubSpot API credential.

Build with the HubSpot node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need HubSpot API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.