> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getomni.co/llms.txt
> Use this file to discover all available pages before exploring further.

# HubSpot

> Connect HubSpot CRM to Omni for unified search across contacts, companies, deals, and activities

The HubSpot connector enables Omni to index and search content from your HubSpot CRM, including contacts, companies, deals, tickets, and engagement activities.

## Overview

### What Gets Indexed

| Object Type   | Content                                                 |
| ------------- | ------------------------------------------------------- |
| **Contacts**  | Name, email, phone, company, job title, lifecycle stage |
| **Companies** | Name, domain, industry, employee count, annual revenue  |
| **Deals**     | Deal name, amount, pipeline, stage, close date          |
| **Tickets**   | Subject, content, priority, pipeline, stage             |
| **Calls**     | Call title, body, duration, direction                   |
| **Emails**    | Subject, text/HTML content, direction                   |
| **Meetings**  | Title, body, start/end times                            |
| **Notes**     | Note content and timestamps                             |
| **Tasks**     | Subject, body, status, priority                         |

### How It Works

1. A HubSpot app access token provides read-only API access
2. The connector syncs CRM objects and engagement activities
3. Full sync mode indexes all accessible records

<Note>
  The connector uses read-only access. Omni cannot create, modify, or delete any records in your HubSpot account.
</Note>

## Prerequisites

Before setting up the HubSpot connector, ensure you have:

* **HubSpot account** with API access (Professional or Enterprise plan recommended)
* A [**HubSpot developer account**](https://developers.hubspot.com) to create and install an app

## Setup

### Step 1: Create a HubSpot App

Create an app on HubSpot's developer platform. See [HubSpot's app creation guide](https://developers.hubspot.com/docs/apps/developer-platform/build-apps/overview) for full instructions.

1. Install the HubSpot CLI and run `hs project create`
2. Choose **App** as the project type
3. Select **static token** authentication (for single-account access)

### Step 2: Configure Scopes

Add the following scopes to your app's `app-hsmeta.json` under `requiredScopes`:

| Scope                        | Purpose                                                                         |
| ---------------------------- | ------------------------------------------------------------------------------- |
| `crm.objects.contacts.read`  | Read contacts and engagement activities (calls, emails, meetings, notes, tasks) |
| `crm.objects.companies.read` | Read company records                                                            |
| `crm.objects.deals.read`     | Read deal records                                                               |
| `tickets`                    | Read ticket records                                                             |

### Step 3: Install and Get Your Access Token

1. Upload your app with `hs project upload`
2. In HubSpot, go to the project's **Distribution** tab and install the app on your account
3. Copy the **access token** from the app settings

<Warning>
  Keep your access token secure. Anyone with access to this token can read your HubSpot CRM data. You can rotate tokens at any time from your app settings.
</Warning>

### Step 4: Connect in Omni

1. Navigate to **Settings** → **Integrations** in Omni
2. Find **HubSpot** and click **Connect**
3. Enter your access token
4. Click **Connect**
5. Click **Configure** against the Hubspot integration, enable it and click **Save Configuration**. This will automatically trigger the initial sync.

<Check>
  Your HubSpot connector is now configured. Initial indexing depends on the number of records in your CRM.
</Check>

<Accordion title="Using a Legacy Private App instead">
  If you have an existing [legacy Private App](https://developers.hubspot.com/docs/apps/legacy-apps/private-apps/overview), its access token will also work. However, HubSpot recommends the new developer platform for new integrations. To create a legacy Private App:

  1. Go to **Settings** → **Integrations** → **Private Apps**
  2. Click **Create a private app** and configure the same scopes listed above
  3. Copy the access token (starts with `pat-na1-`) and use it in the Omni connection step
</Accordion>

## Managing the Integration

### Viewing Sync Status

Navigate to **Settings** → **Integrations** to view the sync status for each source directly on the list, including last sync time, number of indexed items, and any errors. Click **Configure** on a source for more details.

### Sync Behavior

The HubSpot connector currently supports **full sync** mode:

* Syncs all accessible CRM objects and engagements
* Processes records in batches of 100 (HubSpot API limit)
* Handles rate limiting automatically with exponential backoff

### Record Properties

The connector fetches specific properties for each object type. All object types include `hubspot_owner_id` for ownership tracking.

<Accordion title="Indexed properties by object type">
  **CRM Objects**

  | Object Type | Properties                                                                              |
  | ----------- | --------------------------------------------------------------------------------------- |
  | Contacts    | `firstname`, `lastname`, `email`, `phone`, `company`, `jobtitle`, `lifecyclestage`      |
  | Companies   | `name`, `domain`, `industry`, `phone`, `numberofemployees`, `annualrevenue`             |
  | Deals       | `dealname`, `amount`, `pipeline`, `dealstage`, `closedate`, `hs_deal_stage_probability` |
  | Tickets     | `subject`, `content`, `hs_ticket_priority`, `hs_pipeline`, `hs_pipeline_stage`          |

  All CRM objects also include: `hubspot_owner_id`, `createdate`, `hs_lastmodifieddate`

  **Engagement Activities**

  | Object Type | Properties                                                                            |
  | ----------- | ------------------------------------------------------------------------------------- |
  | Calls       | `hs_call_title`, `hs_call_body`, `hs_call_duration`, `hs_call_direction`              |
  | Emails      | `hs_email_subject`, `hs_email_text`, `hs_email_html`, `hs_email_direction`            |
  | Meetings    | `hs_meeting_title`, `hs_meeting_body`, `hs_meeting_start_time`, `hs_meeting_end_time` |
  | Notes       | `hs_note_body`                                                                        |
  | Tasks       | `hs_task_subject`, `hs_task_body`, `hs_task_status`, `hs_task_priority`               |

  All engagement activities also include: `hubspot_owner_id`, `hs_timestamp`, `hs_createdate`, `hs_lastmodifieddate`
</Accordion>

### Removing the Integration

1. Navigate to **Settings** → **Integrations**
2. Click **Configure** against the HubSpot source
3. Click **Delete Permanently**
4. Optionally, uninstall the app in HubSpot via your project's **Distribution** tab

## Security Considerations

* **Read-only access**: The access token only has read permissions
* **Token security**: Access tokens should be treated like passwords
* **Token rotation**: Rotate tokens periodically for security from your app settings
* **Data visibility**: All users can search indexed HubSpot records (no per-user permissions)

<Note>
  HubSpot data indexed by Omni is visible to all Omni users. Consider this when connecting accounts with sensitive CRM data.
</Note>

## What's Next

<CardGroup cols={3}>
  <Card title="Search Your Data" icon="magnifying-glass" href="/user-guide/search">
    Learn how to search across HubSpot records
  </Card>

  <Card title="AI Assistant" icon="robot" href="/user-guide/ai-assistant">
    Ask questions about your CRM data
  </Card>

  <Card title="Add More Connectors" icon="plug" href="/connectors/overview">
    Connect additional data sources
  </Card>
</CardGroup>
