The HubSpot CRM Integration establishes a bidirectional, secure, and real-time data bridge between Supsis—where omnichannel customer communication and live support are managed—and HubSpot CRM, where corporate marketing, sales pipeline, and customer success operations take place. Thanks to this integration, new customers arriving via WhatsApp, Instagram, Live Chat (WebChat), or other communication channels can be automatically created as contacts and deals in HubSpot according to configured business rules and transfer modes.

The integration connects directly using an Access Token without requiring complex OAuth authorization popups. Depending on your business needs, you can choose between a rapid setup via Service Key or a full-featured Private App method supporting real-time automation events (webhooks). Live support agents can inspect the customer's HubSpot contacts, open deals, associated companies, and activity history directly within the chat interface without switching tabs, as well as append new notes and tasks. In addition, real-time events in HubSpot (such as deal stage changes or contact updates) can instantly trigger Supsis automations.


1- HubSpot CRM Integration Overview

1.a – What is HubSpot CRM and the Purpose of the Integration

HubSpot is a cloud-based CRM platform that enables sales, marketing, customer support, and operations teams to manage contacts, deals, companies, tickets, and engagement activities within a unified database.

Organizations typically run their multi-channel customer conversations through Supsis while tracking their sales pipeline and customer lifecycle inside HubSpot. Without integration, agents are forced to constantly switch back and forth between messaging windows and CRM tabs, manually copy-pasting customer details and logging every new conversation. This leads to operational friction, data discrepancies, and lost sales opportunities.

The Supsis HubSpot CRM Integration eliminates this disconnect through a bidirectional automated flow:

  1. Supsis → HubSpot (Data Forwarding): When a new customer reaches out via WhatsApp, Instagram, or WebChat, phone and email deduplication checks are executed. If no matching record exists, Supsis automatically creates a Contact (and optionally an associated Deal) in HubSpot.
  2. HubSpot → Supsis (In-Chat CRM Widget): In the live support interface, the right-hand customer profile panel displays a dedicated HubSpot tab. Contact details, open/closed deals, associated companies, and tasks are displayed in real time. Agents can review the HubSpot profile and add notes to deals without leaving the conversation.
  3. HubSpot Events → Supsis Automations (Webhooks): Powered by Private App webhooks, when a deal stage changes in HubSpot (e.g., to "Closed Won"), a contact is deleted, or a company is updated, Supsis automations are triggered immediately to send notifications via WhatsApp, SMS, or email.

1.b – Two-Tier Configuration Architecture

The HubSpot CRM integration operates on a two-tier structural model:

Tier Location Scope and Responsibility
1. HubSpot Integration Channel Integrations > CRM > HubSpot CRM The centralized site-wide HubSpot connection. Manages the Access Token, connected Portal ID, token type (Service Key / Private App), webhook endpoint, user mapping, and visibility permissions. Only 1 HubSpot channel can be created per site.
2. Source Channel Forwarding Settings Channel Details > CRM Forward > HubSpot Configured independently for each communication channel (e.g., WhatsApp, Instagram, or WebChat). Toggles "Forward new contacts to HubSpot", selects the forward mode (Contact or Contact + Deal), phone format, Lifecycle Stage, default Owner, and dynamic field mappings.

Single Channel Per Site Rule

On the Supsis platform, only 1 HubSpot CRM channel can be created per site/workspace. If a user attempts to add a second channel, the system displays the warning "You cannot create more than one HubSpot channel" and disables adding another.

1.c – Glossary of Terms

The key concepts utilized throughout the HubSpot integration interface and documentation are detailed below:

Term System / Scope Description
HubSpot External CRM Platform The central CRM system where marketing, sales, and service records are maintained (app.hubspot.com).
Portal / Hub ID HubSpot Account Identifier The unique numerical identifier of your HubSpot portal. Found under the top-right profile menu or in Settings → Account Defaults. Stored in the Supsis channel and used for webhook signature verification.
Access Token Supsis & HubSpot The secret API key used by Supsis to authenticate Bearer requests to HubSpot REST APIs (pat-na1-... or pat-eu1-...). Masked in the UI.
Service Key HubSpot Connection Method HubSpot's direct API key model that does not require app creation. Does not support webhooks; ideal for quick contact forwarding and chat widget usage. (Public Beta).
Private App HubSpot Connection Method The dedicated custom app model created within your HubSpot account. Produces an Access Token alongside a Client Secret, supporting webhook subscriptions for automation triggers.
Client Secret Private App Security The secret key found under the Auth tab of a Private App. Configured in Supsis to verify the X-HubSpot-Signature-v3 HMAC signature on incoming webhooks.
Scope (Permission) HubSpot API Permissions Defines the data boundaries that the token is authorized to access. If required scopes are missing, Supsis rejects the connection.
Contact HubSpot CRM Object An individual customer record containing email, phone, lifecycle stage, and assigned owner. Forms the core of Supsis contact forwarding.
Deal HubSpot CRM Object Represents a sales opportunity tied to a specific pipeline and deal stage. Automatically associated with the contact in Contact + Deal mode.
Company HubSpot CRM Object The corporate organization record tied to the contact. Displayed as read-only in the chat widget.
Ticket HubSpot Service Hub Customer support ticket records. Can be created via automation blocks and SDK; listened to via ticket.creation webhook.
Note & Task HubSpot Activities Timeline engagement records attached to contacts or deals. Agents can append notes directly from the chat widget.
Owner HubSpot User The team member responsible for a record in HubSpot. Mapped to Supsis agents via email address.
Lifecycle Stage Customer Journey Stage Identifies where the contact is in the marketing/sales funnel (Lead, Subscriber, MQL, SQL, Opportunity, Customer, etc.). Replaces a standalone "Lead" object in standard HubSpot CRM.
Pipeline & Deal Stage Sales Funnel & Stage The progression milestones of sales deals. Mandatory when configuring Contact + Deal forwarding.
Association HubSpot Object Link A bidirectional link between HubSpot objects (e.g., Contact ↔ Deal). Supsis automatically creates this association when creating deals.
Dedup (Deduplication) Forwarding Logic The pre-forward search mechanism that matches phone and email against existing HubSpot contacts to prevent duplicate CRM records.
token-invalid Channel Status Indicates that the Access Token has expired, been revoked, or rotated. The channel card displays an orange "Reconnection required" badge.

2- Connection Methods: Service Key vs. Private App

The Supsis HubSpot CRM integration does not use a third-party OAuth popup. Users simply copy their Access Token from HubSpot and paste it into Supsis. You can choose between two methods based on your functional requirements:

Feature & Comparison Easy Path: Service Key Full-Featured Path: Private App
Setup Complexity Very Easy (One-step key generation) Standard (App creation & webhook configuration)
HubSpot Navigation Settings → Integrations → Service Keys Settings → Integrations → Private Apps (Legacy Apps)
Webhook Support None (Cannot listen to HubSpot events) Supported (Full automation trigger support)
Automation Triggers Not Supported 10 Different HubSpot Events supported
Contact Forwarding (CRM Forward) Fully Supported Fully Supported
Live Chat HubSpot Widget Fully Supported Fully Supported
Automation Action Blocks Fully Supported Fully Supported
JavaScript SDK Support Fully Supported Fully Supported
Required Credentials Access Token only Access Token + Client Secret
Release Status Public Beta (Requires Developer Tools access) Stable / Enterprise Standard
DECISION STEP

Do you need Automation Triggers (Webhooks)?

NO (Contact Forwarding & Chat Widget only) ⚡ Easy Path: Service Key

Generated in a single step under HubSpot Settings → Integrations → Service Keys.

🔑 Required: Simply copy the Access Token and paste it into Supsis.
YES (Deal Stage Changes, Contact Updates etc.) 🛡️ Full-Featured Path: Private App

Created under HubSpot Settings → Integrations → Private Apps (Legacy Apps).

🔐 Required: Access Token + Client Secret + Webhook Target URL.

Transitioning from Service Key to Private App Without Deleting Channel

If you initially connected using a Service Key, you do not need to delete your channel to enable webhooks later! Simply create a Private App in HubSpot and enter the Client Secret into your channel's Detail tab in Supsis. The Access Token can remain your Service Key, and webhook processing will activate immediately.


3- Required Scopes

Regardless of which connection method you use, the Access Token must include all the following scopes. If any scope is missing, Supsis will reject the connection and display the name of the missing scope in the error message:

  • crm.objects.contacts.read – Permission to read contacts
  • crm.objects.contacts.write – Permission to create and update contacts
  • crm.objects.deals.read – Permission to read deals
  • crm.objects.deals.write – Permission to create and update deals
  • crm.objects.owners.read – Permission to read HubSpot owners/users
  • crm.objects.companies.read – Permission to read associated company data
  • crm.schemas.contacts.read – Permission to inspect contact property schemas
  • crm.schemas.deals.read – Permission to inspect deal property schemas
  • crm.schemas.companies.read – Permission to inspect company property schemas

Ticket and Custom Object Scopes

If you intend to create HubSpot Support Tickets via automation blocks or Chatbot JS SDK scripts, make sure to add tickets (read and write) permissions to your Private App scopes.


4- Setup Steps

4.a – Accessing the Integration Card

  1. Log in to the Supsis administration panel and navigate to Integrations in the left navigation menu.
  2. Under the CRM section, locate the HubSpot CRM card featuring the green ● FREE badge.
  3. Click the card to open the HubSpot CRM Channels list.

Integrations Section HubSpot Card

HubSpot CRM Channel List

HubSpot Add Channel Modal and Scopes


Follow these steps to enable full CRM management along with automation triggers and webhook notifications:

HubSpot UI Update: Legacy Apps

In recent updates, HubSpot has relocated this section under Legacy Apps. When clicking Private Apps, HubSpot will automatically redirect you to the "Legacy Apps" view. This does not affect integration functionality.

  1. Navigate to Private Apps in HubSpot: In your HubSpot account, click the gear icon (Settings) in the top right. In the left-hand sidebar, go to Integrations → Private Apps.
  2. Initialize App Creation: Click Create legacy app (or Create a private app) and select Private in the modal.

  3. Define Basic Info: Set the application name to Supsis AI Integration. Optionally, add a brief description and upload the Supsis logo.

  4. Add Scopes: Switch to the Scopes tab. Search for and check all Contact, Deal, Owner, Company, and Schema scopes listed in Section 3. Confirm all selections in the Summary sidebar.

  5. Generate the App and Retrieve Credentials: Click Create app in the top right and confirm with Continue creating.

  6. Copy the generated Access Token (pat-na1-...).
  7. Switch to the Auth tab and copy the Client Secret for webhook signature verification.

  8. Connect in Supsis: Return to the Add Channel modal in Supsis. Enter a channel name, paste the Access Token and Client Secret, and click Connect.

HubSpot Settings Private Apps and Legacy Apps Redirection

HubSpot Create Legacy App Modal

HubSpot Private App Basic Info Configuration

HubSpot Private App Scope Selection and Summary

HubSpot Private App Webhook Configuration Tab

HubSpot Private Apps Overview and Channel View


4.c – Method 2: Quick Setup via Service Key

If you only need in-chat contact inspection and automatic contact forwarding without webhooks, you can connect in seconds using a Service Key:

  1. Navigate to Service Keys: In HubSpot, go to Settings → Integrations → Service Keys (or Development → Keys → Service Keys in some accounts) (See: Integrations Settings Screen above).
  2. Create a Key: Click Create Service Key and provide a descriptive name.
  3. Select Scopes: Select the required read/write scopes listed in Section 3 and verify the summary.
  4. Copy the Token: Copy the generated Access Token.
  5. Add Channel in Supsis: In Supsis, open the Add Channel modal, paste the token, and click Connect.

HubSpot Service Key Scope Selection Screen

HubSpot Service Key Token Copy Field

Supsis Channel Detail Service Key Token View

Channel Detail Webhooks Tab Private App Warning


5- Forwarding Data from Channels (CRM Forward)

5.a – Enabling Forwarding

Once the HubSpot channel is established, contact forwarding must be enabled on your source messaging channels (e.g., WhatsApp or WebChat):

  1. In Supsis, go to Settings > Channels or open the channel details from the left menu (e.g., WhatsApp Channels → Channel Details).
  2. Open the CRM / HubSpot tab.
  3. Toggle on Forward new contacts to HubSpot.

WhatsApp Channel Detail HubSpot Forwarding Configuration Screen

5.b – Forwarding Modes and Parameters

Configure the following parameters in the forwarding tab:

  1. Forward Mode:
  2. Contact (Contact Only): Creates only a contact record in HubSpot for each new customer.
  3. Contact + Deal: Creates both a contact and a new sales deal, automatically linking them together (Association). In this mode, selecting a Pipeline and Deal Stage is mandatory.
  4. Lifecycle Stage: HubSpot CRM does not have a separate "Lead" object in standard configurations. In Supsis, the lead state is managed through the contact's Lifecycle Stage. Available values:
  5. lead (Default)
  6. subscriber
  7. marketingqualifiedlead (MQL)
  8. salesqualifiedlead (SQL)
  9. opportunity
  10. customer
  11. evangelist
  12. other
  13. Phone Format:
  14. E.164 (with +): +905xxxxxxxxx
  15. Without +: 905xxxxxxxxx (HubSpot searches phone, mobilephone, and computed normalized phone fields simultaneously).
  16. Default Owner: Specifies the default HubSpot user assigned to newly created records. If left blank, HubSpot's portal default applies.
  17. Field Mapping: Map Supsis contact and session variables to HubSpot custom properties using templates (e.g., {{contact.phone}}, {{contact.name}}).

5.c – Deduplication Logic (Dedup)

To prevent duplicate contact records from polluting your CRM database:

STEP 1

Incoming Customer & HubSpot Contact ID Check

YES (ID EXISTS) 🔗 Link to Existing Contact

If a previously stored HubSpot Contact ID exists, no new record is created; the chat is linked directly.

NO (NO ID) 🔍 Deduplication Search by Phone & Email

If no ID exists, queries are dispatched to the HubSpot REST API across phone and email fields.

STEP 2

Search Result & Record Creation

RECORD FOUND ✅ Match with Existing Contact

Existing HubSpot Contact is linked and updated with the Supsis visitor, preventing duplicates.

NO RECORD FOUND ✨ Create New Record

A new record is created automatically according to the selected mode (Contact or Contact + Deal).


6- HubSpot Widget in Live Chat

When the HubSpot integration is active, agents gain access to a dedicated CRM panel directly inside the live chat interface:

  1. Access: In the chat view, click the HubSpot tab in the right-side customer profile pane.
  2. Contacts Tab: Shows customer name, title, email, phone, lifecycle stage, and assigned owner. The "View in HubSpot" button opens the record directly in HubSpot with a single click.
  3. Deals Tab: Lists all active and closed deals associated with the contact, showing stage, amount, and close date. Agents can append notes directly to deals from this panel.
  4. Companies Tab: Displays associated organization details in read-only mode.
  5. Activities Tab: Displays tasks and past communication touchpoints tied to the contact.

Supsis Live Chat Screen HubSpot Info and Widget View

HubSpot Forwarded Contacts List View

HubSpot Contact Detail Page


7- User Mapping and Visibility

7.a – User Mapping

Under the User mapping tab of your HubSpot channel, match Supsis support agents with HubSpot Owners via their email addresses:

  • When an agent reassigns record ownership in the chat widget, this mapping table is referenced.
  • When records are assigned in HubSpot, notifications can be routed to the corresponding Supsis agent.

Supsis Channel Detail User Mapping Table

7.b – Visibility

Control which departments and agent teams can access the HubSpot CRM channel and inspect CRM widget data using the Visibility tab.

Supsis Channel Detail Visibility Tab


8- Webhook Setup and Automation Triggers

Accounts connected via Private App can receive real-time webhook events from HubSpot to trigger Supsis automations.

8.a – Webhook Configuration Steps

  1. In Supsis, go to Integrations > HubSpot CRM > Channel Detail > Webhooks.
  2. Copy the dedicated Target URL. (Format: https://socket.supsis.live/webhook/hubspot/{siteId}/{channelId})
  3. In your HubSpot Private App settings, open the Webhooks tab and paste the Target URL.
  4. Under Event subscriptions, subscribe to the recommended events:
  5. contact.creation, contact.propertyChange, contact.deletion
  6. deal.creation, deal.propertyChange, deal.deletion
  7. company.creation, company.propertyChange
  8. ticket.creation
  9. Save the webhook settings in HubSpot.
  10. Copy the Client Secret from the Private App Auth tab, paste it into the Detail tab of your Supsis channel, and save.

HMAC Signature Verification (X-HubSpot-Signature-v3)

If no Client Secret is configured, webhook requests are validated only against Portal ID matching. When a Client Secret is supplied, requests are cryptographically verified using X-HubSpot-Signature-v3, and requests older than 5 minutes are rejected for security.

8.b – Automation Trigger Events

Under the HubSpot module in the Supsis Automation Designer, 10 distinct events are available:

Trigger Event Name System Event Code Description
When HubSpot contact is created hubspot.contact_created Fires when a new contact is created in HubSpot.
When HubSpot contact is updated hubspot.contact_updated Fires when contact properties are modified.
When HubSpot contact is deleted hubspot.contact_deleted Fires when a contact is removed.
When HubSpot deal is created hubspot.deal_created Fires when a new deal is opened.
When HubSpot deal is updated hubspot.deal_updated Fires when deal properties are updated.
When HubSpot deal stage changed hubspot.deal_stage_changed Fires when a deal moves to a new pipeline stage (e.g., Won/Lost).
When HubSpot deal is deleted hubspot.deal_deleted Fires when a deal is removed.
When HubSpot company is created hubspot.company_created Fires when a new company is added.
When HubSpot company is updated hubspot.company_updated Fires when company properties are updated.
When HubSpot ticket is created hubspot.ticket_created Fires when a new service ticket is opened.

Event-Based Automation HubSpot Trigger Events


9- Supsis Automation Designer & Action Blocks

The Automation Flow Designer provides 4 dedicated blocks under the orange HubSpot Actions palette:

  1. Find HubSpot Contact by Phone: Searches for a contact using their phone number and returns the HubSpot Contact ID for subsequent blocks.
  2. Create HubSpot Record: Creates a Contact, Deal, Note, Task, or Ticket object with dynamic property values populated from HubSpot schemas.
  3. Update HubSpot Record: Updates properties on an existing record (including reassigning owners).
  4. Add Note to HubSpot: Appends a rich-text note to the timeline of an associated contact or deal.

Supsis Automation Designer 4 HubSpot Action Blocks

Automation Create Record Block Configuration Panel

9.a – JavaScript SDK and Code Blocks

Custom programmatic workflows can be executed within Chatbot and Automation JavaScript code blocks via the supsis.hubspot object:

// Example: Find contact in HubSpot by phone number
const contact = await supsis.hubspot.findContactByPhone("+15551234567");

if (contact) {
  // Create a new Deal associated with the contact
  await supsis.hubspot.createRecord("deals", {
    dealname: "WhatsApp Inquiry Lead",
    amount: "15000",
    dealstage: "appointmentscheduled",
    pipeline: "default"
  }, { associateContactId: contact.id });

  // Append an activity note
  await supsis.hubspot.addNote(contact.id, "Customer requested a live demo via WhatsApp.");
}

10- Troubleshooting & FAQ

10.a – "Channel card displays 'Reconnection required' warning"

  • The Access Token in HubSpot may have been rotated, deleted, or the user who created it may have lost developer permissions.
  • Resolution: Generate a new Access Token in HubSpot, navigate to HubSpot CRM > Channel Detail > Detail in Supsis, paste the token, and save.

10.b – "Duplicate contacts are created in HubSpot"

  • The phone number formatting in the source channel might not match the format stored in HubSpot (e.g., numbers formatted with + vs without +).
  • Resolution: In WhatsApp channel settings, align the Phone Format setting with your HubSpot database standard (E.164 with + or Without +).

10.c – "Automation does not trigger when Deal stage changes"

  • The deal.propertyChange subscription may be missing from your Private App webhooks.
  • Resolution: In HubSpot Private App → Webhooks, ensure deal.propertyChange is active and verify that the Client Secret is entered in Supsis channel details.

10.d – "Rate Limit (429 Too Many Requests) errors"

  • The HubSpot Search API enforces a limit of approximately 4–5 requests per second. Burst requests during bulk messaging campaigns can exceed this threshold.
  • Resolution: Introduce short delay blocks between sequential searches in automation flows or leverage Contact ID caching.