Skip to main content
hubspot icon

HubSpot Connector

SourceAPI DocsAPI ChangelogConnector Changelog

Description

HubSpot is a Customer Relationship Management software for inbound marketing, sales, and customer service. Manage contacts, companies, deals, products, engagements, and custom objects in HubSpot.

API Documentation

This component was built using the HubSpot API Documentation currently utilizing v3

Documentation for HubSpot's REST API used in this component can be found at the HubSpot API Documentation.

tip

If a HubSpot API endpoint does not have a corresponding action within this component, the Raw Request action can make a request to any HubSpot API endpoint.

Processing HubSpot events in real-time

HubSpot requires a single webhook URL per app, and sends all customer events to that URL. To detect and process changes to customer HubSpot accounts in real-time, see the Single-Endpoint Webhook Integrations guide on handling webhook requests from apps that require a single webhook endpoint.

Connections

Webhook Authentication

key: hubspotOAuthTrigger

The Webhook Authentication connection is used specifically for verifying HubSpot webhook signatures to ensure webhook requests are legitimate.

This connection is only used for webhook triggers and does not grant API access. It solely validates that incoming webhooks are from HubSpot by verifying the request signature.

Prerequisites

  • Access to a HubSpot account
  • A super admin user, which HubSpot requires for access to private apps
  • A HubSpot app configured to deliver webhooks

Both private apps and public apps have a client secret, and HubSpot signs each app's webhook requests with that app's own secret. Use the secret belonging to whichever app delivers the webhooks.

Setup Steps

To copy the client secret from a legacy private app:

  1. Navigate to HubSpot and log in
  2. Navigate to Development, then click Legacy apps in the left sidebar menu
  3. Click the name of the app, or click Create legacy app in the top right and select Private to create one
  4. Click the Auth tab
  5. Next to Client secret, click Show secret, then copy the value

For a legacy public app, open the app from the Apps dashboard in the HubSpot developer account and copy the Client Secret from its Auth tab.

Configure the Connection

  • Enter the Client Secret from the HubSpot app into the connection configuration
  • The client secret is used to verify webhook signatures
  • Ensure the trigger is configured to use the Webhook Authentication connection

Webhook Subscriptions

After configuring the connection, webhook subscriptions must be set up. In a legacy private app, subscriptions are managed in the app settings and cannot be edited through an API:

  1. On the app details page, click the Webhooks tab
  2. Under Target URL, enter the URL that HubSpot will send webhook events to (found in the Test Configuration > Trigger Payload section of the integration)
  3. Click Create subscription
  4. In the right panel, select the object types to subscribe to, then select the events for those objects (for example created, merged, or deleted)
  5. If Property changed is selected, also select the properties to watch for changes
  6. Click Subscribe

Selecting an object type that needs a scope the app has not authorized prompts for that scope to be added.

InputNotesExample
Client Secret

The Client Secret from the HubSpot app, used to verify webhook signatures.

OAuth 2.0

key: oauth2

To connect to HubSpot using OAuth 2.0, create an app in the HubSpot developer platform using the HubSpot CLI. An existing legacy app created through the web interface can also be used, though legacy public apps can no longer be created.

Refer to the HubSpot app creation guide and quick reference guide for detailed information.

Creating an App via the CLI

The CLI-based approach is recommended for new HubSpot OAuth integrations as it provides access to the latest features and platform improvements.

Prerequisites

  • A HubSpot developer account is required
  • Node.js v20 or higher and npm installed (for CLI-based app creation)
  • HubSpot CLI version 7.6.0 or higher (installing the latest version is recommended)

Setup Steps

  1. Install the HubSpot CLI:

    npm install -g @hubspot/cli
  2. Authenticate the CLI with a HubSpot developer account:

    hs account auth
  3. Create a new app project:

    hs project create
    • Select App as the project template
    • Choose the distribution type (marketplace or private/specific accounts)
    • Select OAuth as the authentication method
    • Optionally select app features (Card, App Function, Settings, Webhooks, Custom Workflow Action)
  4. Configure the app by editing the generated app-hsmeta.json file (located at src/app/app-hsmeta.json within the project directory):

    • Update the name and description fields
    • In the auth section, add https://oauth2.prismatic.io/callback to the redirectUrls array
    • Update the requiredScopes array with the OAuth permissions the integration needs. Permissions a user may decline belong in optionalScopes, and those required only for particular features belong in conditionallyRequiredScopes
  5. Upload the app project to HubSpot:

    hs project upload
    Directory Error

    If the error [ERROR] Unable to locate a project configuration file appears, change to the project folder where the app was created and run the command again.

  6. Open the project in the HubSpot developer portal:

    hs project open
  7. Navigate to the Auth tab in the developer portal

  8. Copy the Client ID and Client Secret from the Auth page

Configure the Connection

  • Enter the Client ID and Client Secret from the app's Auth page
  • For Scopes, choose from the available scopes based on integration needs
Recommended Scopes

The following scopes provide comprehensive access to HubSpot CRM functionality that this component supports:

CategoryScopeDescription
EssentialoauthRequired for all OAuth apps (cannot be removed)
Essentialcrm.objects.owners.readRead owner information
CRM Objectscrm.objects.contacts.readRead contacts
CRM Objectscrm.objects.contacts.writeCreate/update contacts
CRM Objectscrm.objects.companies.readRead companies
CRM Objectscrm.objects.companies.writeCreate/update companies
CRM Objectscrm.objects.deals.readRead deals
CRM Objectscrm.objects.deals.writeCreate/update deals
CRM Objectscrm.objects.custom.readRead custom objects
CRM Objectscrm.objects.custom.writeCreate/update custom objects
Additional Objectscrm.objects.line_items.readRead line items
Additional Objectscrm.objects.line_items.writeCreate/update line items
Additional Objectscrm.objects.quotes.readRead quotes
Additional Objectscrm.objects.quotes.writeCreate/update quotes
Additional ObjectsticketsTicket management
Schemascrm.schemas.contacts.readContact property definitions
Schemascrm.schemas.companies.readCompany property definitions
Schemascrm.schemas.deals.readDeal property definitions

Example minimal scope configuration:

crm.objects.contacts.read crm.objects.contacts.write crm.objects.deals.read crm.objects.deals.write crm.objects.owners.read

For a complete list of available scopes, refer to the HubSpot OAuth scopes documentation.

Using an Existing Legacy App

Legacy App Creation Has Ended

As of June 23, 2026, legacy public apps can no longer be created. HubSpot disabled creation for developer accounts created on or after May 26, 2026 first, then for all remaining accounts on June 23, 2026. See the legacy public app creation sunset announcement.

Existing legacy public apps continue to be supported and can still be used with this connection. New apps must be created with the CLI-based approach described above.

An app created before HubSpot's 2025.2 platform release is a legacy app. To use one with this connection:

  1. In the HubSpot developer account, navigate to Apps, then click the name of the app
  2. Navigate to the app's Auth tab
  3. Under Redirect URLs, add https://oauth2.prismatic.io/callback
  4. Configure the required scopes for the integration in the Scopes section
  5. Copy the Client ID, Client Secret, and App ID from the Auth page

Configure the Connection

  • Enter the Client ID and Client Secret from the app's Auth page
  • Configure scopes as needed (see Recommended Scopes above)

Webhook Support

The App ID and Developer API Key fields are optional and are used only by the webhook actions and the Event Type Subscription trigger. Leave them empty for an integration that does not manage webhook subscriptions.

  • App ID appears below the app name in the developer account's Apps dashboard, and on the app's Auth tab
  • Developer API Key is available in the developer overview of the HubSpot developer account
Webhook subscription management requires a legacy public app

The webhook actions and the Event Type Subscription trigger call HubSpot's webhooks v3 subscription API, which HubSpot supports only for legacy public apps. Since legacy public apps can no longer be created, an app created with the CLI cannot use them.

A CLI-created app configures webhooks declaratively in the project, or through the webhooks journal and management APIs, which authenticate with a client credentials token rather than a developer API key. This component does not use either mechanism.

The Webhook trigger is unaffected, because it only receives and verifies incoming requests rather than creating subscriptions. It pairs with the Webhook Authentication connection and works with any app that can deliver webhooks to a URL. The New and Updated Records and New and Updated Custom Records polling triggers are also unaffected and need no app-level webhook configuration.

App Distribution

HubSpot OAuth apps declare a distribution type that determines who can install the integration and whether a formal HubSpot review is required. Choosing the right one before building the app avoids reworking its configuration and, for a marketplace app, a second review.

The distribution type selected during hs project create determines who can install the app and whether a review process applies.

Private or specific accounts (no review required): The app is accessible only to HubSpot accounts explicitly added. Users from other HubSpot accounts cannot install it. To add accounts, navigate to the app's Distribution settings in the developer portal and enter each account's hub ID. This is the appropriate option for single-customer integrations or internal tools.

HubSpot App Marketplace (HubSpot review required): The app is publicly listed in the HubSpot App Marketplace and any HubSpot customer can install it. HubSpot reviews marketplace submissions for quality, security, and functionality before listing.

For integrations deployed to multiple customers, each with their own HubSpot account, the marketplace path is the scalable option. For single-organization deployments, the private/specific accounts path avoids the review process entirely.

InputNotesExample
App ID

The App ID from the HubSpot Developer Console. Required for Webhooks.

123456
Authorize URL

The OAuth 2.0 Authorization URL for HubSpot. Optional scopes can be appended to the URL.

https://app.hubspot.com/oauth/authorize?optional_scope=crm.lists.read content
Client ID

The Client ID from the HubSpot app. Found in HubSpot Developer Account > Apps > Auth.

12345678-1234-1234-1234-123456789abc
Client Secret

The Client Secret from the HubSpot app. Keep this value secure.

Developer API Key

The Developer API Key from the HubSpot Developer Console. Required for Webhooks.

Scopes

OAuth permission scopes. See HubSpot scopes for available scopes.

crm.objects.contacts.read crm.objects.deals.read
Token URL

The OAuth 2.0 Token URL for HubSpot.

https://api.hubapi.com/oauth/v3/token

Private App Access Token or Service Key

key: privateAppAccessToken

This connection authenticates with either a private app access token or an account service key. Both are entered in the same field and are sent as bearer tokens, so either credential works for every action in this component.

Service keys are HubSpot's recommended credential for new system-to-system integrations. Private app access tokens remain supported for integrations already built against them.

Webhook Triggers Require OAuth 2.0

Neither credential can configure webhook subscriptions over the API. The Event Type Subscription trigger needs the App ID and Developer API Key carried by the OAuth 2.0 connection, and will fail at runtime if given this connection instead.

Neither credential expires. A private app access token can be revoked at any time from the HubSpot account settings, and a service key can be rotated or deleted from its details page.

Legacy Private App Creation Is Ending

HubSpot is retiring the ability to create new legacy private apps. Which deadline applies depends on when the HubSpot account was created:

  • Accounts created before September 28, 2026 can still create a legacy private app, but only until October 26, 2026.
  • Accounts created on or after September 28, 2026 cannot create one at all.

Existing legacy private apps and their access tokens keep working. See the legacy private app creation sunset announcement.

Use a service key for new integrations, following the steps below.

Prerequisites

  • Access to a HubSpot account
  • A super admin user, which HubSpot requires for access to private apps. A service key can also be created by a user with the Developer tools access permission.

Setup Steps

Follow whichever set of steps matches the credential being used.

Create a Service Key
  1. Navigate to HubSpot and log in
  2. Navigate to Development, then click Keys, then Service keys in the left sidebar menu
  3. In the top right, click Create service key
  4. Enter a name for the key
  5. Click Add new scope, select each scope the integration requires, then click Update
  6. Click Create in the top right, then confirm
  7. Click the name of the new service key, click Show, then click Copy
Create a Legacy Private App Access Token

To generate a private app access token:

  1. Navigate to HubSpot and log in
  2. Navigate to Development, then click Legacy apps in the left sidebar menu
  3. In the top right, click Create legacy app, then select Private in the dialog box
  4. On the Basic Info tab, enter a name for the app
  5. Click the Scopes tab, click Add new scope, then select each scope the integration requires
  6. Click Create app in the top right, then click Continue creating
  7. On the app details page, click the Auth tab, click Show token, then click Copy

Configure the Connection

Enter the copied service key or private app access token into Access Token or Service Key.

InputNotesExample
Access Token or Service Key

A private app access token or an account service key. Service keys are HubSpot's recommended credential for new system-to-system integrations. Neither credential can configure webhook subscriptions over the API, so the Event Type Subscription trigger requires the OAuth 2.0 connection instead.

Triggers

Event Type Subscription

Receive CRM event notifications from HubSpot. Automatically creates and manages a webhook subscription for selected event types when the instance is deployed, and removes the subscription when the instance is deleted. | key: eventTypeSubscription

InputNotesExample
Event Types

Events to listen for. Make sure to have the right permissions.

Connection

The connection to use for authenticating requests to HubSpot.

Overwrite Webhook Settings

When true, overwrites existing webhook settings. HubSpot only permits one Target URL per App ID.

false
Property Change Properties

Add one key-value pair per property change event type. The key is the event type (e.g. contact.propertyChange) and the value is a comma-separated list of the property names to monitor (e.g. email,firstname).

{"contact.propertyChange": "email,firstname"}

The Event Type Subscription trigger can manage HubSpot webhook subscriptions for an instance. Unlike the Webhook trigger that requires manual configuration in the HubSpot Developer Console, this trigger handles the entire webhook lifecycle automatically.

When the trigger is used in a flow:

  • On Instance Deploy: The trigger automatically creates webhook subscription configurations in the HubSpot app for the selected event types (contact creation, deal updates, etc.). The webhook target URL is set to the instance's unique webhook URL. If webhook settings already exist for the app and the overwrite option is disabled, the trigger will throw an error to prevent accidental changes. If overwrite is enabled, existing settings are replaced with the new configuration.
  • On Instance Deletion: The trigger automatically removes webhook subscriptions and settings from the HubSpot app if the webhook URL matches the instance being deleted. This ensures no orphaned webhook configurations remain after instance cleanup.

Configuration Requirements

This trigger requires a HubSpot OAuth 2.0 connection with the following values from the HubSpot Developer Console:

  • Client ID and Client Secret - OAuth credentials for authentication
  • App ID - The numeric application ID from the developer console
  • Developer API Key - The developer API key for managing webhook subscriptions
  • OAuth Scopes - Required scopes for the events being subscribed to (e.g., crm.objects.contacts.read for contact events)

Event Types Configuration

When configuring the trigger, select which HubSpot events should trigger the flow. Available event types include:

CRM Object Events:

  • Contact events: contact.creation, contact.deletion, contact.propertyChange, contact.associationChange
  • Company events: company.creation, company.deletion, company.propertyChange, company.associationChange
  • Deal events: deal.creation, deal.deletion, deal.propertyChange, deal.associationChange
  • Ticket, product, and line item events follow the same patterns

Property-Specific Events: For propertyChange events, individual property names can optionally be specified to monitor (e.g., only trigger when the email or phone property changes).

A full list of available webhook events and required OAuth scopes is available in the HubSpot Webhooks API documentation.

Overwrite Settings

HubSpot limits webhooks to a single URL per app. Therefore, the Overwrite Webhook Settings input controls behavior when webhook configurations already exist for the HubSpot app. This is disabled by default, but when enabled, existing webhook settings are deleted and replaced with the new configuration from this trigger.

tip

When multiple instances use the same HubSpot app, coordinate the overwrite setting carefully. Enabling overwrite in one instance will affect webhook configurations for all instances using the app.

Example Payload for Event Type Subscription
Loading…

New and Updated Custom Records

Retrieves existing and ongoing records for a specified HubSpot custom object type. Load history once, check for changes on a schedule, or both. | key: pollChangesCustomObjectsTrigger

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Look-back Date

The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the initial sync seeds each record created on or after this date once, ignoring the visibility toggles.

2026-01-01
Object Type

The type of custom object to search for.

deal
Search Properties

Include properties such as filters and sorts, or specify the properties to be returned. If empty, only the default properties will be returned. On the polling triggers, sorts is ignored (they sort by the object's last-modified property ascending so polling can resume) and filters/filterGroups are combined with the recurrence's date window using AND. For more information, see HubSpot CRM Search API.

{
  "sorts": [
    {
      "propertyName": "createdate",
      "direction": "DESCENDING"
    }
  ]
}
Show New Records

When true, includes new records in the results.

true
Show Updated Records

When true, includes updated records in the results.

true

See New and Updated Records for complete instructions.

This trigger works identically to New and Updated Records, with the difference being it monitors custom HubSpot objects instead of standard objects. The custom object type must expose a hs_lastmodifieddate property, since that is what this trigger filters and sorts on.

Example Payload for New and Updated Custom Records
Loading…

New and Updated Records

Retrieves existing and ongoing records for a specified HubSpot object type. Load history once, check for changes on a schedule, or both. | key: pollChangesTrigger

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Look-back Date

The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the initial sync seeds each record created on or after this date once, ignoring the visibility toggles.

2026-01-01
Search Endpoint

The endpoint to search for objects or engagements. For Custom objects don't forget to fill the Object Type input.

Search Properties

Include properties such as filters and sorts, or specify the properties to be returned. If empty, only the default properties will be returned. On the polling triggers, sorts is ignored (they sort by the object's last-modified property ascending so polling can resume) and filters/filterGroups are combined with the recurrence's date window using AND. For more information, see HubSpot CRM Search API.

{
  "sorts": [
    {
      "propertyName": "createdate",
      "direction": "DESCENDING"
    }
  ]
}
Show New Records

When true, includes new records in the results.

true
Show Updated Records

When true, includes updated records in the results.

true

This component provides two polling triggers that retrieve existing and ongoing CRM records. Both can load history once, check for changes on a schedule, or both, and they work identically. The main difference is which types of objects they monitor.

New and Updated Records - Use for standard HubSpot objects:

  • Companies, Contacts, Deals, Tickets, Products, Line Items, Quotes, Feedback Submissions
  • Calls, Emails, Meetings, Notes, Tasks

New and Updated Custom Records - Use for custom objects:

  • Custom object types created in HubSpot
  • Requires specifying the custom object type name

How It Works

On each recurrence both triggers search HubSpot using the Search API for records whose last-modified property falls after the trigger's stored position, classify each as created or updated by comparing its created and last-modified timestamps against that window, and return them oldest-first. A record created and later modified within the same window appears in both lists.

Each recurrence stores where its page ended, so the next one continues from there rather than repeating it. A single HubSpot search returns at most 10,000 results; when a window holds more than that, the trigger drains up to 10,000 per recurrence without batching (or up to 1,000 per round with batching, keeping each delivered payload small) and resumes the same window rather than skipping the remainder. With batching enabled it also resumes immediately inside the same recurrence instead of waiting for the schedule.

The first recurrence

  • Look-back Date empty: the trigger records the current time and reports nothing. Incremental polling begins on the next recurrence.
  • Look-back Date set: the trigger begins a one-time initial sync covering everything created on or after that date, seeding each record exactly once. With batching enabled the sync finishes within this recurrence; without batching it continues across following recurrences until its window is exhausted, and those recurrences are still part of the sync.

During an initial sync

Some inputs are ignored so that every intended record is retrieved: the sync seeds a complete starting state. The inputs that control which records are searched still apply, and the ignored ones take effect again once regular polling begins.

IgnoredStill applied
Show New RecordsSearch Properties
Show Updated Records

Every record the sync returns was created on or after the Look-back Date, so all are reported as new and the sync produces no updated records. It matches on the creation date, so retrieving every record means setting Look-back Date earlier than the oldest record's creation date.

Batching

Batching is enabled per flow on these triggers. Once enabled, each changed record is dispatched as its own execution, or grouped by the configured batch size. Batch size and the number of batches dispatched concurrently can both be overridden per instance. Raising concurrency increases the request volume sent to HubSpot.

To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default to use the size this trigger ships with, or choose Custom batch size to set a specific size. Batch Concurrency is optional; leave it blank for no batch-level limit.

Enabling batching changes the payload a downstream step receives. With batching off a step reads data.createdRecords and data.updatedRecords; with batching on those arrays do not exist and data is a single changeType/record item, or an array of them (see Returned Data with Batching). Any step reading the older shape must be updated before batching is turned on. Because batching is per flow, this affects only that flow, not the component or other flows using the same trigger.

Handing off to the schedule

The initial sync's upper bound is fixed when it begins, so records changed while running are not part of it. No field in the payload marks the handoff. Once the window is exhausted the trigger stores that bound as its position, and the next recurrence resumes from exactly there with every input applied, so the handoff is seamless: a record at the boundary is delivered exactly once.

Filtering with Search Properties

filters and filterGroups in Search Properties are combined with the trigger's own date window using AND, so they narrow the results the trigger would otherwise return. A filter on dealstage, for example, only ever returns deals in that stage. They apply to the initial sync exactly as they do to every later recurrence.

sorts in Search Properties is ignored by these triggers. They always sort by the object's last-modified property in ascending order, which is what lets them resume from their last position on the next recurrence.

Returned Data

Both triggers return the same structure with separate arrays for created and updated records. Both keys are always present, so an array is empty rather than missing when its Show New Records / Show Updated Records toggle is off.

A record created and later modified within the same window appears in both createdRecords and updatedRecords, so design downstream steps to be idempotent. The one exception is the initial sync, which reports each record exactly once.

Example Payload: batching disabled
{
"data": {
"createdRecords": [
{
"id": "12345678",
"properties": {
"createdate": "2024-11-10T10:30:00.000Z",
"lastmodifieddate": "2024-11-10T10:30:00.000Z"
/* additional properties */
}
}
],
"updatedRecords": [
{
"id": "87654321",
"properties": {
"createdate": "2024-11-08T09:00:00.000Z",
"lastmodifieddate": "2024-11-10T14:22:00.000Z"
/* additional properties */
}
}
]
}
}

Properties returned depend on the Search Properties configuration. If not specified, HubSpot returns default properties for the object type. Fields shown are representative. The full response object includes additional properties.

Returned Data with Batching

Batching replaces the two arrays above with records already tagged by how they changed, so a step never has to work out which array a record came from. changeType is either created or updated.

With Batch Size set to 1, each execution receives a single tagged record:

Example Payload: batching enabled, batch size 1
{
"data": {
"changeType": "created",
"record": {
"id": "12345678",
"properties": {
"createdate": "2024-11-10T10:30:00.000Z",
"lastmodifieddate": "2024-11-10T10:30:00.000Z"
/* additional properties */
}
}
}
}

With Batch Size greater than 1, each execution receives an array holding up to that many tagged records:

Example Payload: batching enabled, batch size greater than 1
{
"data": [
{
"changeType": "created",
"record": {
"id": "12345678",
"properties": {
"createdate": "2024-11-10T10:30:00.000Z",
"lastmodifieddate": "2024-11-10T10:30:00.000Z"
/* additional properties */
}
}
},
{
"changeType": "updated",
"record": {
"id": "87654321",
"properties": {
"createdate": "2024-11-08T09:00:00.000Z",
"lastmodifieddate": "2024-11-10T14:22:00.000Z"
/* additional properties */
}
}
}
]
}

The final batch of a recurrence may hold fewer records than the batch size. Created records are dispatched before updated ones, and a record created and later modified within the same window is dispatched twice, once with each changeType. The initial sync dispatches each record once.

Best Practices

  • Polling Frequency: Use 5-15 minute intervals to balance timeliness with API limits
  • Filter Results: Use Search Properties to request only needed properties and add filters
  • Large Backlogs: Enable batching if a recurrence may need to catch up on more than 10,000 changed records, so it drains within one recurrence instead of several
Example Payload for New and Updated Records
Loading…

Webhook

Receive and validate webhook requests from HubSpot for manually configured webhook subscriptions. | key: webhook

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

A HubSpot Webhook can be configured to send information to a flow's webhook URL under certain conditions (a contact is created, a deal is updated, a company property changes, etc.).

This trigger is designed for manually configured webhook subscriptions that are set up through the HubSpot Developer Console. When a webhook is configured externally in HubSpot, this trigger receives the webhook requests and validates them using signature verification.

For automated webhook subscription management that creates and removes webhook subscriptions automatically when an instance is deployed or deleted, use the Event Type Subscription trigger instead.

Configuration

To use this trigger:

  1. Create a public app in the HubSpot Developer Console
  2. Configure webhook settings in the app's Webhooks section:
    • Set the Target URL to the flow's webhook URL
    • Configure the event subscriptions (contact creation, deal updates, etc.)
    • Adjust throttling settings if needed
  3. When configuring the trigger connection, provide the Client Secret from the HubSpot app for signature verification

A full list of available webhook events is available in the HubSpot Webhooks API documentation.

Example Payload for Webhook
Loading…

Data Sources

Select Company

Select a company from the list of companies. | key: selectCompany | type: picklist

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.


Select Contact

Select a contact from the list of contacts. | key: selectContact | type: picklist

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.


Select Custom Object

Select a custom object from the list of custom objects. | key: selectCustomObject | type: picklist

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.


Select Deal

Select a deal from the list of deals. | key: selectDeal | type: picklist

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.


Select Engagement

Select an engagement from the list of engagements. | key: selectEngagement | type: picklist

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.


Select Import

Select an import from the list of active imports. | key: selectImport | type: picklist

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.


Select Line Item

Select a line item from the list of line items. | key: selectLineItem | type: picklist

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.


Select Object

Select a HubSpot object type from the list of available objects. | key: getObjectSelection | type: objectSelection

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Include Custom Objectsfalse
Objects to Select

The objects to include in the selection list.


Select Product

Select a product from the list of products. | key: selectProduct | type: picklist

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.


Select Property

Select a property from the list of properties. | key: selectProperty | type: picklist

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Object Type

The type of object.

deal

Select Webhook

Select a webhook from the list of webhooks. | key: selectWebhook | type: picklist

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.


Actions

Archive Association

Remove the associations between two provided objects. | key: ArchiveAssociations

InputNotesExample
Type Of Association

Provide a value for the type of association to perform. You can get the set of available values for this input by making a step using the "List Association Types"

890435
From ID

The unique identifier of the first object

890435
From Object Type

The type of the "from" object. Choose from "Contacts", "Companies", "Deals", "Tickets", "Calls", "Quotes", "Line_items", "Meetings", "Products", "Feedback_submissions", or a custom object defined in the account.

contact
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
To ID

The unique identifier of the second object

890435
To Object Type

The type of the "to" object. Choose from "Contacts", "Companies", "Deals", "Tickets", "Calls", "Quotes", "Line_items", "Meetings", "Products", "Feedback_submissions", or a custom object defined in the account.

deal
Example Payload for Archive Association
Loading…

Archive Batch Contacts

Archive a batch of contacts by ID. | key: archiveBatchContacts

InputNotesExample
Contact Ids

A list of contact IDs.

Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Archive Batch Contacts
Loading…

Archive Batch Engagement

Archives a batch of selected engagements by their IDs. | key: archiveBatchEngagement

InputNotesExample
Engagement Ids

A list of engagement IDs.

Engagement Object

Select an engagement object.

Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Archive Batch Engagement
Loading…

Cancel Import

Cancels an active import. | key: cancelImport

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Import ID

The unique identifier of the import.

43203123
Timeout

The maximum time a client will await a request

20000
Example Payload for Cancel Import
Loading…

Create Association

Create an association between the objects identified in the step. | key: createAssociations

InputNotesExample
Type Of Association

Provide a value for the type of association to perform. You can get the set of available values for this input by making a step using the "List Association Types"

890435
From ID

The unique identifier of the first object

890435
From Object Type

The type of the "from" object. Choose from "Contacts", "Companies", "Deals", "Tickets", "Calls", "Quotes", "Line_items", "Meetings", "Products", "Feedback_submissions", or a custom object defined in the account.

contact
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
To ID

The unique identifier of the second object

890435
To Object Type

The type of the "to" object. Choose from "Contacts", "Companies", "Deals", "Tickets", "Calls", "Quotes", "Line_items", "Meetings", "Products", "Feedback_submissions", or a custom object defined in the account.

deal
Example Payload for Create Association
Loading…

Create Batch Contacts

Create a batch of contacts. | key: createBatchContacts

InputNotesExample
Batch Contacts

An array of contact objects to create. See HubSpot Contacts API for properties.

[
  {
    "associations": [
      {
        "types": [
          {
            "associationCategory": "HUBSPOT_DEFINED",
            "associationTypeId": 0
          }
        ],
        "to": {
          "id": "string"
        }
      }
    ],
    "properties": {
      "email": "bcooper@biglytics.net",
      "phone": "(877) 929-0687",
      "company": "Biglytics",
      "website": "biglytics.net",
      "lastname": "Cooper",
      "firstname": "Bryan"
    }
  }
]
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Create Batch Contacts
Loading…

Create Batch Engagement

Creates a batch of selected engagements. | key: createBatchEngagement

InputNotesExample
Batch Engagements

An array of engagements.

[]
Engagement Object

Select an engagement object.

Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Create Batch Engagement
Loading…

Create Company

Create a new company. | key: createCompany

InputNotesExample
City

The city where the company is headquartered.

Atherton
Company Name

The display name for the company record.

Acme Inc.
Phone

The primary contact phone number for the company.

(800) 555-1515
Description

An optional text description providing additional detail about the record.

This is an example description.
Domain

The company's web domain, used for deduplication and enrichment (e.g. example.com).

www.example.com
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable.

[
  {
    "key": "name",
    "value": "My Example Account"
  },
  {
    "key": "phone",
    "value": "5551234567"
  }
]
Values

The names of the fields and their values to use when creating/updating a record.

name:My Example Account,phone:5551234567
Connection

The connection to use for authenticating requests to HubSpot.

Industry

The company's industry classification, such as Software or Manufacturing.

Software
State

The state or region where the company is located.

California
Timeout

The maximum time a client will await a request

20000
Example Payload for Create Company
Loading…

Create Contact

Create a new contact. | key: CreateContact

InputNotesExample
Company

The name of the company the contact is associated with.

Acme Inc.
First Name

The contact's given name, mapped to the firstname property.

John
Contact Information

Optional contact channel fields: email, phone, and website.

Last Name

The contact's family name, mapped to the lastname property.

Doe
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable.

[
  {
    "key": "name",
    "value": "My Example Account"
  },
  {
    "key": "phone",
    "value": "5551234567"
  }
]
Values

The names of the fields and their values to use when creating/updating a record.

name:My Example Account,phone:5551234567
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Create Contact
Loading…

Create Custom Object

Creates new custom object schema. | key: createCustomObject

InputNotesExample
Associated Objects

Associations defined for this object type.

my_object_property
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable.

[
  {
    "key": "name",
    "value": "My Example Account"
  },
  {
    "key": "phone",
    "value": "5551234567"
  }
]
Values

The names of the fields and their values to use when creating/updating a record.

name:My Example Account,phone:5551234567
Connection

The connection to use for authenticating requests to HubSpot.

Name

A unique name for this object. For internal use only.

my_object
Plural Label

The word for multiple objects. (There's no way to change this later.)

My object
Properties

Properties defined for this object type.

[
  {
    "name": "my_object_property",
    "label": "My object property",
    "type": "string",
    "fieldType": "text",
    "groupName": "my_object_information",
    "displayOrder": -1,
    "calculated": false,
    "externalOptions": false,
    "archived": false,
    "hasUniqueValue": false
  }
]
Required Properties

The names of properties that should be required when creating an object of this type.

my_object_property
Searchable Properties

Names of properties that will be indexed for this object type in by HubSpot's product search.

my_object_property
Secondary Display Properties

The names of secondary properties for this object. These will be displayed as secondary on the HubSpot record page for this object type.

my_object_property
Singular Label

The word for one object. (There's no way to change this later.)

My object
Timeout

The maximum time a client will await a request

20000
Example Payload for Create Custom Object
Loading…

Create Deal

Create a new deal. | key: createDeal

InputNotesExample
Amount

The amount value for the deal.

34,000
Close Date

The date when the sale will close.

2019-12-07T16:50:06.678Z
Deal Name

The display name for the deal, visible in the deals pipeline.

My Example Deal
Deal Stage

The stage of the deal. Deal stages categorize deals and track their progress.

presentationscheduled
Deal Type

The type of deal. By default, a deal is categorized as either New Business or Existing Business. The picklist of values for this property is configurable through HubSpot.

newbusiness
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable.

[
  {
    "key": "name",
    "value": "My Example Account"
  },
  {
    "key": "phone",
    "value": "5551234567"
  }
]
Values

The names of the fields and their values to use when creating/updating a record.

name:My Example Account,phone:5551234567
Connection

The connection to use for authenticating requests to HubSpot.

Owner ID

The HubSpot user ID of the record owner, used to assign responsibility.

910901
Pipeline

The pipeline to interact with.

default
Priority

The priority level assigned to the deal: low, medium, or high.

Timeout

The maximum time a client will await a request

20000
Example Payload for Create Deal
Loading…

Create Engagement

Create a communication, email, call, meeting, note, postal mail or task engagement in HubSpot CRM. | key: createEngagement

InputNotesExample
Associations

To create and associate a task with existing records.

[
  {
    "to": {
      "id": 101
    },
    "types": [
      {
        "associationCategory": "HUBSPOT_DEFINED",
        "associationTypeId": 204
      }
    ]
  }
]
Engagement Object

Select an engagement object.

Connection

The connection to use for authenticating requests to HubSpot.

Properties

A properties object, attributes depend on the engagement type. For possible properties for each engagement type refer to HubSpot Engagements API.

{
  "hs_timestamp": "2019-10-30T03:30:17.883Z",
  "hs_task_body": "Send Proposal",
  "hubspot_owner_id": "64492917",
  "hs_task_subject": "Follow-up for Brian Buyer",
  "hs_task_status": "WAITING",
  "hs_task_priority": "HIGH",
  "hs_task_type": "CALL"
}
Timeout

The maximum time a client will await a request

20000
Example Payload for Create Engagement
Loading…

Create Line Item

Create a new line item. | key: createLineItem

InputNotesExample
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable.

[
  {
    "key": "name",
    "value": "My Example Account"
  },
  {
    "key": "phone",
    "value": "5551234567"
  }
]
Values

The names of the fields and their values to use when creating/updating a record.

name:My Example Account,phone:5551234567
Connection

The connection to use for authenticating requests to HubSpot.

Name

A descriptive name for the line item, displayed on quotes and invoices.

My Line Item
Price

The unit price of the product, in the account's default currency.

80400
Product ID

The unique identifier of the product.

804874
Quantity

The quantity of product in the line item.

80
Recurring Billing Monthly Rate

How often the line item is billed: monthly, quarterly, semi-annually, annually, or every two or three years.

Recurring Billing Frequency

Provide the billing frequency of the product. Specify the integer of months in between a P and M in the following format: P{integer}M

P12M
Timeout

The maximum time a client will await a request

20000
Example Payload for Create Line Item
Loading…

Create Product

Create a new product. | key: createProduct

InputNotesExample
Description

An optional text description providing additional detail about the record.

This is an example description.
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable.

[
  {
    "key": "name",
    "value": "My Example Account"
  },
  {
    "key": "phone",
    "value": "5551234567"
  }
]
Values

The names of the fields and their values to use when creating/updating a record.

name:My Example Account,phone:5551234567
Connection

The connection to use for authenticating requests to HubSpot.

Price

The unit price of the product, in the account's default currency.

80400
Product Name

The display name for the product in the product library.

myProduct
Recurring Billing Frequency

Provide the billing frequency of the product. Specify the integer of months in between a P and M in the following format: P{integer}M

P12M
Product SKU

The stock-keeping unit code used to track the product in inventory systems.

804874
Timeout

The maximum time a client will await a request

20000
Unit Cost

The cost per unit used to calculate margin and profitability.

800
Example Payload for Create Product
Loading…

Create Webhook

Create a webhook in HubSpot. | key: createWebhook

InputNotesExample
Active

When true, the subscription is active. When false, the subscription is paused.

false
Event Type

Type of event to listen for. Can be one of create, delete, deletedForPrivacy, or propertyChange.

Connection

The connection to use for authenticating requests to HubSpot.

Property Name

The internal name of the property to monitor for changes. Only applies when eventType is propertyChange.

email
Timeout

The maximum time a client will await a request

20000
Example Payload for Create Webhook
Loading…

Delete All Instanced Webhooks

Delete all webhooks created by this instance in HubSpot. | key: deleteAllWebhooks

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Delete All Instanced Webhooks
Loading…

Delete Company

Delete an existing company by Id. | key: deleteCompany

InputNotesExample
Company ID

The unique identifier of the company.

097829
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Delete Company
Loading…

Delete Contact

Delete a contact by Id. | key: deleteContact

InputNotesExample
Contact ID

The unique identifier of the contact.

9989223
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Delete Contact
Loading…

Delete Custom Object

Removes custom object schema. | key: deleteCustomObject

InputNotesExample
Return Archived Results

When true, returns only results that have been archived.

false
Connection

The connection to use for authenticating requests to HubSpot.

Object Type

The type of object.

deal
Timeout

The maximum time a client will await a request

20000
Example Payload for Delete Custom Object
Loading…

Delete Deal

Delete a deal by its Id. | key: deleteDeal

InputNotesExample
Deal ID

The unique identifier of the deal.

804874
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Delete Deal
Loading…

Delete Engagement

Deletes an engagement by its ID. | key: deleteEngagement

InputNotesExample
Engagement ID

The unique identifier of the engagement. A taskId, meetingId, etc.

123456
Engagement Object

Select an engagement object.

Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Delete Engagement
Loading…

Delete Line Item

Delete an existing line item by Id. | key: deleteLineItem

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Line Item ID

The unique identifier of the line item.

78349093
Timeout

The maximum time a client will await a request

20000
Example Payload for Delete Line Item
Loading…

Delete Product

Delete a product by Id. | key: deleteProduct

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Product ID

The unique identifier of the product.

804874
Timeout

The maximum time a client will await a request

20000
Example Payload for Delete Product
Loading…

Delete Webhook

Delete a webhook by ID in HubSpot. | key: deleteWebhook

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Subscription ID

The unique identifier of the webhook subscription.

123456789
Timeout

The maximum time a client will await a request

20000
Example Payload for Delete Webhook
Loading…

Export CRM Data

Begins exporting CRM data for the portal as specified in the request body. | key: exportCRMData

InputNotesExample
Associated Object Type

The name or ID of an associated object to include in the export. When an associated object is included, the export contains the associated record IDs of that object and the records' primary display property value.

name
Export Name

A descriptive name used to identify the export in the HubSpot UI.

My Export
Format

The file format for the exported data: CSV, XLSX, or XLS.

CSV
Connection

The connection to use for authenticating requests to HubSpot.

Language

The language code for header labels and system-generated text in the export.

List Id (Only and required for PublicExportListRequest)

The ILS List ID of the list to export.

123456
Object Properties

A list of the properties to include in the export.

email
Object Type

The name or ID of the object you're exporting. For standard objects, you can use the object's name (e.g., CONTACT), but for custom objects, you must use the objectTypeId value, you can find this value in the response of the List Custom Objects action.

deal
Public CRM Search Request (Only for PublicExportViewRequest)

Indicates which data should be exported based on certain property values and search queries.

{
  "filters": [
    {
      "value": "string",
      "highValue": "string",
      "values": [
        "string"
      ],
      "propertyName": "string",
      "operator": "EQ"
    }
  ],
  "sorts": [
    "string"
  ],
  "query": "string"
}
Schema Type

The export schema to use: VIEW for filtered exports, or LIST for list-based exports.

VIEW
Timeout

The maximum time a client will await a request

20000
Example Payload for Export CRM Data
Loading…

Get Batch Contacts

Read a batch of contacts by internal ID, or unique property values. | key: getBatchContacts

InputNotesExample
Return Archived Results

When true, returns only results that have been archived.

false
Contact Ids

A list of contact IDs.

Connection

The connection to use for authenticating requests to HubSpot.

ID Property

An ID property to search by

Property

A list of properties to read by.

Properties With History

A list of properties to read by.

Timeout

The maximum time a client will await a request

20000
Example Payload for Get Batch Contacts
Loading…

Get Company

Retrieve the information or metadata of a company by Id, domain, or name. | key: getCompany

InputNotesExample
Additional Properties To Return

For each item, provide a property to return in the response.

phone
Return Archived Results

When true, returns only results that have been archived.

false
Associations List

For each item, provide an object type to retrieve the associated Ids for.

Contacts
Company ID

The unique identifier of the company.

097829
Company Name

The display name for the company record.

Acme Inc.
Domain

The company's web domain, used for deduplication and enrichment (e.g. example.com).

www.example.com
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000

Get Contact

Get the information and metadata of a contact by Id or Email. | key: getContact

InputNotesExample
Additional Properties To Return

For each item, provide a property to return in the response.

phone
Return Archived Results

When true, returns only results that have been archived.

false
Associations List

For each item, provide an object type to retrieve the associated Ids for.

Contacts
Email

The email of the contact. Getting contacts by email performs a search function and will return a successful output even when no results are found.

john.doe@example.com
Contact ID

The unique identifier of the contact.

9989223
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000

Get Current User

Return information about the current session's user. | key: getCurrentUser

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Get Current User
Loading…

Get Custom Object

Retrieves a specific custom object. | key: getCustomObject

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Object Type

The type of object.

deal
Timeout

The maximum time a client will await a request

20000
Example Payload for Get Custom Object
Loading…

Get Deal

Retrieve information and metadata about a deal by its Id or name. | key: getDealById

InputNotesExample
Additional Properties To Return

For each item, provide a property to return in the response.

phone
Return Archived Results

When true, returns only results that have been archived.

false
Associations List

For each item, provide an object type to retrieve the associated Ids for.

Contacts
Deal ID

The unique identifier of the deal.

804874
Deal Name

The display name for the deal, visible in the deals pipeline.

My Example Deal
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000

Get Engagement

Get a communication, email, call, meeting, note, postal mail or task engagement object from HubSpot CRM. | key: getEngagement

InputNotesExample
Return Archived Results

When true, returns only results that have been archived.

false
Associations

List of object types to retrieve associated IDs for. If the specified association do not exist, it will be ignored.

contact
Engagement ID

The unique identifier of the engagement. A taskId, meetingId, etc.

123456
Engagement Object

Select an engagement object.

Connection

The connection to use for authenticating requests to HubSpot.

ID Property

The name of a property whose values are unique for this object type.

Properties To Return

Properties to be returned in the response. If the specified property is not present on the requested object, it will be ignored.

Property With History To Return

A property to be returned along with it's history of previous values. If the specified property is not present on the requested object, it will be ignored.

Timeout

The maximum time a client will await a request

20000
Example Payload for Get Engagement
Loading…

Get Import

Get a complete summary of an import record, including any updates. | key: getAnImport

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Import ID

The unique identifier of the import.

43203123
Timeout

The maximum time a client will await a request

20000
Example Payload for Get Import
Loading…

Get Line Item

Retrieve the information and metadata of a line item by Id. | key: getLineItem

InputNotesExample
Additional Properties To Return

For each item, provide a property to return in the response.

phone
Return Archived Results

When true, returns only results that have been archived.

false
Associations List

For each item, provide an object type to retrieve the associated Ids for.

Contacts
Connection

The connection to use for authenticating requests to HubSpot.

Line Item ID

The unique identifier of the line item.

78349093
Name

A descriptive name for the line item, displayed on quotes and invoices.

My Line Item
Timeout

The maximum time a client will await a request

20000

Get Product

Retrieve the information and metadata of a product by Id or name. | key: getProduct

InputNotesExample
Additional Properties To Return

For each item, provide a property to return in the response.

phone
Return Archived Results

When true, returns only results that have been archived.

false
Associations List

For each item, provide an object type to retrieve the associated Ids for.

Contacts
Connection

The connection to use for authenticating requests to HubSpot.

Product ID

The unique identifier of the product.

804874
Product Name

The display name for the product in the product library.

myProduct
Timeout

The maximum time a client will await a request

20000

Import CRM Data

Import CRM records and activities into the HubSpot account, such as contacts, companies, and notes. | key: importCRMData

InputNotesExample
Create Contact List From Import

When true, creates a static list of the contacts from the import.

false
Data CSV File

The CSV file to import, this should be binary data from a previous step. Key name should be the file name and the value should be the binary data.

key: 'contact-import-file.csv', value: 'binary data'
Date Format

The format for dates included in the file. Defaults to MONTH_DAY_YEAR; DAY_MONTH_YEAR and YEAR_MONTH_DAY are also accepted.

YEAR_MONTH_DAY
Files

An array containing the import file information. For more information, see HubSpot CRM Imports API.

[
  {
    "fileName": "contact-import-file.csv",
    "fileFormat": "CSV",
    "fileImportPage": {
      "hasHeader": true,
      "columnMappings": [
        {
          "columnObjectTypeId": "0-1",
          "columnName": "First name",
          "propertyName": "firstname"
        },
        {
          "columnObjectTypeId": "0-1",
          "columnName": "Last name",
          "propertyName": "lastname"
        },
        {
          "columnObjectTypeId": "0-1",
          "columnName": "Email",
          "propertyName": "email",
          "associationIdentifierColumn": true
        }
      ]
    }
  }
]
Connection

The connection to use for authenticating requests to HubSpot.

Import Operations

Indicates whether the import should create and update, only create, or only update records for a certain object or activity. Include the objectTypeId for the object/activity and whether to UPSERT (create and update), CREATE, or UPDATE records. For objectTypeId's, check HubSpot CRM Object Type IDs.

{
  "0-1": "CREATE"
}
Marketable Contact Import

When true, the contacts being imported are marketable.

true
Name

The name of the import.

Contact Company import
Timeout

The maximum time a client will await a request

20000
Example Payload for Import CRM Data
Loading…

List Active Imports

Returns a paged list of active imports for this account. | key: listActiveImports

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for List Active Imports
Loading…

List Association Types

Retrieve a list of all association types available between two objects. | key: listAssociationTypes

InputNotesExample
From Object Type

The type of the "from" object. Choose from "Contacts", "Companies", "Deals", "Tickets", "Calls", "Quotes", "Line_items", "Meetings", "Products", "Feedback_submissions", or a custom object defined in the account.

contact
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
To Object Type

The type of the "to" object. Choose from "Contacts", "Companies", "Deals", "Tickets", "Calls", "Quotes", "Line_items", "Meetings", "Products", "Feedback_submissions", or a custom object defined in the account.

deal
Example Payload for List Association Types
Loading…

List Companies

Retrieve a list of all companies. | key: listCompanies

InputNotesExample
Additional Properties To Return

For each item, provide a property to return in the response.

phone
Return Archived Results

When true, returns only results that have been archived.

false
Associations List

For each item, provide an object type to retrieve the associated Ids for.

Contacts
Fetch All

When true, automatically fetches all pages of results using pagination.

false
Connection

The connection to use for authenticating requests to HubSpot.

Pagination

Cursor-based pagination: page size and cursor token.

Timeout

The maximum time a client will await a request

20000
Example Payload for List Companies
Loading…

List Contacts

Retrieve a list of all contacts. | key: listContacts

InputNotesExample
Additional Properties To Return

For each item, provide a property to return in the response.

phone
Return Archived Results

When true, returns only results that have been archived.

false
Associations List

For each item, provide an object type to retrieve the associated Ids for.

Contacts
Fetch All

When true, automatically fetches all pages of results using pagination.

false
Connection

The connection to use for authenticating requests to HubSpot.

Pagination

Cursor-based pagination: page size and cursor token.

Timeout

The maximum time a client will await a request

20000
Example Payload for List Contacts
Loading…

List Custom Objects

Retrieve all custom objects. | key: listCustomObjects

InputNotesExample
Additional Properties To Return

For each item, provide a property to return in the response.

phone
Return Archived Results

When true, returns only results that have been archived.

false
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for List Custom Objects
Loading…

List Deals

Retrieve a list of all deals. | key: listDeals

InputNotesExample
Additional Properties To Return

For each item, provide a property to return in the response.

phone
Return Archived Results

When true, returns only results that have been archived.

false
Associations List

For each item, provide an object type to retrieve the associated Ids for.

Contacts
Fetch All

When true, automatically fetches all pages of results using pagination.

false
Connection

The connection to use for authenticating requests to HubSpot.

Pagination

Cursor-based pagination: page size and cursor token.

Timeout

The maximum time a client will await a request

20000
Example Payload for List Deals
Loading…

List Engagements

List engagement objects from HubSpot CRM, including communications, emails, calls, meetings, notes, postal mail, and tasks. | key: listEngagements

InputNotesExample
Engagement Object

Select an engagement object.

Connection

The connection to use for authenticating requests to HubSpot.

Properties To Return

Properties to be returned in the response. If the specified property is not present on the requested object, it will be ignored.

Timeout

The maximum time a client will await a request

20000
Example Payload for List Engagements
Loading…

List Line Items

Retrieve a list of all line items. | key: listLineItems

InputNotesExample
Additional Properties To Return

For each item, provide a property to return in the response.

phone
Return Archived Results

When true, returns only results that have been archived.

false
Associations List

For each item, provide an object type to retrieve the associated Ids for.

Contacts
Fetch All

When true, automatically fetches all pages of results using pagination.

false
Connection

The connection to use for authenticating requests to HubSpot.

Pagination

Cursor-based pagination: page size and cursor token.

Timeout

The maximum time a client will await a request

20000
Example Payload for List Line Items
Loading…

List Products

Retrieve a list of all products. | key: listProducts

InputNotesExample
Additional Properties To Return

For each item, provide a property to return in the response.

phone
Return Archived Results

When true, returns only results that have been archived.

false
Associations List

For each item, provide an object type to retrieve the associated Ids for.

Contacts
Fetch All

When true, automatically fetches all pages of results using pagination.

false
Connection

The connection to use for authenticating requests to HubSpot.

Pagination

Cursor-based pagination: page size and cursor token.

Timeout

The maximum time a client will await a request

20000
Example Payload for List Products
Loading…

List Properties

Retrieve a list of all configured object properties. | key: listProperties

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Object Type

The type of object.

deal
Timeout

The maximum time a client will await a request

20000
Example Payload for List Properties
Loading…

List Webhooks

Retrieve a list of all webhook subscriptions for the HubSpot app. | key: listWebhooks

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for List Webhooks
Loading…

Raw Request

Send raw HTTP request to HubSpot. | key: rawRequest

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Data

The HTTP body payload to send to the URL.

{"exampleKey": "Example Data"}
File Data

File Data to be sent as a multipart form upload.

[{key: "example.txt", value: "My File Contents"}]
File Data File Names

File names to apply to the file data inputs. Keys must match the file data keys above.

Form Data

The Form Data to be sent as a multipart form upload.

[{"key": "Example Key", "value": new Buffer("Hello World")}]
Header

A list of headers to send with the request.

User-Agent: curl/7.64.1
Max Retry Count

The maximum number of retries to attempt. Specify 0 for no retries.

0
Method

The HTTP method to use.

Query Parameter

A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2.

Response Type

The type of data you expect in the response. You can request json, text, or binary data.

json
Retry On All Errors

If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors.

false
Retry Delay (ms)

The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled.

0
Timeout

The maximum time that a client will await a response to its request

2000
URL

Input the path only (/crm/v3/objects/deals). The base URL is already included (https://api.hubapi.com). For example, to connect to https://api.hubapi.com/crm/v3/objects/deals, only /crm/v3/objects/deals is entered in this field.

/crm/v3/objects/deals
Use Exponential Backoff

Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored.

false

This action makes requests to any HubSpot API endpoint. This is especially helpful for search endpoints, where objects may have custom properties unique to the customer.

The data sent to HubSpot can be dynamically generated in a code step. Pass the code step's results as an input reference to the Data input. For example, to search HubSpot's search API for deals named "Sample Deal" valued less than 100 dollars, create a code step that reads like this:

module.exports = async ({ logger, configVars }, stepResults) => {
const data = {
filterGroups: [
{
filters: [
{
propertyName: "dealname",
operator: "EQ",
value: "Sample Deal",
},
{
propertyName: "amount",
operator: "LT",
value: "100",
},
],
},
],
properties: [
"hs_object_id",
"createdate",
"hubspot_owner_id",
"dealstage",
"amount",
"dealname",
"closedate",
"days_to_close",
"hs_analytics_source",
"hs_analytics_source_data_1",
"hs_analytics_source_data_2",
"hs_campaign",
"hs_closed_amount",
"hs_lastmodifieddate",
"dealtype",
"description",
],
};

return { data };
};

On the raw request step, enter /crm/v3/objects/deals/search as the URL input, POST as the Method, and reference the code step's results as the Data input.


Read Association

Get the Ids of the objects associated with those specified in the step. | key: readAssociations

InputNotesExample
From ID

The unique identifier of the first object

890435
From Object Type

The type of the "from" object. Choose from "Contacts", "Companies", "Deals", "Tickets", "Calls", "Quotes", "Line_items", "Meetings", "Products", "Feedback_submissions", or a custom object defined in the account.

contact
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
To Object Type

The type of the "to" object. Choose from "Contacts", "Companies", "Deals", "Tickets", "Calls", "Quotes", "Line_items", "Meetings", "Products", "Feedback_submissions", or a custom object defined in the account.

deal
Example Payload for Read Association
Loading…

Search Deals

Returns a list of deals that match the given properties. | key: searchDeals

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Operator

The comparison operator applied to the property value in the search filter.

Pagination

Cursor-based pagination: page size and cursor token.

Property Name

The property to search on. Ensure the spelling and capitalization match the property exactly.

dealname
Timeout

The maximum time a client will await a request

20000
Value

The value corresponding to the given property name.

myDeal
Example Payload for Search Deals
Loading…

Filter, sort, and search objects, records, and engagements across the CRM. | key: search

InputNotesExample
Fetch All

Turn this ON to get more than 200 results. Note that this can be a large amount of data.

false
Connection

The connection to use for authenticating requests to HubSpot.

Object Type

The type of custom object to search for. Required for the Custom objects search endpoint.

deal
Search Endpoint

The endpoint to search for objects or engagements. For Custom objects don't forget to fill the Object Type input.

Search Limit

The number of records to return. The maximum value is 200.

10
Search Properties

Include properties such as filters and sorts, or specify the properties to be returned. If empty, only the default properties will be returned. On the polling triggers, sorts is ignored (they sort by the object's last-modified property ascending so polling can resume) and filters/filterGroups are combined with the recurrence's date window using AND. For more information, see HubSpot CRM Search API.

{
  "sorts": [
    {
      "propertyName": "createdate",
      "direction": "DESCENDING"
    }
  ]
}
Timeout

The maximum time a client will await a request

20000
Example Payload for Search Records
Loading…

Update Batch Contacts

Update a batch of contacts. | key: updateBatchContacts

InputNotesExample
Batch Contacts

An array of contact objects to update. See HubSpot Contacts API for properties.

[
  {
    "idProperty": "my_unique_property_name",
    "id": "string",
    "properties": {
      "email": "bcooper@biglytics.net",
      "phone": "(877) 929-0687",
      "company": "Biglytics",
      "website": "biglytics.net",
      "lastname": "Cooper",
      "firstname": "Bryan"
    }
  }
]
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Update Batch Contacts
Loading…

Update Batch Engagement

Updates a batch of selected engagements. | key: updateBatchEngagement

InputNotesExample
Batch Engagements

An array of engagement objects to update. Each engagement object must contain the required properties for the specified engagement type. See HubSpot Engagements API for more information.

[
  {
    "id": "string",
    "properties": {
      "hs_task_body": "Send Proposal",
      "hs_timestamp": "2019-10-30T03:30:17.883Z",
      "hs_task_status": "WAITING",
      "hs_task_subject": "Follow-up for Brian Buyer",
      "hs_task_priority": "HIGH",
      "hubspot_owner_id": "64492917"
    }
  }
]
Engagement Object

Select an engagement object.

Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Update Batch Engagement
Loading…

Update Company

Update the information and metadata of an existing company. | key: updateCompany

InputNotesExample
City

The city where the company is headquartered.

Atherton
Company ID

The unique identifier of the company.

097829
Phone

The primary contact phone number for the company.

(800) 555-1515
Description

An optional text description providing additional detail about the record.

This is an example description.
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable.

[
  {
    "key": "name",
    "value": "My Example Account"
  },
  {
    "key": "phone",
    "value": "5551234567"
  }
]
Values

The names of the fields and their values to use when creating/updating a record.

name:My Example Account,phone:5551234567
Connection

The connection to use for authenticating requests to HubSpot.

Industry

The company's industry classification, such as Software or Manufacturing.

Software
State

The state or region where the company is located.

California
Timeout

The maximum time a client will await a request

20000
Company Name

The updated display name for the company.

Acme Inc.
Domain

The updated web domain for the company.

www.example.com
Example Payload for Update Company
Loading…

Update Contact

Update the information and metadata of an existing contact. | key: updateContact

InputNotesExample
Contact ID

The unique identifier of the contact.

9989223
Contact Information

Updated contact channel fields: email, phone, and website.

Company

The updated company association for the contact.

Acme Inc.
First Name

The updated given name for the contact.

John
Last Name

The updated family name for the contact.

Doe
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable.

[
  {
    "key": "name",
    "value": "My Example Account"
  },
  {
    "key": "phone",
    "value": "5551234567"
  }
]
Values

The names of the fields and their values to use when creating/updating a record.

name:My Example Account,phone:5551234567
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Update Contact
Loading…

Update Custom Object

Updates an object's schema. | key: updateCustomObject

InputNotesExample
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable.

[
  {
    "key": "name",
    "value": "My Example Account"
  },
  {
    "key": "phone",
    "value": "5551234567"
  }
]
Values

The names of the fields and their values to use when creating/updating a record.

name:My Example Account,phone:5551234567
Connection

The connection to use for authenticating requests to HubSpot.

Fully qualified name or object type ID of your schema.

The type of object.

deal
Plural Label

The word for multiple objects. (There's no way to change this later.)

My object
Required Properties

The names of properties that should be required when creating an object of this type.

my_object_property
Searchable Properties

Names of properties that will be indexed for this object type in by HubSpot's product search.

my_object_property
Singular Label

The word for one object. (There's no way to change this later.)

My object
Timeout

The maximum time a client will await a request

20000
Example Payload for Update Custom Object
Loading…

Update Deal

Update the information or metadata of an existing deal. | key: updateDeal

InputNotesExample
Amount

The amount value for the deal.

34,000
Close Date

The date when the sale will close.

2019-12-07T16:50:06.678Z
Deal ID

The unique identifier of the deal.

804874
Deal Type

The type of deal. By default, a deal is categorized as either New Business or Existing Business. The picklist of values for this property is configurable through HubSpot.

newbusiness
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable.

[
  {
    "key": "name",
    "value": "My Example Account"
  },
  {
    "key": "phone",
    "value": "5551234567"
  }
]
Values

The names of the fields and their values to use when creating/updating a record.

name:My Example Account,phone:5551234567
Connection

The connection to use for authenticating requests to HubSpot.

Owner ID

The HubSpot user ID of the record owner, used to assign responsibility.

910901
Priority

The priority level assigned to the deal: low, medium, or high.

Timeout

The maximum time a client will await a request

20000
Deal Name

The updated display name for the deal.

My Example Deal
Deal Stage

The stage of the deal. Deal stages categorize deals and track their progress.

presentationscheduled
Pipeline

The pipeline to interact with.

default
Example Payload for Update Deal
Loading…

Update Engagement

Update a communication, email, call, meeting, note, postal mail or task engagement in HubSpot CRM. | key: updateEngagement

InputNotesExample
Engagement ID

The unique identifier of the engagement. A taskId, meetingId, etc.

123456
Engagement Object

Select an engagement object.

Connection

The connection to use for authenticating requests to HubSpot.

ID Property

The name of a property whose values are unique for this object type.

Properties

A properties object to update, attributes depend on the engagement type. For possible properties for each engagement type refer to HubSpot Engagements API.

{
  "property_date": "1572480000000",
  "property_radio": "option_1",
  "property_number": "17",
  "property_string": "value",
  "property_checkbox": "false",
  "property_dropdown": "choice_b",
  "property_multiple_checkboxes": "chocolate;strawberry"
}
Timeout

The maximum time a client will await a request

20000
Example Payload for Update Engagement
Loading…

Update Line Item

Update the information and metadata of an existing line item. | key: updateLineItem

InputNotesExample
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable.

[
  {
    "key": "name",
    "value": "My Example Account"
  },
  {
    "key": "phone",
    "value": "5551234567"
  }
]
Values

The names of the fields and their values to use when creating/updating a record.

name:My Example Account,phone:5551234567
Connection

The connection to use for authenticating requests to HubSpot.

Line Item ID

The unique identifier of the line item.

78349093
Quantity

The quantity of product in the line item.

80
Recurring Billing Monthly Rate

How often the line item is billed: monthly, quarterly, semi-annually, annually, or every two or three years.

Recurring Billing Frequency

Provide the billing frequency of the product. Specify the integer of months in between a P and M in the following format: P{integer}M

P12M
Timeout

The maximum time a client will await a request

20000
Name

The updated name for the line item.

My line Item
Price

The updated unit price for the product.

80400
Product ID

The unique identifier of the product.

804874
Example Payload for Update Line Item
Loading…

Update Product

Update the information and metadata of an existing product. | key: updateProduct

InputNotesExample
Description

An optional text description providing additional detail about the record.

This is an example description.
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable.

[
  {
    "key": "name",
    "value": "My Example Account"
  },
  {
    "key": "phone",
    "value": "5551234567"
  }
]
Values

The names of the fields and their values to use when creating/updating a record.

name:My Example Account,phone:5551234567
Connection

The connection to use for authenticating requests to HubSpot.

Product ID

The unique identifier of the product.

804874
Recurring Billing Frequency

Provide the billing frequency of the product. Specify the integer of months in between a P and M in the following format: P{integer}M

P12M
Timeout

The maximum time a client will await a request

20000
Unit Cost

The cost per unit used to calculate margin and profitability.

800
Price

The updated unit price for the product.

80400
Product Name

The updated display name for the product.

myProduct
Product SKU

The updated stock-keeping unit code for the product.

804874
Example Payload for Update Product
Loading…

Validate Connection

Returns a boolean value that specifies whether the provided Connection is valid. | key: validateConnection

InputNotesExample
Connection

The connection to use for authenticating requests to HubSpot.

Timeout

The maximum time a client will await a request

20000
Example Payload for Validate Connection
Loading…

Changelog

2026-09-02

Improved trigger inputs, connection options, action correctness, and developer experience:

  • Added Property Change Properties input to the Event Type Subscription trigger, enabling property change event types to include the required property names in each webhook subscription

    Reconfiguration notice: The Event Type Subscription trigger now requires an entry in Property Change Properties for every property change event type selected. An existing configuration that selects one will fail the next time its webhook configuration is created, on a first deploy or a redeploy with Overwrite Webhook Settings enabled, until the property names are entered.

  • Fixed the Delete Line Item action sending a GET request instead of DELETE, so the line item was never deleted

  • Updated the Private App Access Token connection, now labeled Private App Access Token or Service Key, to accept a HubSpot account service key in the same field as a private app access token; service keys are HubSpot's recommended credential for new system-to-system integrations, and either credential works for every action

  • Updated the connection documentation to note that the webhook actions and the Event Type Subscription trigger require an OAuth 2.0 connection backed by a legacy public app, which HubSpot stopped allowing accounts to create on June 23, 2026; the Webhook trigger and both polling triggers are unaffected

  • Updated List Companies, List Contacts, List Deals, List Line Items, List Products, and Search Deals to group their cursor and page-size inputs into Pagination for an improved user experience, where Fetch All stays a top-level toggle

  • Updated Create Contact and Update Contact to group their email, phone, and website inputs into Contact Information

  • Added inline action calling support to 58 actions for improved example output during configuration

  • Added output schemas to 40 actions for improved field mapping during configuration

2026-08-19

Reworked the New and Updated Records and New and Updated Custom Records triggers for large data volumes and correct filtering:

  • Added an optional Look-back Date input across all polling triggers for performing an initial sync of records. The initial sync backfills every record created on or after the specified date, seeding each once and ignoring the field and visibility filters; later recurrences are unaffected. Leave it empty to start from the first recurrence with no backfill
  • Added opt-in batching across all polling triggers, dispatching each changed record individually or in configured batches so a large backlog drains within one recurrence; enabling it changes the shape a downstream step receives
  • Added support for object types holding more than the 10,000 records a single HubSpot search returns, draining the remainder on later recurrences. A larger result set previously failed
  • Updated both triggers to always return both createdRecords and updatedRecords. A disabled Show New Records or Show Updated Records now yields an empty array where the key was previously absent
  • Updated Search Properties filters and filterGroups to restrict results instead of widening them. They were previously OR-combined with the trigger's date window, so configured filters returned matching records regardless of date
  • Updated Search Properties sorts to be ignored by these triggers; they now sort ascending by the object's creation property during the initial sync and its last-modified property on later recurrences, so a recurrence can resume where it left off
  • Fixed the New and Updated Custom Records trigger retrieving every record of the custom object type on each recurrence instead of only the changed ones. It now filters and sorts on hs_lastmodifieddate, so the custom object type must expose that property

2026-04-30

Updated spectral version

2026-04-06

Updated Create Product action to make Product SKU and Price inputs optional, aligning with the HubSpot API which only requires the product name

2026-03-10

Enhanced authentication security and fixed an association action bug:

  • Upgraded OAuth 2.0 token endpoint from v1 to v3 for improved security. The v3 endpoints send authentication parameters in the request body rather than query strings, preventing sensitive credentials from appearing in server logs.
  • Fixed Read Association action to use the correct input parameter

2026-02-26

Added inline data sources for imports and custom objects to enhance data selection capabilities

2025-11-18

Updated New and Updated Records to use record type specific date properties to ensure full compatibility with search endpoint record types.

2025-11-17

Enhanced New and Updated Records and New and Updated Custom Records triggers filtering capabilities. Ensuring accurate detection of new and updated records while preventing potential duplicate processing.

2025-10-17

Enhanced webhook lifecycle management with improved event type subscription handling and automated cleanup.

2025-09-18

Improved OAuth trigger documentation and reorganized connection documentation for better clarity

2025-05-14

Added inline data sources for companies, contacts, deals, engagements, line items, products, properties, and webhooks to enhance data selection capabilities