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
- A HubSpot private app provides read-only API access
- The connector syncs CRM objects and engagement activities
- Records are linked by owner (hubspot_owner_id)
- Full sync mode indexes all accessible records
The connector uses read-only access. Omni cannot create, modify, or delete any records in your HubSpot account.
Prerequisites
Before setting up the HubSpot connector, ensure you have:- HubSpot account with API access (Professional or Enterprise plan recommended)
- Admin access to create private apps in HubSpot
- Omni deployment with the HubSpot connector service running
Setup
Step 1: Create a HubSpot Private App
- Log in to your HubSpot account
- Go to Settings (gear icon) → Integrations → Private Apps
- Click Create a private app
- Enter app name:
Omni Search - Add a description:
Read-only access for Omni enterprise search
Step 2: Configure Scopes
In the Scopes tab, add the following permissions:| Scope | Purpose |
|---|---|
crm.objects.contacts.read | Read contact records |
crm.objects.companies.read | Read company records |
crm.objects.deals.read | Read deal records |
tickets | Read ticket records |
e-commerce | Read engagement activities (calls, emails, meetings, notes, tasks) |
Step 3: Create the App
- Click Create app
- Review the permissions and click Continue creating
- Copy the Access token (starts with
pat-na1-)
Step 4: Note Your Portal ID (Optional)
Your HubSpot Portal ID can help identify records:- In HubSpot, look at your URL:
https://app.hubspot.com/contacts/{portal_id}/... - The number in the URL is your Portal ID
Step 5: Connect in Omni
- Navigate to Settings → Integrations in Omni
- Find HubSpot and click Connect
- Enter your Private App access token
- Optionally enter your Portal ID
- Click Connect
- Click Sync Now to start the initial sync
Your HubSpot connector is now configured. Initial indexing depends on the number of records in your CRM.
Managing the Integration
Viewing Sync Status
Navigate to Settings → Integrations → HubSpot to view:- Last sync time
- Number of indexed records by type
- Any sync errors
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. Here are the key properties indexed: Contacts:firstname,lastname,email,phonecompany,jobtitle,lifecyclestagecreatedate,hs_lastmodifieddate
name,domain,industry,phonenumberofemployees,annualrevenuecreatedate,hs_lastmodifieddate
dealname,amount,pipeline,dealstageclosedate,hs_deal_stage_probabilitycreatedate,hs_lastmodifieddate
Removing the Integration
- Navigate to Settings → Integrations → HubSpot
- Click Remove
- Optionally, delete the private app in HubSpot:
- Go to Settings → Integrations → Private Apps
- Find the Omni app and click Delete
Troubleshooting
Authentication failed (401 error)
Authentication failed (401 error)
The access token may be invalid or revoked.Solution:
- Go to HubSpot Settings → Integrations → Private Apps
- Regenerate the access token
- Update the token in Omni settings
- Trigger a new sync
Records not appearing in search
Records not appearing in search
Common causes:
- Sync has not completed yet
- Records were created after the last sync
- Private app lacks required scopes
Rate limiting (429 errors)
Rate limiting (429 errors)
HubSpot has API rate limits. The connector handles these automatically.Solution: The connector will retry with exponential backoff. For large CRMs, initial sync may take longer.
Engagements not indexed
Engagements not indexed
Engagement activities (calls, emails, meetings, notes, tasks) require the
e-commerce scope.Solution: Add the e-commerce scope to your private app and regenerate the access token.Sync taking too long
Sync taking too long
Large HubSpot accounts with many records will take longer to sync.Factors affecting sync time:
- Number of contacts, companies, and deals
- Number of engagement activities
- HubSpot API rate limits
Security Considerations
- Read-only access: The private app only has read permissions
- Token security: Access tokens should be treated like passwords
- Data visibility: All users can search indexed HubSpot records (no per-user permissions)
- Token rotation: Regenerate tokens periodically for security
HubSpot data indexed by Omni is visible to all Omni users. Consider this when connecting accounts with sensitive CRM data.