Reference · Tools
HubSpot Trigger
Starts workflow when HubSpot CRM events occur
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
| Direction | Port(s) |
|---|---|
| Input | None (trigger node) |
| Output | Output |
Credentials
This tool requires HubSpot Developer credentials. See the Credentials Guide for setup instructions.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Events | multiOptions | No | [] | 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 Name | string | No | — | The 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 Fields | collection | No | {} | Additional configuration options for the webhook. |
| — Max Concurrent Requests | number | No | 5 | Maximum 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— alwayshubspot_webhook._timestamp— ISO 8601 timestamp of when the delivery arrived._webhookEvent— the event’ssubscriptionType, orunknownwhen it is absent.- HubSpot’s generic
objectIdfield is renamed to a type-specific field and removed:contactId,companyId,dealId,ticketIdorconversationId, chosen from thesubscriptionType. Address the record by that field rather thanobjectId. propertyNameandpropertyValueappear onpropertyChangeevents;occurredAtis 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
-
Property Name Dependency: The
propertyNameparameter is only visible when using propertyChange events (contact.propertyChange,company.propertyChange, ordeal.propertyChange). -
Event Selection: You can select multiple events, but if any are propertyChange events (contact, company, or deal), you must specify a
propertyNamethat applies to all selected property change events. -
Concurrent Requests: The
maxConcurrentRequestssetting inadditionalFieldshelps manage webhook performance and prevents overwhelming your endpoint with too many simultaneous requests. -
Collection Structure: The
additionalFieldsparameter uses a flat object structure where fields are nested directly under theadditionalFieldskey, 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 BusyBotLast updated . Spotted something wrong? Tell us.