- Home
- Resources
- Integrations
- HubSpot
HubSpot n8n integrationAutomate HubSpot with n8n.
Want HubSpot and n8n wired together without writing code? The HubSpot node exposes 31 operations across companies, contacts, lists, deals, engagements and tickets, and the HubSpot Trigger reacts to 18 events grouped in 5 object families. This HubSpot n8n integration guide covers both.
Verified Trustpilot reviews · AI, automation & growth agency
What does the HubSpot n8n integration cover?
Two nodes, both shipped with n8n. The HubSpot node calls the CRM API to read and write companies, contacts, contact lists, deals, engagements and tickets, 31 operations in total. The HubSpot Trigger registers a webhook, that is a URL HubSpot calls on its own the moment something changes, and starts your workflow on any of 18 events.
Nothing to install either way: both nodes sit in the node panel of every n8n instance, on n8n Cloud and on a self-hosted one.
Route a new lead in seconds. A form fills the CRM, contact.creation fires, the workflow reads the record with contact.get, drops it in a nurture list with contactList.add and posts the owner a message in Slack. The rep sees the lead before the browser tab is closed.
Keep the pipeline honest. deal.propertyChange fires when a stage moves, deal.get pulls the amount and the close date, and a row lands in Google Sheets for the weekly forecast. Put deal.getRecentlyCreatedUpdated on a schedule next to it and the nightly run fills whatever a switched-off workflow missed.
Onboard without copy-paste. deal.creation starts the sequence: company.searchByDomain finds the account behind the email domain, contact.search returns the other people at that company, and Gmail sends the welcome message. A migration works the same way, with Pipedrive or Salesforce on the read side and contact.upsert on the write side, since the email is the key HubSpot matches on.
The node stops at those six objects. Anything the HubSpot API offers beyond them goes through the HTTP Request node, which reuses the same credential through its predefined authentication. That is the honest answer when an operation is missing, and it costs one extra node rather than a different project.
Two ceilings shape the build. Search accepts three filter groups of three filters at most, so a very selective query sometimes needs a second pass in a Filter node. And HubSpot accepts a single webhook at a time: activate a second HubSpot Trigger and the first one goes quiet. One trigger per account, with the routing done inside the workflow, is the shape that survives.
How do you connect HubSpot to n8n?
- 01
Create a service key in HubSpot
Service keys sit under Development, then Keys, then Service Keys; the same page also shows up under Settings, Account Management, Integrations. Select Create service key, give it a descriptive Name, then add one scope per permission the workflow needs and confirm with Update. Creating a key requires super admin access, or the Developer tools access permission on the account.
- 02
Paste the key into the n8n credential
Open the new key, select Show, copy the value and paste it as App Token in a HubSpot credential, the stored connection n8n reuses. Created once in the Credentials menu, it is offered in every HubSpot node afterwards. Start the scopes with
crm.objects.contacts.readandcrm.objects.contacts.write, then add the company, deal, owner and list scopes as the workflow grows. - 03
Add a developer app for the trigger
The HubSpot Trigger does not use the service key. It needs a developer account and a public app: copy the Developer API Key from the Apps page, then the App ID, Client ID and Client Secret from the app's Auth tab, and paste the n8n OAuth Redirect URL into the app. Read scopes on contacts, companies and deals, plus their schemas, are the recommended set.
What the HubSpot Trigger listens to
HubSpot Trigger is the node that starts a workflow when something happens in HubSpot. It listens to 18 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your HubSpot account.
What you see in n8n
Every event, by family
One row per object, one chip per action. The event to tick in the node is object.action; hover a chip to read exactly when it fires.
conversation.*5conversation.creationdeletionnewMessageprivacyDeletionpropertyChange
contact.*4contact.creationdeletionprivacyDeletionpropertyChange
company.*3company.creationdeletionpropertyChange
deal.*3deal.creationdeletionpropertyChange
ticket.*3ticket.creationdeletionpropertyChange
Configuration notes
01HubSpot Trigger setup
Version 1 of the node runs on a webhook: at activation n8n registers its URL with HubSpot, and every event you ticked lands in the workflow within seconds. No polling, meaning no repeated call on a timer asking whether anything changed, and no wildcard either, so there is no catch-all option to fall back on.
Key parameters
- Events: the list you tick, one or several out of the 18 the trigger knows. Contact, deal, company and conversation each get a note below; the ticket family sits next to them, with
ticket.creation,ticket.deletionandticket.propertyChange. - Additional Fields: the node's only optional collection, and it holds a single setting, Max Concurrent Requests. Everything else comes from the events above and from the credential.
02Contact events
Four events follow the contact record, and most lead workflows start on one of them.
Key parameters
- Contact Created (
contact.creation): any contact created in the account. - Contact Deleted (
contact.deletion): any contact deleted in the account. - Contact Privacy Deleted (
contact.privacyDeletion): a contact deleted for privacy compliance reasons, which rarely deserves the same treatment as an ordinary delete. - Contact Property Changed (
contact.propertyChange): a specified property changes on any contact.
03Deal events
Three events cover the pipeline. Together they are enough to mirror a HubSpot pipeline somewhere else without ever opening the CRM.
Key parameters
- Deal Created (
deal.creation): any deal created in the account. - Deal Deleted (
deal.deletion): any deal deleted in the account. - Deal Property Changed (
deal.propertyChange): a specified property changes on any deal, a stage or an amount being the two that usually matter.
04Company events
Three events watch the account layer, the one that account-based teams care about more than the contact layer. Companies move far less often than contacts, so a workflow listening here stays quiet and matters when it speaks.
Key parameters
- Company Created (
company.creation): any company created in the account. - Company Deleted (
company.deletion): any company deleted in the account. - Company Property Changed (
company.propertyChange): a specified property changes on any company.
company.update, or flag the moment a target account changes its lifecycle stage.05Conversation events
The largest family, five events, and the only one that is not about a CRM object but about threads in the inbox.
Key parameters
- Conversation Creation (
conversation.creation): a new thread opens in the account. - Conversation New Message (
conversation.newMessage): a new message has been received on a thread, and the thread itself does not have to be new. - Conversation Property Change (
conversation.propertyChange): a thread property changes. - Conversation Deletion (
conversation.deletion): a thread is archived or soft-deleted. - Conversation Privacy Deletion (
conversation.privacyDeletion): a thread is permanently deleted.
Every HubSpot operation the n8n node exposes
The HubSpot node exposes 31 operations across 6 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Many | Update | Delete | Add | Remove | Get Recently Created/Updated | Search | Search | Create or Update |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Company | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Contact | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| Contact List | ✓ | ✓ | |||||||||
| Deal | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Engagement | ✓ | ✓ | ✓ | ✓ | |||||||
| Ticket | ✓ | ✓ | ✓ | ✓ | ✓ |
Operations index
Company
7 operationsCreate a company
company.createWhat you see in n8n
Notes & use cases
Creates a company record and returns it, so the nodes that follow can attach contacts or deals to the new account.
Key parameters
- Name: the only required field, usually an expression such as
{{ $json.company }}, which reads a field from the item coming in. - Company Properties: an optional collection of 34 fields, from Company Domain Name and Industry Name or ID to Annual Revenue and Number Of Employees, with Custom Properties for whatever your portal added.
Delete a company
company.deleteWhat you see in n8n
Notes & use cases
The account leaves the CRM for good. Nothing gets restored afterwards, so this operation usually sits behind a filter or a human approval step.
Key parameters
- Company to Delete: a resource locator, so you either pick the company from the list or pass its ID from the previous node.
Get a company
company.getWhat you see in n8n
Notes & use cases
Reads one company and its properties, the usual second step once a company event has fired.
Key parameters
- Company to Get: the company, picked from the list or resolved from the incoming item.
- Include Merge Audits: false by default; switch it on to get the merge history when the record was previously merged with another company.
company.propertyChange, read the account again to decide whether the change deserves a message to its owner.Get many companies
company.getAllWhat you see in n8n
Notes & use cases
Lists companies, page after page of them when Return All is on.
Key parameters
- Return All: on, n8n walks every page of companies; off, Limit caps how many come back.
- Company Properties to Include: name the properties you actually need, or the export weighs more than the sheet receiving it.
- Include Merge Audits: adds the merge history of each company that went through a merge.
Get recently created/updated companies
company.getRecentlyCreatedUpdatedWhat you see in n8n
Notes & use cases
Same list, narrowed to what moved: the companies created or updated since a moment you choose.
Key parameters
- Since: returns only companies created after that timestamp; inside an expression the format is
YYYY-MM-DD hh-mm-ss. - Return All: off, the run stops at Limit, which keeps a nightly catch-up predictable.
Search for a company by Domain
company.searchByDomainWhat you see in n8n
Notes & use cases
Search means one thing here, the website domain, because that is the property HubSpot uses to tell companies apart.
Key parameters
- Domain: required, the website domain to look for, like
n8n.io, most often the part of the lead's address after the at sign. - Return All: one domain can match several records; off, Limit decides how many you keep.
- Company Properties to Include: the fields returned with each match, worth setting when the next node needs more than an identifier.
Update a company
company.updateWhat you see in n8n
Notes & use cases
Changes values on an existing company and leaves every other field alone.
Key parameters
- Company to Update: the record to write on, from the list or from the incoming item.
- Update Fields: 35 fields, one more than on create, because Name becomes editable here; Lifecycle Stage Name or ID and Lead Status Name or ID are the two that move a process forward.
Contact
6 operationsCreate or update a contact
contact.upsertWhat you see in n8n
Notes & use cases
One node instead of a search and a branch: the contact is created, or updated when the email already exists.
Key parameters
- Email: required, and the value HubSpot matches on to decide between create and update.
- Contact Properties: 67 fields, among them First Name, Last Name, Job Title, Lifecycle Stage Name or ID and Associated Company Name or ID to link the person to an account.
- Simplify Output: the response carries only the ID unless you turn this on, which resolves the contact data instead.
Delete a contact
contact.deleteWhat you see in n8n
Notes & use cases
Erases a contact from the CRM.
Key parameters
- Contact to Delete: the contact ID, a number like
1485and not an email address; when the address is all you have, run the search operation first and pass the ID it returns.
Get a contact
contact.getWhat you see in n8n
Notes & use cases
Reads one contact. By default the answer holds the Contact ID and nothing else, which catches everyone out the first time.
Key parameters
- Contact to Get: the numeric contact ID again, never the email.
- Contact Properties to Include: name every property you want back, several of them separated by a comma; without it there is no value to read.
- Include List Memberships: adds the lists the contact currently belongs to.
- Form Submission Mode: All, None, Newest or Oldest, to choose which form submissions travel with the record.
Get many contacts
contact.getAllWhat you see in n8n
Notes & use cases
Walks the contact database, all of it or the first slice.
Key parameters
- Return All: on for a real export, off to stop at Limit while the workflow is still being built.
- Contact Properties to Include: same rule as a single read, no property named means no property returned.
- Include List Memberships: worth the extra weight when the export has to show which segment each person sits in.
Get recently created/updated contacts
contact.getRecentlyCreatedUpdatedWhat you see in n8n
Notes & use cases
Recent contacts, created or updated. Unlike the company and deal versions of this operation, it has no Since option, so the cut-off has to come from how often the workflow runs.
Key parameters
- Return All: off, Limit keeps each scheduled run to a size you can reason about.
- Form Submission Mode: Newest is the practical setting when the point is to see what someone just submitted.
Search contacts
contact.searchWhat you see in n8n
Notes & use cases
Queries contacts on their property values and hands back the matches.
Key parameters
- Filter Groups: filters inside a group combine with AND, groups combine with each other using OR; three groups of three filters is the ceiling.
- Query: a plain text search across all property values, for when you do not know which field holds the term.
- Sort By and Sort Order: results come back Descending unless you ask for Ascending.
- Return All: off, Limit caps the result set.
Contact List
2 operationsAdd a contact to a list
contactList.addWhat you see in n8n
Notes & use cases
Puts a contact into a HubSpot list, which is how most nurture sequences get their audience.
Key parameters
- By: Contact ID or Email, the two ways of designating the person.
- Email: the address, when By is set to Email.
- Contact to Add: the numeric ID, when By is set to Contact ID.
- List to Add To: the list, given as a number and not as its name.
Remove a contact from a list
contactList.removeWhat you see in n8n
Notes & use cases
Membership ends, the record stays: the person leaves the list and nothing else about the contact changes.
Key parameters
- Contact to Remove: the numeric contact ID, with no email shortcut here, unlike the add operation.
- List to Remove From: the list the person leaves.
Deal
7 operationsCreate a deal
deal.createWhat you see in n8n
Notes & use cases
Opens a deal in the pipeline and returns it.
Key parameters
- Deal Stage Name or ID: required, the stage the deal starts in, chosen from the list or passed as an ID.
- Deal Properties: 10 optional fields, among them Deal Name, Amount, Close Date, Pipeline Name or ID, Deal Owner and Associated Vid Names or IDs to attach the contacts involved.
Delete a deal
deal.deleteWhat you see in n8n
Notes & use cases
Takes a deal out of the pipeline permanently. The forecast recalculates without it, which is exactly the point when the deal was never real.
Key parameters
- Deal to Delete: the deal, selected in the list or passed as an ID from the node before it.
Get a deal
deal.getWhat you see in n8n
Notes & use cases
Pulls one deal with the properties you asked for. Same rule as contacts: no property named, no value returned.
Key parameters
- Deal to Get: the deal to read.
- Deal Properties to Include: the properties added to the result, requested again for each extra one.
- Include Property Versions: off, you get the current value; on, you get every previous version of that property.
deal.propertyChange fires, read the amount and the stage to decide whether finance needs to hear about it.Get many deals
deal.getAllWhat you see in n8n
Notes & use cases
Every deal, or the first page of them, with the option of bringing the linked records along.
Key parameters
- Return All: on for the whole pipeline, off to stop at Limit.
- Include Associations: returns the IDs of the contacts and companies tied to each deal, and the associated contact count with them.
- Deal Properties with History to Include: like the property list, but each value arrives with its history.
Get recently created/updated deals
deal.getRecentlyCreatedUpdatedWhat you see in n8n
Notes & use cases
Deals that moved since a given moment, created ones and updated ones together.
Key parameters
- Since: the cut-off; written in an expression, the timestamp follows the
YYYY-MM-DD hh-mm-ssformat. - Include Property Versions: adds the earlier values of each property, which is how you spot a stage that moved twice in the same day.
- Return All: off, Limit holds the run down while the workflow is being tested.
Search for deals
deal.searchWhat you see in n8n
Notes & use cases
Where contact search looks for people, this one narrows the pipeline: the deals matching the conditions you set.
Key parameters
- Filter Groups: how you express a stage and an amount in the same condition, three groups at most, three filters each.
- Field Names or IDs: the deal properties returned with every match.
- Direction: Ascending or Descending, Descending being the default.
- Query: a text search run over all property values.
Update a deal
deal.updateWhat you see in n8n
Notes & use cases
The node that moves a deal forward: it writes on an existing record without touching the rest of it.
Key parameters
- Deal to Update: the deal to write on.
- Update Fields: 9 fields, Deal Stage Name or ID among them, so the same node that closes a deal can set its Amount and its Close Date.
- Pipeline: a plain text field here, where the create operation offers a list to choose from.
Engagement
4 operationsCreate an engagement
engagement.createWhat you see in n8n
Notes & use cases
An engagement is HubSpot's name for a logged activity, and this operation creates one from a workflow.
Key parameters
- Type: required, and the four choices are
call,email,meetingandtask. - Metadata: the optional collection carrying the content, with Subject and Body for the text, Status for a task (
NOT_STARTED,IN_PROGRESS,WAITING,COMPLETED,DEFERRED) and For Object Type to hang it on aCONTACTor aCOMPANY. - Associations: sits in the same collection and links the activity to existing records.
Delete an engagement
engagement.deleteWhat you see in n8n
Notes & use cases
Takes a logged activity back out of HubSpot. Handy when a run created the wrong one, or when two branches of the same workflow recorded the same call twice.
Key parameters
- Engagement to Delete: a resource locator, so you either pick the activity from the list or pass its ID through an expression, n8n's way of reusing a value produced by an earlier node.
Get an engagement
engagement.getWhat you see in n8n
Notes & use cases
The logged activity comes back whole, content included, so the nodes that follow work on what was actually recorded instead of a guess.
Key parameters
- Engagement to Get: a resource locator that accepts a pick from the list or an ID from a previous step. Nothing else is asked for.
Get many engagements
engagement.getAllWhat you see in n8n
Notes & use cases
Returns activities in bulk rather than one by one, which is how a whole month of calls, emails and meetings lands in a single execution.
Key parameters
- Return All: switched on, n8n keeps asking HubSpot for the next page until every activity is back. Switched off, it stops at Limit.
- Limit: the maximum number of activities handed to the next node, the sane setting while the workflow is still being tested.
Ticket
5 operationsCreate a ticket
ticket.createWhat you see in n8n
Notes & use cases
Opens a support ticket in a chosen pipeline and at a chosen stage. Three fields are required, and 10 more sit in an optional collection.
Key parameters
- Pipeline Name or ID: required, the pipeline the ticket lands in, from the list or as an ID.
- Stage Name or ID: required, and its options depend on the pipeline, so pick that first.
- Ticket Name: required, the title the support team reads.
- Ticket Properties: optional, the ones worth setting being Description, Priority Name or ID, Ticket Owner Name or ID and Contact Names or IDs.
Delete a ticket
ticket.deleteWhat you see in n8n
Notes & use cases
Deletes a ticket outright. The node asks for the ticket and for nothing else, so the condition that decides whether it really should go belongs earlier in the workflow.
Key parameters
- Ticket to Delete: a resource locator, chosen from the list or passed as an ID coming out of the node before.
Get a ticket
ticket.getWhat you see in n8n
Notes & use cases
This operation pulls one ticket back, and it is the only ticket read that can surface a deleted one.
Key parameters
- Ticket to Get: required, a resource locator, from the list or as an ID.
- Include Deleted: optional switch that lets a deleted ticket come back in the result.
- Ticket Properties to Include: names the ticket properties you want in the result.
- Properties With History: returns the full history of changes for the property you name, instead of its current value alone.
Get many tickets
ticket.getAllWhat you see in n8n
Notes & use cases
Lists tickets instead of fetching them one at a time, with the same properties options as the single read, plus pagination.
Key parameters
- Return All: every ticket comes back, page after page. Left off, Limit decides how many do.
- Ticket Properties to Include: keeps the output to the ticket properties the next nodes actually use.
- Properties With History: adds the change history of the property you name to each ticket returned.
Update a ticket
ticket.updateWhat you see in n8n
Notes & use cases
Changes a ticket that already exists. The optional collection holds 13 fields, so one ticket can be moved, reassigned and closed by different branches of the same workflow.
Key parameters
- Ticket to Update: required, the resource locator pointing at the ticket to change.
- Stage Name or ID and Pipeline Name or ID: optional here, and together they move the ticket across the board.
- Ticket Owner Name or ID: hands the ticket to someone else on the team.
- Close Date: a date field. In an expression, the format is
YYYY-MM-DD hh-mm-ss.
Need help automating HubSpot with n8n?
A person reads every message.


