# HubSpot CRM Integration

This integration allows you to connect Botpress with HubSpot CRM, enabling various CRM operations directly through your chatbot.

Table of Contents

  1. Introduction
  2. Seeing Property IDs
  3. Finding Property IDs
  4. Actions
  5. Search
  6. Using Actions
  7. Properties

Introduction

This guide provides instructions on using HubSpot CRM integration to manage various CRM operations, such as creating, updating, deleting, and searching for contacts, companies, and tickets.

Seeing Property IDs

To view the internal property names for HubSpot properties, refer to the following link: Internal HubSpot Property Names.

Finding Property IDs

You can find the properties and their IDs at this link: HubSpot Property Settings.

Actions

Contacts

  • Get a Contact
  • Create a Contact
  • Delete a Contact
  • Update a Contact
  • Search Contacts

Companies

  • Get a Company
  • Create a Company
  • Delete a Company
  • Update a Company
  • Search Companies

Tickets

  • Get a Ticket
  • Create a Ticket
  • Delete a Ticket
  • Update a Ticket
  • Search Tickets

Deals

  • Get a Deal
  • Create a Deal
  • Delete a Deal
  • Update a Deal
  • Search Deal

Other

  • Make an API Call

Search

Search for Companies

{
  "filterGroups": [
    {
      "filters": [
        {
          "propertyName": "industry",
          "operator": "EQ",
          "value": "Technology"
        }
      ]
    }
  ],
  "sorts": [
    {
      "propertyName": "createdate",
      "direction": "DESCENDING"
    }
  ],
  "properties": ["name", "industry", "annualrevenue"],
  "limit": 100,
  "after": 0
}

Search for Contacts

{
  "filterGroups": [
    {
      "filters": [
        {
          "propertyName": "email",
          "operator": "EQ",
          "value": "example@hubspot.com"
        }
      ]
    }
  ],
  "sorts": [
    {
      "propertyName": "createdate",
      "direction": "DESCENDING"
    }
  ],
  "properties": ["createdate", "firstname", "lastname", "email"],
  "limit": 100,
  "after": 0
}

Search for Tickets

{
  "filterGroups": [
    {
      "filters": [
        {
          "propertyName": "subject",
          "operator": "EQ",
          "value": "Support Needed"
        }
      ]
    }
  ],
  "sorts": [
    {
      "propertyName": "createdate",
      "direction": "DESCENDING"
    }
  ],
  "properties": ["createdate", "subject", "content", "status"],
  "limit": 100,
  "after": 0
}
Search for Deals
{
  "filterGroups": [
    {
      "filters": [
        {
          "propertyName": "amount",
          "operator": "GT",
          "value": "10000"
        },
        {
          "propertyName": "dealstage",
          "operator": "EQ",
          "value": "closedwon"
        }
      ]
    }
  ],
  "sorts": ["amount"],
  "limit": 10
}

Using Actions

Contacts

Get a Contact

To get a contact, simply provide the contact ID.

{
  "contactId": "12345"
}
Create a Contact

When creating a new contact, you should include at least one of the following properties: email, firstname, or lastname. It is recommended to always include email to avoid duplicate contacts in HubSpot.

{
  "properties": {
    "email": "milosarsic14@gmail.com",
    "firstname": "Milos",
    "lastname": "Arsik",
    "phone": "(226) 700-0079",
    "company": "HubSpot",
    "hubspot_owner_id": "117816668"
  }
}
Delete a Contact

To delete a contact, simply provide the contact ID.

{
  "contactId": "12345"
}
Update a Contact

Perform a partial update of a contact identified by {contactId}. {contactId} refers to the internal object ID. Provided property values will be overwritten. Read-only and non-existent properties will be ignored.

{
  "contactId": "12345",
  "properties": {
    "phone": "(226) 700-0080",
    "company": "HubSpot Inc."
  }
}

Companies

Get a Company

To get a company, simply provide the company ID.

{
  "companyId": "67890"
}
Create a Company

When creating a new company, include relevant properties.

{
  "properties": {
    "name": "HubSpot",
    "industry": "Technology",
    "annualrevenue": "1000000"
  }
}
Delete a Company

To delete a company, simply provide the company ID.

{
  "companyId": "67890"
}
Update a Company

Perform a partial update of a company identified by {companyId}. {companyId} refers to the internal object ID. Provided property values will be overwritten. Read-only and non-existent properties will be ignored.

{
  "companyId": "67890",
  "properties": {
    "annualrevenue": "1500000"
  }
}

Tickets

Get a Ticket

To get a ticket, simply provide the ticket ID.

{
  "ticketId": "54321"
}
Create a Ticket

When creating a new ticket, include relevant properties.

{
  "properties": {
    "subject": "Need help with integration",
    "content": "Details about the issue...",
    "status": "open"
  }
}
Delete a Ticket

To delete a ticket, simply provide the ticket ID.

{
  "ticketId": "54321"
}
Update a Ticket

Perform a partial update of a ticket identified by {ticketId}. {ticketId} refers to the internal object ID. Provided property values will be overwritten. Read-only and non-existent properties will be ignored.

{
  "ticketId": "54321",
  "properties": {
    "status": "closed"
  }
}

Deals

Get a Deal

To get a deal, provide the deal ID.

{
  "dealId": "32032106769"
}
Create a Deal
{
  "properties": {
    "dealname": "New Deal",
    "amount": "10000",
    "dealstage": "qualifiedtobuy",
    "closedate": "2025-12-31"
  }
}
Delete a Deal
{
  "dealId": "32032106769"
}
Update a Deal
{
  "dealId": "32032106769",
  "properties": {
    "dealname": "Updated Deal Name",
    "amount": "15000"
  }
}
Update Deal Stage
{
  "dealId": "32032106769",
  "stage": "closedwon"
}

Properties

Properties are the specific fields you want to retrieve for each record. You can specify which properties to include in the response. In the examples above, properties like createdate, firstname, and lastname are requested. You can customize this based on the fields available in your HubSpot account.

Example:

"properties": ["createdate", "firstname", "lastname", "email", "phone"]

Example with Multiple Filter Groups (AND/OR logic)

Example 1: Using AND logic within a filter group
{
  "filterGroups": [
    {
      "filters": [
        {
          "propertyName": "createdate",
          "operator": "GTE",
          "value": "1622505600000"
        },
        {
          "propertyName": "email",
          "operator": "EQ",
          "value": "example@hubspot.com"
        }
      ]
    }
  ],
  "sorts": [
    {
      "propertyName": "createdate",
      "direction": "DESCENDING"
    }
  ],
  "properties": ["createdate", "firstname", "lastname"],
  "limit": 100,
  "after": 0
}
Example 2: Using OR logic between filter groups
{
  "filterGroups": [
    {
      "filters": [
        {
          "propertyName": "createdate",
          "operator": "GTE",
          "value": "1622505600000"
        }
      ]
    },
    {
      "filters": [
        {
          "propertyName": "email",
          "operator": "EQ",
          "value": "example@hubspot.com"
        }
      ]
    }
  ],
  "sorts": [
    {
      "propertyName": "createdate",
      "direction": "DESCENDING"
    }
  ],
  "properties": ["createdate", "firstname", "lastname"],
  "limit": 100,
  "after": 0
}
Example 3: Combining AND and OR logic
{
  "filterGroups": [
    {
      "filters": [
        {
          "propertyName": "createdate",
          "operator": "GTE",
          "value": "1622505600000"
        },
        {
          "propertyName": "email",
          "operator": "EQ",
          "value": "example@hubspot.com"
        }
      ]
    },
    {
      "filters": [
        {
          "propertyName": "firstname",
          "operator": "EQ",
          "value": "Jane"
        }
      ]
    }
  ],
  "sorts": [
    {
      "propertyName": "createdate",
      "direction": "DESCENDING"
    }
  ],
  "properties": ["createdate", "firstname", "lastname"],
  "limit": 100,
  "after": 0
}