HubSpot

CRM and marketing automation platform for inbound marketing, sales, and customer service with unified contact management.

⚠️

This integration is currently in beta. Configuration and behaviour may change.

Prerequisites

Complete these steps in HubSpot before configuring Signal.

Access your HubSpot account

Log in to HubSpot at app.hubspot.com. If you do not have an account, sign up for a HubSpot plan that includes API access (Professional or Enterprise).

Find your Portal ID

Your Portal ID (also called Hub ID) is displayed in the top-right corner of the HubSpot dashboard, next to your account name. It is also visible in your HubSpot dashboard URL (e.g. app.hubspot.com/contacts/12345678). Copy this number.

Create a Private App for API access

Navigate to Settings > Integrations > Private Apps. Click Create a Private App. Fill in the details:

  1. Give the app a name (e.g. “Datafly Signal”).
  2. Under Scopes, grant the following permissions:
    • crm.objects.contacts.write — for creating and updating contacts
    • crm.objects.contacts.read — for reading contact data
    • crm.objects.deals.write — for creating deals (if using deal tracking)
    • analytics.read — for event tracking
  3. Click Create App and confirm.
  4. Copy the Access Token that is displayed. This token does not expire but can be revoked.

Note your Pipeline ID (optional)

If you want to associate events with a specific deal pipeline, navigate to Settings > Objects > Deals > Pipelines. Select the pipeline and note its Pipeline ID from the URL or settings. Leave this empty to use the default pipeline.

Configuration

FieldTypeRequiredDescription
access_tokensecretYesA HubSpot Private App access token. Created in Settings > Integrations > Private Apps.
portal_idstringYesYour HubSpot Portal ID (Hub ID). Found in the top-right of the dashboard.
pipeline_idstringNoThe deal pipeline ID to associate events with. Leave empty for the default pipeline.

Signal Setup

Quick Setup

  1. Navigate to Integrations in the sidebar.
  2. Open the Integration Library tab.
  3. Find HubSpot or filter by CDP.
  4. Click Install, and fill in the required fields with the credentials gathered above.
  5. Click Install Integration to create the integration with a ready-to-use default configuration.

API Setup

curl -X POST http://localhost:8084/v1/admin/integration-catalog/hubspot/install \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "HubSpot",
    "variant": "default",
    "config": {
      "access_token": "pat-na1-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "portal_id": "12345678",
      "pipeline_id": "default"
    },
    "delivery_mode": "server_side"
  }'

Event Mapping

Signal events are mapped to HubSpot API calls as follows:

Signal EventHubSpot ConceptNotes
pageBehavioural eventPage view data sent as a custom behavioural event on the contact timeline
trackCustom behavioural eventEvent name and properties forwarded as custom behavioural events
identifyContact create/updateEmail and traits used to create or update HubSpot contacts via the CRM API
track (purchase)Deal creationPurchase events can create deals in the specified pipeline with revenue data

HubSpot identifies contacts primarily by email address. Ensure your Signal events include an email property for proper contact matching.

Delivery

Events are delivered server-side from your Datafly Signal infrastructure directly to the HubSpot API. No client-side scripts are loaded for this integration.

Testing

  1. After installing the integration, trigger a test event from your website or via the Signal event API.
  2. In HubSpot, navigate to Contacts and search for the test user by email to verify the contact was created or updated.
  3. Click into the contact record and check the Activity timeline for the events sent from Signal.
  4. In Signal, check the Live Events view to confirm the event was delivered with a 200 response status.

Troubleshooting

SymptomPossible CauseResolution
401 UnauthorizedInvalid or revoked access tokenCreate a new Private App or regenerate the token in HubSpot Settings > Integrations > Private Apps
403 ForbiddenInsufficient scopesEdit the Private App and add the required scopes, then copy the updated token
Contact not createdMissing emailHubSpot requires an email address to create contacts. Ensure events include an email property
429 Too Many RequestsRate limit exceededHubSpot applies rate limits per Private App. Reduce event volume or contact HubSpot support
Wrong pipelineIncorrect pipeline IDVerify the pipeline ID in HubSpot Settings > Objects > Deals > Pipelines

Visit HubSpot documentation for full API reference and Private App setup details.