HubSpot CRM

Provides integration with HubSpot CRM for OAuth-backed queries and mutations using live object and Property metadata.

Revision History

0.1.0.1 - Improved OAuth error details returned by HubSpot token operations.
0.1.0.0 - Published after the completed V2 overhaul.
0.0.0.11 - Query rows now omit mutation default fields, first-call query failures surface, and mutation rows use the top-level Flowgear object.
0.0.0.10 - Standardized the public V2 help article.
0.0.0.9 - Initial release.

Connection

Use this Connection to store the HubSpot OAuth settings and token state used by all HubSpot CRM methods.

Property Type Description
Client ID String OAuth client identifier issued by HubSpot.
Client Secret Masked OAuth client secret issued by HubSpot.
Access Token Masked OAuth access token used for HubSpot API requests.
Refresh Token Masked OAuth refresh token used to renew the access token.
Access Token Expires At UTC String UTC timestamp after which Flowgear refreshes the current access token.
Granted Scopes String Space-delimited OAuth scopes currently granted to the Connection. Flowgear refreshes this from HubSpot after authorization, during connection testing, and before template discovery when needed.

Setup Notes

  • Create a HubSpot developer app and use its Client ID and Client Secret for this Connection.
  • Add the Flowgear OAuth callback URLs to the app's redirect URL list:
https://app.flowgear.net/r/auth
https://appnew.flowgear.net/r/auth
https://appnext.flowgear.net/r/auth
  • Configure the app with the HubSpot scopes required by this node. The connector requests the following scope set during authorization:
oauth
crm.objects.contacts.read
crm.objects.contacts.write
crm.objects.companies.read
crm.objects.companies.write
crm.objects.deals.read
crm.objects.deals.write
crm.objects.custom.read
crm.objects.custom.write
crm.schemas.custom.read
  • You do not need to type values into Granted Scopes. Flowgear fills that property from HubSpot and uses it to decide which templates to show.
  • In the Flowgear Console, create a Connection of type HubSpot CRM, enter the Client ID and Client Secret, then click Connect your Account.
  • Complete the HubSpot sign-in and consent flow for the HubSpot account you want the node to access. HubSpot developer accounts cannot install apps directly, so use a test or target HubSpot account for authorization.
  • Test the Connection after authorization. The test refreshes the stored Granted Scopes from HubSpot and confirms that the Connection includes at least one supported CRM read or write scope.
  • Template discovery depends on a working HubSpot Connection because object and property definitions are loaded from live HubSpot metadata instead of a bundled schema.

Methods

The node exposes metadata-driven query and single-record CRUD methods. Query uses a direct ObjectType parameter plus an Options object. Create, Update, and Delete use a direct ObjectType parameter plus streamed Items, and each method returns one normalized response row per processed record.

Query

Queries HubSpot CRM records and returns one normalized response row per record.

Parameter Type Description
Connection Connection HubSpot CRM Connection used to authenticate the request.
ObjectType String HubSpot object type to query, such as contacts, companies, or deals. Templates can also expose custom object types when the Connection has the required scopes.
Options Object Optional query settings such as Id, Properties, and IncludeArchived.
Options.Id String Optional HubSpot record ID for a single-record read.
Options.Properties String Optional comma-separated list of HubSpot property API names to include in the response.
Options.IncludeArchived Boolean Set to true to include archived records.
Return Type Description
Response Array Response rows that include returned HubSpot property values, record metadata such as objectType, recordId, createdAt, and updatedAt, provider diagnostics such as providerStatus, providerCategory, and providerCorrelationId, plus the raw response payload. Query rows do not include mutation default fields.

Create

Creates HubSpot CRM records one row at a time and returns one normalized response row per created record.

Parameter Type Description
Connection Connection HubSpot CRM Connection used to authenticate the request.
ObjectType String HubSpot object type to create.
Items Array HubSpot records to create, with writable properties as direct children of each item. The fields exposed in templates depend on the selected object type and the Connection's granted scopes.
Return Type Description
Response Array Response rows for each created record, including returned HubSpot property values, record metadata, provider diagnostics, the raw response payload, and a top-level Flowgear object with default success or failure metadata.

Update

Updates HubSpot CRM records one row at a time and returns one normalized response row per updated record.

Parameter Type Description
Connection Connection HubSpot CRM Connection used to authenticate the request.
ObjectType String HubSpot object type to update.
Items Array HubSpot records to update, with Id plus writable properties as direct children of each item. The fields exposed in templates depend on the selected object type and the Connection's granted scopes.
Return Type Description
Response Array Response rows for each updated record, including returned HubSpot property values, record metadata, provider diagnostics, the raw response payload, and a top-level Flowgear object with default success or failure metadata.

Delete

Deletes HubSpot CRM records one row at a time and returns one normalized response row per deleted record.

Parameter Type Description
Connection Connection HubSpot CRM Connection used to authenticate the request.
ObjectType String HubSpot object type to delete.
Items Array HubSpot records to delete, with Id as a direct child of each item.
Return Type Description
Response Array Response rows for each deleted record, including the input request context, record metadata, provider diagnostics, an empty raw response payload for successful deletes, and a top-level Flowgear object with default success or failure metadata.

Usage Notes

  • If Granted Scopes is blank on the Connection, Flowgear refreshes it from HubSpot before filtering templates.
  • Query uses Options.Id for a single-record read. If you do not supply Options.Id, the node queries records for the selected object type and handles paging internally.
  • If a HubSpot list query finds no matching records, the node returns zero rows instead of treating the no-match result as an error.
  • If the first HubSpot query call fails, the provider error surfaces to the Workflow instead of being normalized into an empty or successful response row.
  • Use a comma-separated string in Options.Properties for new Workflows. The node still accepts a JSON string array for backward compatibility.
  • Create, Update, and Delete place HubSpot fields directly on each Items[] row instead of nesting them inside Request or Properties wrappers, and each response row adds the top-level Flowgear object for default success or failure metadata.
  • Template availability depends on the scopes granted to the Connection. Core object templates are filtered by read or write scope. Custom-object query templates require crm.objects.custom.read, and custom-object create, update, and delete templates require crm.objects.custom.write.

Known Issues

  • OAuth failures use HubSpot's error_description when available and fall back to the legacy message field for older error responses.

  • Template discovery requires valid HubSpot credentials because the node loads object and property metadata from live HubSpot APIs instead of a bundled schema.

  • Existing HubSpot Connection values may need to be re-authorized before custom-object templates appear because the connector now requests crm.objects.custom.read, crm.objects.custom.write, and crm.schemas.custom.read.

  • This release does not include search, batch operations, associations, owners, pipelines, quotes, or line items.