Sapilon becomes publicly available on 1 December 2026: 42 days to go. The core goes open source the same day →

HubSpot integration

In short

Search, create and update contacts, companies, deals and tickets. Connect it on the Integrations page; your app then calls HubSpot through Sapilon without ever holding a HubSpot credential.

Lets your app search, read, create and update CRM records — contacts, companies, deals, tickets — associate them, and look up owners and properties, with a HubSpot private app token.

The private app’s scopes decide which objects the app can reach.

Connecting

On the Integrations page choose Connect on HubSpot and fill in:

  • Private app access token — HubSpot → Settings → Integrations → Private apps (Legacy apps) → Create. Grant crm.objects.contacts, companies and deals (read and write) as needed, then copy the access token.

Sapilon checks the key with the provider before it saves it, and stores it encrypted; it is never shown again.

What your app can do

Only these requests are available; anything else is refused.

  • GET|POST /crm/v3/objects/*
  • GET|PATCH /crm/v3/objects/*/*
  • POST /crm/v3/objects/*/search
  • PUT /crm/v4/objects/*/*/associations/default/*/*
  • GET /crm/v3/owners
  • GET /crm/v3/properties/*

How the agent uses it

Use integrations.request('hubspot', …); paths are relative to https://api.hubapi.com. {type} is contacts, companies, deals, tickets (or a custom object).

  • GET|POST /crm/v3/objects/{type} — list or create. Example: { method: 'POST', path: '/crm/v3/objects/contacts', body: { properties: { email: 'sara@acme.com', firstname: 'Sara' } } }.
  • GET|PATCH /crm/v3/objects/{type}/{id} — read (query: { properties: 'email,lifecyclestage' }) or update properties.
  • POST /crm/v3/objects/{type}/search — Example: { method: 'POST', path: '/crm/v3/objects/contacts/search', body: { filterGroups: [{ filters: [{ propertyName: 'email', operator: 'EQ', value: 'sara@acme.com' }] }] } }.
  • PUT /crm/v4/objects/{type}/{id}/associations/default/{toType}/{toId} — link two records with the default association. Example: { method: 'PUT', path: '/crm/v4/objects/deals/9/associations/default/contacts/7' }.
  • GET /crm/v3/owners — users records can be assigned to. GET /crm/v3/properties/{type} — field names.

Deleting is not allowed.

More from HubSpot: https://developers.hubspot.com/docs/api-reference/overview

Last updated .

Was this page helpful?