MENU
    HubSpot
    • 12 Jun 2025
    • 3 Minutes to read
    • Dark

    HubSpot

    • Dark

    Article summary

    Overview

    This Adapter allows you to connect to HubSpot to fetch account activity logs.

    Deployment Configurations

    All adapters support the same client_options, which you should always specify if using the binary adapter or creating a webhook adapter. If you use any of the Adapter helpers in the web app, you will not need to specify these values.

    • client_options.identity.oid: the LimaCharlie Organization ID (OID) this adapter is used with.
    • client_options.identity.installation_key: the LimaCharlie Installation Key this adapter should use to identify with LimaCharlie.
    • client_options.platform: the type of data ingested through this adapter, like text, json, gcp, carbon_black, etc.
    • client_options.sensor_seed_key: an arbitrary name for this adapter which Sensor IDs (SID) are generated from, see below.

    Adapter-specific Options

    Adapter Type: hubspot

    • access_token: your HubSpot access token

    Manual Deployment

    Adapter downloads can be found here.

    chmod +x /path/to/lc_adapter
    
    /path/to/lc_adapter hubspot client_options.identity.installation_key=$INSTALLATION_KEY \
    client_options.identity.oid=$OID \
    client_options.platform=json \
    client_options.sensor_seed_key=$SENSOR_NAME \
    client_options.hostname=$SENSOR_NAME \
    client_options.mappings.event_type_path=category \
    access_token=$ACCESS_TOKEN
    Bash

    Infrastructure as Code Deployment

    # HubSpot Specific Docs: https://docs.limacharlie.io/docs/adapter-types-hubspot
    
    sensor_type: "hubspot"
    hubspot:
      access_token: "YOUR_HUBSPOT_PRIVATE_APP_ACCESS_TOKEN" # (required) Your HubSpot Private App access token. Store securely.
      client_options:
        identity:
          oid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # (required) Organization ID from LimaCharlie.
          installation_key: "YOUR_LC_INSTALLATION_KEY_HUBSPOT" # (required) Installation key associated with the OID.
        hostname: "hubspot-crm-adapter-prod-01.example.com" # (required if not using sensor_hostname_path)
        platform: "saas_api_hubspot" # (required) Indicates the source is the HubSpot API.
        architecture: null # (optional) Not applicable for SaaS API.
        mapping:
          # HubSpot API returns JSON, so parsing_re is usually null.
          # The adapter likely polls specific HubSpot event types or audit logs.
          parsing_re: null
          # (optional) Path to uniquely ID the original HubSpot event or object. HubSpot objects have 'id'. Audit events also have IDs.
          sensor_key_path: "id" # Or "objectId" or "eventId" depending on the HubSpot data.
          # (optional) If client_options.hostname is NOT static.
          sensor_hostname_path: null
          # (optional) Example: "HUBSPOT_CONTACT_CREATED", "HUBSPOT_DEAL_STAGE_CHANGED". Based on 'eventType' or similar field from HubSpot.
          event_type_path: "HUBSPOT_{{ .subscriptionType | token | upper | default \"AUDIT\" }}_{{ .eventType | token | upper }}"
          # (optional) JSON path to the event's occurrence time. E.g., 'timestamp', 'createdAt', 'occurredAt'.
          event_time_path: "occurredAt" # Or "timestamp", "properties.createdate.value".
          # (optional) JSON path for a field to populate LimaCharlie's investigation_id.
          investigation_id_path: "correlationId" # Or "userId" if focusing on user activity.
          # (optional) Use +/- syntax for transforms.
          transform:
            "+crm_platform_name": "HubSpot"
            "+hubspot_event_source": "{{ .source }}" # If HubSpot provides a source field
            "+user_identifier": "{{ .userId }}" # User associated with the event
            # Example: if properties are nested
            # "+contact_email": "{{ .properties.email.value }}"
            "-internalProcessingDetails.someVerboseField": null
          # (optional) A list of field paths to drop.
          drop_fields:
          - "portalId_verbose_copy" # If portalId is already in a standard field
          - "properties.hs_timestamp_utc" # If using a primary timestamp field
          sid_replication_path: null # (optional)
        # mappings: null
        indexing:
          enabled: true
          default_index: "hubspot-events-{{ .identity.oid | substr 0 8 }}"
        is_compressed: false # (optional)
        sensor_seed_key: "SEED_KEY_HUBSPOT_ADAPTER_001" # (required)
        dest_url: "https://input.limacharlie.io" # (optional) The destination URL. Usually defaults correctly.
    YAML

    API Doc

    See the official documentation.


    Was this article helpful?