Reference · Tools

HubSpot Trigger

Starts workflow when HubSpot CRM events occur

Webhook trigger Sales v1

The HubSpot Trigger starts a workflow when CRM events occur — contact creation, deal property changes and the rest — receiving HubSpot's batched event arrays and emitting each event as its own item with the right object ID extracted. A typical build is reacting the moment a deal moves to closed-won.

Node type
Webhook trigger
Parameters
3
Outputs
Output
Credentials
HubSpot Developer

HubSpot Trigger

Trigger workflows from HubSpot CRM events

Overview

Triggers a workflow when events occur in HubSpot CRM. Supports contact, company, deal, ticket, and conversation events including creation, deletion, property changes, and privacy deletions. Receives batched webhook payloads from HubSpot and verifies signatures using SHA-256 hashing. Each event in the batch becomes a separate workflow item.

Category: Sales
Tool Name: hubspot_trigger
Version: 1

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

Node Type

Trigger — webhook (receives incoming HTTP callbacks)

Input / Output

DirectionPort(s)
InputNone (trigger node)
OutputOutput

Credentials

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

Parameters

ParameterTypeRequiredDefaultDescription
EventsmultiOptionsNo[]Which HubSpot events to listen for. At least one event must be selected for the subscription to be created.
Options: company.creation, company.deletion, company.propertyChange, contact.creation, contact.deletion, contact.privacyDeletion (a contact deleted for privacy compliance), contact.propertyChange, conversation.creation (a new thread), conversation.deletion (a thread archived or soft-deleted), conversation.newMessage, conversation.privacyDeletion (a thread permanently deleted), conversation.propertyChange, deal.creation, deal.deletion, deal.propertyChange, ticket.creation, ticket.deletion, ticket.propertyChange
Property NamestringNoThe name of the property to watch for changes. Required when using propertyChange events (e.g., “email”, “lifecyclestage”, “dealname”). (shown when Events is contact.propertyChange, company.propertyChange, deal.propertyChange)
Additional FieldscollectionNo{}Additional configuration options for the webhook.
— Max Concurrent RequestsnumberNo5Maximum number of concurrent webhook requests HubSpot will send to this endpoint.

Output Data

HubSpot delivers events in batches. Each event in the batch becomes its own output item, so one delivery can start the workflow with many items:

{
  "eventId": 1,
  "subscriptionId": 12345,
  "portalId": 0,
  "appId": 0,
  "occurredAt": 1767225600000,
  "subscriptionType": "contact.creation",
  "attemptNumber": 0,
  "contactId": 0,
  "changeSource": "CRM",
  "changeFlag": "",
  "_trigger": "hubspot_webhook",
  "_timestamp": "2026-01-01T00:00:00.000Z",
  "_webhookEvent": "contact.creation"
}
  • _trigger — always hubspot_webhook.
  • _timestamp — ISO 8601 timestamp of when the delivery arrived.
  • _webhookEvent — the event’s subscriptionType, or unknown when it is absent.
  • HubSpot’s generic objectId field is renamed to a type-specific field and removed: contactId, companyId, dealId, ticketId or conversationId, chosen from the subscriptionType. Address the record by that field rather than objectId.
  • propertyName and propertyValue appear on propertyChange events; occurredAt is a millisecond epoch timestamp.

Reference values downstream by expression, for example {{ $json.contactId }} or {{ $json.subscriptionType }}.

Deliveries arriving without an X-HubSpot-Signature header, or whose signature does not match, are rejected with 401.

Usage Examples

  • Trigger a workflow when a new contact is created in HubSpot
  • Start a process when a deal property changes in HubSpot
  • React to new company creation events from HubSpot CRM
  • Listen for ticket deletion events in HubSpot
  • Trigger automation when a HubSpot conversation receives a new message

Example Configuration

Fire on new contacts:

{
  "type": "hubspot_trigger",
  "parameters": {
    "events": ["contact.creation"]
  }
}

Watch a specific contact property:

{
  "type": "hubspot_trigger",
  "parameters": {
    "events": ["contact.propertyChange"],
    "propertyName": "lifecyclestage"
  }
}

Track sales pipeline movement:

{
  "type": "hubspot_trigger",
  "parameters": {
    "events": ["deal.creation", "deal.propertyChange"],
    "propertyName": "dealstage"
  }
}

Monitor support tickets:

{
  "type": "hubspot_trigger",
  "parameters": {
    "events": ["ticket.creation", "ticket.propertyChange"],
    "propertyName": "hs_pipeline_stage"
  }
}

Limit delivery concurrency on a high-volume portal:

{
  "type": "hubspot_trigger",
  "parameters": {
    "events": ["contact.creation", "company.creation", "deal.creation"],
    "additionalFields": {
      "maxConcurrentRequests": 3
    }
  }
}

Trigger Behavior

  • Activation: When the workflow is activated, a webhook endpoint is registered with the service.
  • Deactivation: The webhook is automatically unregistered when the workflow is deactivated.
  • Payload: The incoming webhook payload is parsed and output as workflow items.
  • Verification: Supports signature verification where applicable.

Tips

Connects to HubSpot via webhook subscriptions. Select the events you want to listen for (e.g., contact.creation, deal.propertyChange). HubSpot sends batched event arrays to the webhook URL. Signature verification ensures payloads are authentic. Each event in the batch becomes a separate output item with the object type ID (contactId, companyId, dealId, or ticketId) extracted from the generic objectId field.

HubSpot allows only one webhook target URL per developer app, so a second workflow using the same App ID cannot register its own URL — use a separate App ID for each workflow that needs its own subscription.

Important Notes

  1. Property Name Dependency: The propertyName parameter is only visible when using propertyChange events (contact.propertyChange, company.propertyChange, or deal.propertyChange).

  2. Event Selection: You can select multiple events, but if any are propertyChange events (contact, company, or deal), you must specify a propertyName that applies to all selected property change events.

  3. Concurrent Requests: The maxConcurrentRequests setting in additionalFields helps manage webhook performance and prevents overwhelming your endpoint with too many simultaneous requests.

  4. Collection Structure: The additionalFields parameter uses a flat object structure where fields are nested directly under the additionalFields key, not wrapped in arrays or additional objects.

Frequently asked questions

Can two workflows use the same HubSpot App ID?

No. HubSpot allows only one webhook target URL per developer app, so a second workflow using the same App ID cannot register its own URL. Use a separate App ID for each workflow that needs its own subscription.

How are batched events handled?

HubSpot sends arrays of events. Each event in the batch becomes a separate output item, so the next node runs once per event rather than once per delivery.

Which ID do I get on the item?

The object-type ID — contactId, companyId, dealId or ticketId — extracted from HubSpot's generic objectId field, so you do not have to work out which object the event referred to.

Are the payloads verified?

Yes, signature verification confirms the payload genuinely came from HubSpot before the workflow starts.

Build with the HubSpot Trigger node

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

Open BusyBot

Last updated . Spotted something wrong? Tell us.