HubSpot CRM

Connects your Workflow to HubSpot CRM so you can query, create, update, and delete CRM records by using Flowgear-managed OAuth and live HubSpot metadata.

Revision History

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 The OAuth client identifier issued by HubSpot.
Client Secret Masked The OAuth client secret issued by HubSpot.
Access Token Masked The OAuth access token used for HubSpot API requests.
Refresh Token Masked The OAuth refresh token used to renew the access token.
Access Token Expires At UTC String The UTC timestamp after which Flowgear refreshes the current access token.
Granted Scopes String The space-delimited OAuth scopes currently granted to the Connection. You can leave this blank if you are unsure which scopes were granted. Flowgear refreshes it 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.
  • For HubSpot guidance on app setup, see Legacy public apps.

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 The HubSpot CRM Connection used to authenticate the request.
ObjectType String The 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 Normalized 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.

Create

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

Parameter Type Description
Connection Connection The HubSpot CRM Connection used to authenticate the request.
ObjectType String The 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 Normalized response rows for each created record, including returned HubSpot Property values, record metadata, provider diagnostics, and the raw response payload.

Update

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

Parameter Type Description
Connection Connection The HubSpot CRM Connection used to authenticate the request.
ObjectType String The 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 Normalized response rows for each updated record, including returned HubSpot Property values, record metadata, provider diagnostics, and the raw response payload.

Delete

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

Parameter Type Description
Connection Connection The HubSpot CRM Connection used to authenticate the request.
ObjectType String The 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 Normalized response rows for each deleted record, including the input request context, record metadata, provider diagnostics, and an empty raw response payload for successful deletes.

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.
  • 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.
  • 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

  • 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 Connections 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.