Kickside HubSpot — private-app-token connection provider for the HubSpot CRM, with split read/write agent tools over contacts, companies, deals, and tasks.

BUSL-1.1 358 downloads
Updated 3 minutes ago Repository
kicksidehubspotconnectioncrm

Run

wippy run kickside/hubspot

Kickside HubSpot

Private-app-token connection provider for the HubSpot CRM.

  • Connection — a stored private-app access token (kickside.connection:connection binding, generic credential form). test_connection verifies the token against the HubSpot account-info API; discover_resources lists the supported CRM object types.
  • Transport — a thin REST client over https://api.hubapi.com (Bearer token): crm/v3/objects (list/get/search/create/update/archive), crm/v3/owners, crm/v3/properties (schema), and crm/v4 associations. The client honors 429 retry windows, decodes 200/201/204 honestly, and builds incremental search bodies with the configured object watermark property >= watermark.
  • Source ports — pull contacts, companies, deals, and tasks as raw HubSpot records with normalized provenance (external_source, external_id, external_version) and a backfill-to-live cursor.
  • Sink port — writes raw HubSpot properties for contact/company/deal upsert and task-backed activity logs. Mapping is declared config for the mapping artifact; the provider does not transform canonical fields on write.
  • Config — per-object enabled/direction, watermark_property, property selection, and editable hubspot_property -> canonical field map data seeded from production GTM/ICP/NPS property names. Defaults: contacts use lastmodifieddate; companies, deals, and tasks use hs_lastmodifieddate. Set all_properties: true (or select ["*"] for one object) for a portal schema mirror. The source discovers every readable property and hydrates records with bounded batch reads.
  • Reader trait (HubSpot Reader) — HubSpotRead: list, get, and search contacts / companies / deals / tasks, plus owners and paged property schemas.
  • Writer trait (HubSpot Writer) — HubSpotWrite: create, update, archive objects and create associations. Gate it behind the inbox for suggest-only flows.

Read and write are separate traits/tools so an agent can be granted suggest-only (Reader) or write-through (Reader + Writer) access. Sync routines / polling are module-owned data streams or source-syncs that use these traits/tools; this provider only owns the connection and transport.