InTouch Hub · Blue Isle Software

HubSpot

Read and write HubSpot CRM contacts, deals, and companies via the v3 objects API.

Provided free and as is, without warranty of any kind — including merchantability, fitness for a particular purpose, and the accuracy or completeness of any result. See the licence. You are responsible for checking what this produces before relying on it.

contactscrmcrm-salesemailleadsalessearchstatus

HubSpot

Read and write HubSpot CRM records — contacts, deals, and companies — through the HubSpot CRM v3 objects API.

Operations

operation HTTP endpoint params
list_contacts GET /crm/v3/objects/contacts limit
get_contact GET /crm/v3/objects/contacts/{id} contactId
create_contact POST /crm/v3/objects/contacts email, firstname, lastname (≥1)
search_contacts POST /crm/v3/objects/contacts/search query or email, limit
list_deals GET /crm/v3/objects/deals limit
list_companies GET /crm/v3/objects/companies limit

create_contact sends {"properties": {...}}. search_contacts sends a free-text query when provided, otherwise an EQ filter on the email property.

The tool never throws on a non-2xx HTTP response: it returns the HTTP status and the raw response result body so the caller can inspect HubSpot's error payload. Response bodies are capped at 5 MB. Standard-library Python only — no requests.

Getting the apiKey

  1. In HubSpot, go to Settings → Integrations → Private Apps.
  2. Click Create a private app, name it, and on the Scopes tab grant the CRM scopes you need (e.g. crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.deals.read, crm.objects.companies.read).
  3. Create the app and copy the access token — that string is the apiKey input. It is sent as Authorization: Bearer <token>.

Outputs

Examples

Search a contact by email

operation     = search_contacts
apiKey        = pat-na1-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
email         = [email protected]

Returns the matching contact records (status = 200).

Create a contact

operation     = create_contact
apiKey        = pat-na1-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
email         = [email protected]
firstname     = New
lastname      = Lead

Creates the contact and returns the new object with its id (status = 201).

Publishes

The keys a later task may reference as {{taskName.key}}. Referencing anything not listed here resolves to nothing at run time.

Input Properties

Every property this tool accepts, from its own tool.iml.

Property Type Required Default Description
apiKey string yes — HubSpot private app access token. Create one at HubSpot > Settings > Integrations > Private Apps, then copy the access token (sent as 'Authorization: Bearer ').
operation string yes — One of: list_contacts, get_contact, create_contact, search_contacts, list_deals, list_companies
contactId string no — Contact object id — required for get_contact.
email string no — Email address — used as the search value for search_contacts and (with firstname/lastname) as a property for create_contact.
firstname string no — First name — optional property for create_contact.
lastname string no — Last name — optional property for create_contact.
query string no — Free-text search string for search_contacts (matched against default searchable properties). If empty, 'email' is used as an EQ filter.
limit string no 10 Max records to return for list_* and search_contacts (1-100).