HubSpot CRM Automation via Rube MCP
Automate HubSpot CRM workflows including contact/company management, deal pipeline tracking, ticket search, and custom property creation through Composio's HubSpot toolkit.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active HubSpot connection via
RUBE_MANAGE_CONNECTIONS with toolkit hubspot
- Always call
RUBE_SEARCH_TOOLS first to get current tool schemas
Setup
Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
RUBE_SEARCH_TOOLS responds
- Call
RUBE_MANAGE_CONNECTIONS with toolkit hubspot
- If connection is not ACTIVE, follow the returned auth link to complete HubSpot OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Create and Manage Contacts
When to use: User wants to create new contacts or update existing ones in HubSpot CRM
Tool sequence:
HUBSPOT_GET_ACCOUNT_INFO - Verify connection and permissions (Prerequisite)
HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA - Search for existing contacts to avoid duplicates (Prerequisite)
HUBSPOT_READ_A_CRM_PROPERTY_BY_NAME - Check property metadata for constrained values (Optional)
HUBSPOT_CREATE_CONTACT - Create a single contact (Required)
HUBSPOT_CREATE_CONTACTS - Batch create contacts up to 100 (Alternative)
Key parameters:
HUBSPOT_CREATE_CONTACT: properties object with email, firstname, lastname, phone, company
HUBSPOT_CREATE_CONTACTS: inputs array of {properties} objects, max 100 per batch
HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA: filterGroups array with {filters: [{propertyName, operator, value}]}, properties array of fields to return
Pitfalls:
- Max 100 records per batch; chunk larger imports
- 400 'Property values were not valid' if using incorrect property names or enum values
- Always search before creating to avoid duplicates
- Auth errors from GET_ACCOUNT_INFO mean all subsequent calls will fail
2. Manage Companies
When to use: User wants to create, search, or update company records
Tool sequence:
HUBSPOT_SEARCH_COMPANIES - Search existing companies (Prerequisite)
HUBSPOT_CREATE_COMPANIES - Batch create companies, max 100 (Required)
HUBSPOT_UPDATE_COMPANIES - Batch update existing companies (Alternative)
HUBSPOT_GET_COMPANY - Get single company details (Optional)
HUBSPOT_BATCH_READ_COMPANIES_BY_PROPERTIES - Bulk read companies by property values (Optional)
Key parameters:
HUBSPOT_CREATE_COMPANIES: inputs array of {properties} objects, max 100
HUBSPOT_SEARCH_COMPANIES: filterGroups, properties, sorts, limit, after (pagination cursor)
Pitfalls:
- Max 100 per batch; chunk larger sets
- Store returned IDs immediately for downstream operations
- Property values must match exact internal names, not display labels
3. Manage Deals and Pipeline
When to use: User wants to search deals, view pipeline stages, or track deal progress
Tool sequence:
HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE - Map pipeline and stage IDs/names (Prerequisite)
HUBSPOT_SEARCH_DEALS - Search deals with filters (Required)
HUBSPOT_RETRIEVE_PIPELINE_STAGES - Get stage details for one pipeline (Optional)
HUBSPOT_RETRIEVE_OWNERS - Get owner/rep details (Optional)
HUBSPOT_GET_DEAL - Get single deal details (Optional)
HUBSPOT_LIST_DEALS - List all deals without filters (Fallback)
Key parameters:
HUBSPOT_SEARCH_DEALS: filterGroups with filters on pipeline, dealstage, createdate, closedate, hubspot_owner_id; properties, sorts, limit, after
HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE: objectType set to 'deals'
Pitfalls:
- Results nested under
response.data.results; properties are often strings (amounts, dates)
- Stage IDs may be readable strings or opaque numeric IDs; use
label field for display
- Filters must use internal property names (
pipeline, dealstage, createdate), not display names
- Paginate via
paging.next.after until absent
4. Search and Filter Tickets
When to use: User wants to find support tickets by status, date, or criteria
Tool sequence:
HUBSPOT_SEARCH_TICKETS - Search with filterGroups (Required)
HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE - Discover available property names (Fallback)
HUBSPOT_GET_TICKET - Get single ticket details (Optional)
HUBSPOT_GET_TICKETS - Bulk fetch tickets by IDs (Optional)
Key parameters:
HUBSPOT_SEARCH_TICKETS: filterGroups, properties (only listed fields are returned), sorts, limit, after
Pitfalls:
- Incorrect
propertyName/operator returns zero results without errors
- Date filtering may require epoch-ms bounds; mixing formats causes mismatches
- Only fields in the
properties array are returned; missing ones break downstream logic
- Use READ_ALL_PROPERTIES to discover exact internal property names
5. Create and Manage Custom Properties
When to use: User wants to add custom fields to CRM objects
Tool sequence:
HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE - List existing properties (Prerequisite)
HUBSPOT_READ_PROPERTY_GROUPS_FOR_OBJECT_TYPE - List property groups (Optional)
HUBSPOT_CREATE_PROPERTY_FOR_SPECIFIED_OBJECT_TYPE - Create a single property (Required)
HUBSPOT_CREATE_BATCH_OF_PROPERTIES - Batch create properties (Alternative)
HUBSPOT_UPDATE_SPECIFIC_CRM_PROPERTY - Update existing property definition (Optional)
Key parameters:
HUBSPOT_CREATE_PROPERTY_FOR_SPECIFIED_OBJECT_TYPE: objectType, name, label, type (string/number/date/enumeration), fieldType, groupName, options (for enumerations)
Pitfalls:
- Property names are immutable after creation; choose carefully
- Enumeration options must be pre-defined with
value and label
- Group must exist before assigning properties to it
Common Patterns
ID Resolution
- Property display name → internal name: Use
HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE
- Pipeline name → pipeline ID: Use
HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE
- Stage name → stage ID: Extract from pipeline stages response
- Owner name → owner ID: Use
HUBSPOT_RETRIEVE_OWNERS
Pagination
- Search endpoints use cursor-based pagination
- Follow
paging.next.after until absent
- Typical limit: 100 records per page
- Pass
after value from previous response to get next page
Batch Operations
- Most create/update endpoints support batching with max 100 records per call
- For larger datasets, chunk into groups of 100
- Store returned IDs from each batch before proceeding
- Use batch endpoints (
CREATE_CONTACTS, CREATE_COMPANIES, UPDATE_COMPANIES) instead of single-record endpoints for efficiency
Known Pitfalls
- Property names: All search/filter endpoints use internal property names, NOT display labels. Always call
READ_ALL_PROPERTIES_FOR_OBJECT_TYPE to discover correct names
- Batch limits: Max 100 records per batch operation. Larger sets must be chunked
- Response structure: Search results are nested under
response.data.results with properties as string values
- Date formats: Date properties may be epoch-ms or ISO strings depending on endpoint. Parse defensively
- Immutable names: Property names cannot be changed after creation. Plan naming conventions carefully
- Cursor pagination: Use
paging.next.after cursor, not page numbers. Continue until after is absent
- Duplicate prevention: Always search before creating contacts/companies to avoid duplicates
- Auth verification: Run
HUBSPOT_GET_ACCOUNT_INFO first; auth failures cascade to all subsequent calls
Quick Reference
| Task |
Tool Slug |
Key Params |
| Create contact |
HUBSPOT_CREATE_CONTACT |
properties: {email, firstname, lastname} |
| Batch create contacts |
HUBSPOT_CREATE_CONTACTS |
inputs: [{properties}] (max 100) |
| Search contacts |
HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA |
filterGroups, properties, limit, after |
| Create companies |
HUBSPOT_CREATE_COMPANIES |
inputs: [{properties}] (max 100) |
| Search companies |
HUBSPOT_SEARCH_COMPANIES |
filterGroups, properties, after |
| Search deals |
HUBSPOT_SEARCH_DEALS |
filterGroups, properties, after |
| Get pipelines |
HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE |
objectType: 'deals' |
| Search tickets |
HUBSPOT_SEARCH_TICKETS |
filterGroups, properties, after |
| List properties |
HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE |
objectType |
| Create property |
HUBSPOT_CREATE_PROPERTY_FOR_SPECIFIED_OBJECT_TYPE |
objectType, name, label, type, fieldType |
| Get owners |
HUBSPOT_RETRIEVE_OWNERS |
None |
| Verify connection |
HUBSPOT_GET_ACCOUNT_INFO |
None |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Example
User request:
Automate HubSpot CRM operations (contacts, companies, deals, tickets, properties) via Rube MCP using Composio integration.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
1---2name: hubspot-automation3description: Automate HubSpot CRM operations (contacts, companies, deals, tickets, properties) via Rube MCP using Composio integration.4---5
6# HubSpot CRM Automation via Rube MCP
7
8Automate HubSpot CRM workflows including contact/company management, deal pipeline tracking, ticket search, and custom property creation through Composio's HubSpot toolkit.
9
10## Prerequisites
11
12- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
13- Active HubSpot connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `hubspot`
14- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas
15
16## Setup
17
18**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
19
201. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds
212. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `hubspot`
223. If connection is not ACTIVE, follow the returned auth link to complete HubSpot OAuth
234. Confirm connection status shows ACTIVE before running any workflows
24
25## Core Workflows
26
27### 1. Create and Manage Contacts
28
29**When to use**: User wants to create new contacts or update existing ones in HubSpot CRM
30
31**Tool sequence**:
321. `HUBSPOT_GET_ACCOUNT_INFO` - Verify connection and permissions (Prerequisite)
332. `HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA` - Search for existing contacts to avoid duplicates (Prerequisite)
343. `HUBSPOT_READ_A_CRM_PROPERTY_BY_NAME` - Check property metadata for constrained values (Optional)
354. `HUBSPOT_CREATE_CONTACT` - Create a single contact (Required)
365. `HUBSPOT_CREATE_CONTACTS` - Batch create contacts up to 100 (Alternative)
37
38**Key parameters**:
39- `HUBSPOT_CREATE_CONTACT`: `properties` object with `email`, `firstname`, `lastname`, `phone`, `company`
40- `HUBSPOT_CREATE_CONTACTS`: `inputs` array of `{properties}` objects, max 100 per batch
41- `HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA`: `filterGroups` array with `{filters: [{propertyName, operator, value}]}`, `properties` array of fields to return
42
43**Pitfalls**:
44- Max 100 records per batch; chunk larger imports
45- 400 'Property values were not valid' if using incorrect property names or enum values
46- Always search before creating to avoid duplicates
47- Auth errors from GET_ACCOUNT_INFO mean all subsequent calls will fail
48
49### 2. Manage Companies
50
51**When to use**: User wants to create, search, or update company records
52
53**Tool sequence**:
541. `HUBSPOT_SEARCH_COMPANIES` - Search existing companies (Prerequisite)
552. `HUBSPOT_CREATE_COMPANIES` - Batch create companies, max 100 (Required)
563. `HUBSPOT_UPDATE_COMPANIES` - Batch update existing companies (Alternative)
574. `HUBSPOT_GET_COMPANY` - Get single company details (Optional)
585. `HUBSPOT_BATCH_READ_COMPANIES_BY_PROPERTIES` - Bulk read companies by property values (Optional)
59
60**Key parameters**:
61- `HUBSPOT_CREATE_COMPANIES`: `inputs` array of `{properties}` objects, max 100
62- `HUBSPOT_SEARCH_COMPANIES`: `filterGroups`, `properties`, `sorts`, `limit`, `after` (pagination cursor)
63
64**Pitfalls**:
65- Max 100 per batch; chunk larger sets
66- Store returned IDs immediately for downstream operations
67- Property values must match exact internal names, not display labels
68
69### 3. Manage Deals and Pipeline
70
71**When to use**: User wants to search deals, view pipeline stages, or track deal progress
72
73**Tool sequence**:
741. `HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE` - Map pipeline and stage IDs/names (Prerequisite)
752. `HUBSPOT_SEARCH_DEALS` - Search deals with filters (Required)
763. `HUBSPOT_RETRIEVE_PIPELINE_STAGES` - Get stage details for one pipeline (Optional)
774. `HUBSPOT_RETRIEVE_OWNERS` - Get owner/rep details (Optional)
785. `HUBSPOT_GET_DEAL` - Get single deal details (Optional)
796. `HUBSPOT_LIST_DEALS` - List all deals without filters (Fallback)
80
81**Key parameters**:
82- `HUBSPOT_SEARCH_DEALS`: `filterGroups` with filters on `pipeline`, `dealstage`, `createdate`, `closedate`, `hubspot_owner_id`; `properties`, `sorts`, `limit`, `after`
83- `HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE`: `objectType` set to `'deals'`
84
85**Pitfalls**:
86- Results nested under `response.data.results`; properties are often strings (amounts, dates)
87- Stage IDs may be readable strings or opaque numeric IDs; use `label` field for display
88- Filters must use internal property names (`pipeline`, `dealstage`, `createdate`), not display names
89- Paginate via `paging.next.after` until absent
90
91### 4. Search and Filter Tickets
92
93**When to use**: User wants to find support tickets by status, date, or criteria
94
95**Tool sequence**:
961. `HUBSPOT_SEARCH_TICKETS` - Search with filterGroups (Required)
972. `HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE` - Discover available property names (Fallback)
983. `HUBSPOT_GET_TICKET` - Get single ticket details (Optional)
994. `HUBSPOT_GET_TICKETS` - Bulk fetch tickets by IDs (Optional)
100
101**Key parameters**:
102- `HUBSPOT_SEARCH_TICKETS`: `filterGroups`, `properties` (only listed fields are returned), `sorts`, `limit`, `after`
103
104**Pitfalls**:
105- Incorrect `propertyName`/`operator` returns zero results without errors
106- Date filtering may require epoch-ms bounds; mixing formats causes mismatches
107- Only fields in the `properties` array are returned; missing ones break downstream logic
108- Use READ_ALL_PROPERTIES to discover exact internal property names
109
110### 5. Create and Manage Custom Properties
111
112**When to use**: User wants to add custom fields to CRM objects
113
114**Tool sequence**:
1151. `HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE` - List existing properties (Prerequisite)
1162. `HUBSPOT_READ_PROPERTY_GROUPS_FOR_OBJECT_TYPE` - List property groups (Optional)
1173. `HUBSPOT_CREATE_PROPERTY_FOR_SPECIFIED_OBJECT_TYPE` - Create a single property (Required)
1184. `HUBSPOT_CREATE_BATCH_OF_PROPERTIES` - Batch create properties (Alternative)
1195. `HUBSPOT_UPDATE_SPECIFIC_CRM_PROPERTY` - Update existing property definition (Optional)
120
121**Key parameters**:
122- `HUBSPOT_CREATE_PROPERTY_FOR_SPECIFIED_OBJECT_TYPE`: `objectType`, `name`, `label`, `type` (string/number/date/enumeration), `fieldType`, `groupName`, `options` (for enumerations)
123
124**Pitfalls**:
125- Property names are immutable after creation; choose carefully
126- Enumeration options must be pre-defined with `value` and `label`
127- Group must exist before assigning properties to it
128
129## Common Patterns
130
131### ID Resolution
132- **Property display name → internal name**: Use `HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE`
133- **Pipeline name → pipeline ID**: Use `HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE`
134- **Stage name → stage ID**: Extract from pipeline stages response
135- **Owner name → owner ID**: Use `HUBSPOT_RETRIEVE_OWNERS`
136
137### Pagination
138- Search endpoints use cursor-based pagination
139- Follow `paging.next.after` until absent
140- Typical limit: 100 records per page
141- Pass `after` value from previous response to get next page
142
143### Batch Operations
144- Most create/update endpoints support batching with max 100 records per call
145- For larger datasets, chunk into groups of 100
146- Store returned IDs from each batch before proceeding
147- Use batch endpoints (`CREATE_CONTACTS`, `CREATE_COMPANIES`, `UPDATE_COMPANIES`) instead of single-record endpoints for efficiency
148
149## Known Pitfalls
150
151- **Property names**: All search/filter endpoints use internal property names, NOT display labels. Always call `READ_ALL_PROPERTIES_FOR_OBJECT_TYPE` to discover correct names
152- **Batch limits**: Max 100 records per batch operation. Larger sets must be chunked
153- **Response structure**: Search results are nested under `response.data.results` with properties as string values
154- **Date formats**: Date properties may be epoch-ms or ISO strings depending on endpoint. Parse defensively
155- **Immutable names**: Property names cannot be changed after creation. Plan naming conventions carefully
156- **Cursor pagination**: Use `paging.next.after` cursor, not page numbers. Continue until `after` is absent
157- **Duplicate prevention**: Always search before creating contacts/companies to avoid duplicates
158- **Auth verification**: Run `HUBSPOT_GET_ACCOUNT_INFO` first; auth failures cascade to all subsequent calls
159
160## Quick Reference
161
162| Task | Tool Slug | Key Params |
163|------|-----------|------------|
164| Create contact | `HUBSPOT_CREATE_CONTACT` | `properties: {email, firstname, lastname}` |
165| Batch create contacts | `HUBSPOT_CREATE_CONTACTS` | `inputs: [{properties}]` (max 100) |
166| Search contacts | `HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA` | `filterGroups, properties, limit, after` |
167| Create companies | `HUBSPOT_CREATE_COMPANIES` | `inputs: [{properties}]` (max 100) |
168| Search companies | `HUBSPOT_SEARCH_COMPANIES` | `filterGroups, properties, after` |
169| Search deals | `HUBSPOT_SEARCH_DEALS` | `filterGroups, properties, after` |
170| Get pipelines | `HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE` | `objectType: 'deals'` |
171| Search tickets | `HUBSPOT_SEARCH_TICKETS` | `filterGroups, properties, after` |
172| List properties | `HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE` | `objectType` |
173| Create property | `HUBSPOT_CREATE_PROPERTY_FOR_SPECIFIED_OBJECT_TYPE` | `objectType, name, label, type, fieldType` |
174| Get owners | `HUBSPOT_RETRIEVE_OWNERS` | None |
175| Verify connection | `HUBSPOT_GET_ACCOUNT_INFO` | None |
176
177## When to Use
178This skill is applicable to execute the workflow or actions described in the overview.
179
180## Example
181
182**User request:**
183
184> Automate HubSpot CRM operations (contacts, companies, deals, tickets, properties) via Rube MCP using Composio integration.
185
186## Limitations
187- Use this skill only when the task clearly matches the scope described above.
188- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
189- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.