HubSpot Integration

Connect FastFollow to your HubSpot portal

Sync contacts and deals across every pipeline. FastFollow auto-enriches AI-drafted follow-ups with HubSpot property values and posts every sent message back to the contact timeline.

Choose your auth method

Two supported paths — pick whichever fits your deployment shape

OAuth app (recommended for production)

Create a HubSpot public app in the HubSpot developer portal. Best for multi-tenant deployments and customer-facing installs — users authorize via OAuth and tokens refresh automatically.

  • Use when more than one HubSpot portal will connect
  • Supports token rotation and scope management
  • Required for HubSpot Marketplace listings

Private App token (faster for single portal)

Generate a Private App access token from HubSpot Settings → Integrations → Private Apps. Simpler if only one HubSpot portal will ever connect to your FastFollow tenant.

  • Single static token, no OAuth dance
  • Scoped per app — you choose exactly which scopes the token can use
  • Easier to rotate but does not auto-refresh

Required scopes

Select all 7 in the HubSpot consent screen or Private App scope picker

ScopeWhy FastFollow needs it
crm.objects.contacts.readRead contact records for sync
crm.objects.contacts.writeUpdate contact fields and log activities
crm.objects.deals.readRead deal stages and pipeline state
crm.objects.deals.writeUpdate deal stage on follow-up completion
crm.objects.companies.readResolve contact companies
crm.schemas.contacts.readDiscover custom contact properties
timelinePost follow-up activity events to contact timelines

Default property mapping

Standard properties synced out of the box. Custom properties configurable post-connect.

HubSpot propertyFastFollow field
firstname + lastnamecontact.fullName
email (unique key)contact.email
phonecontact.phone
lifecyclestagecontact.lifecycleStage
company → Company.namecontact.companyName
deal.dealnamedeal.title
deal.amountdeal.value
deal.dealstagedeal.stage
deal.closedatedeal.expectedCloseDate
deal.pipelinedeal.pipelineId

Inbound webhooks

How HubSpot pushes changes to FastFollow

When you connect HubSpot via OAuth, FastFollow automatically registers webhooks for contact and deal property changes. We verify every payload using X-HubSpot-Signature-v3 with HMAC-SHA256.

  • contact.propertyChange — debounced and applied to the matched FastFollow contact
  • deal.propertyChange — updates pipeline state and deal score inputs
  • deal.creation / deal.deletion — keeps your pipeline view in sync

For more on signature verification across all providers, see the webhooks reference.

Rate limits

HubSpot caps API usage per portal — these are the published tiers

Free / Starter

100 requests / 10 seconds, 250,000 / day

Initial backfill of >100K contacts may take multiple days.

Professional

150 requests / 10 seconds, 500,000 / day

Sufficient for typical mid-market workloads.

Enterprise

200 requests / 10 seconds, 1,000,000 / day

Handles large initial syncs without throttling.

Troubleshooting

The most common HubSpot sync errors

INVALID_AUTHENTICATION

Token rejected immediately on every request.

Fix: For OAuth apps, verify the refresh token has not been revoked from HubSpot Settings → Integrations → Connected Apps. For Private Apps, regenerate the access token — they expire if not used for 6+ months.

MISSING_SCOPES

Reads succeed but writes return 403.

Fix: The connecting user did not grant the write scopes. Reconnect from FastFollow → Integrations → HubSpot and confirm all 7 scopes are checked on the HubSpot consent screen.

PROPERTY_DOESNT_EXIST

Custom property sync fails on a specific field.

Fix: The property was deleted from HubSpot or its internal name changed. Update the field mapping in FastFollow → Integrations → HubSpot → Field Mapping.

RATE_LIMITED

Sync slows or stops with 429 errors during high-volume periods.

Fix: FastFollow respects HubSpot rate limits with exponential backoff. Upgrade the HubSpot tier or schedule large reconciliation jobs during off-hours.