[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-01fe6125-75bd-41a6-8230-89e796048312":3,"$fB9si5oqM7mhC3TAvGeZujCLwM8jYxZzC9vQjPfxilOs":43},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":34},"01fe6125-75bd-41a6-8230-89e796048312","hubspot-automation","通过Composio集成使用Rube MCP自动化HubSpot CRM操作（联系人、公司、交易、票据、属性）。","cat_prod_automation","mod_productivity","sickn33,productivity","---\nname: hubspot-automation\ndescription: \"Automate HubSpot CRM operations (contacts, companies, deals, tickets, properties) via Rube MCP using Composio integration.\"\nrisk: critical\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# HubSpot CRM Automation via Rube MCP\n\nAutomate HubSpot CRM workflows including contact\u002Fcompany management, deal pipeline tracking, ticket search, and custom property creation through Composio's HubSpot toolkit.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active HubSpot connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `hubspot`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `hubspot`\n3. If connection is not ACTIVE, follow the returned auth link to complete HubSpot OAuth\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. Create and Manage Contacts\n\n**When to use**: User wants to create new contacts or update existing ones in HubSpot CRM\n\n**Tool sequence**:\n1. `HUBSPOT_GET_ACCOUNT_INFO` - Verify connection and permissions (Prerequisite)\n2. `HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA` - Search for existing contacts to avoid duplicates (Prerequisite)\n3. `HUBSPOT_READ_A_CRM_PROPERTY_BY_NAME` - Check property metadata for constrained values (Optional)\n4. `HUBSPOT_CREATE_CONTACT` - Create a single contact (Required)\n5. `HUBSPOT_CREATE_CONTACTS` - Batch create contacts up to 100 (Alternative)\n\n**Key parameters**:\n- `HUBSPOT_CREATE_CONTACT`: `properties` object with `email`, `firstname`, `lastname`, `phone`, `company`\n- `HUBSPOT_CREATE_CONTACTS`: `inputs` array of `{properties}` objects, max 100 per batch\n- `HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA`: `filterGroups` array with `{filters: [{propertyName, operator, value}]}`, `properties` array of fields to return\n\n**Pitfalls**:\n- Max 100 records per batch; chunk larger imports\n- 400 'Property values were not valid' if using incorrect property names or enum values\n- Always search before creating to avoid duplicates\n- Auth errors from GET_ACCOUNT_INFO mean all subsequent calls will fail\n\n### 2. Manage Companies\n\n**When to use**: User wants to create, search, or update company records\n\n**Tool sequence**:\n1. `HUBSPOT_SEARCH_COMPANIES` - Search existing companies (Prerequisite)\n2. `HUBSPOT_CREATE_COMPANIES` - Batch create companies, max 100 (Required)\n3. `HUBSPOT_UPDATE_COMPANIES` - Batch update existing companies (Alternative)\n4. `HUBSPOT_GET_COMPANY` - Get single company details (Optional)\n5. `HUBSPOT_BATCH_READ_COMPANIES_BY_PROPERTIES` - Bulk read companies by property values (Optional)\n\n**Key parameters**:\n- `HUBSPOT_CREATE_COMPANIES`: `inputs` array of `{properties}` objects, max 100\n- `HUBSPOT_SEARCH_COMPANIES`: `filterGroups`, `properties`, `sorts`, `limit`, `after` (pagination cursor)\n\n**Pitfalls**:\n- Max 100 per batch; chunk larger sets\n- Store returned IDs immediately for downstream operations\n- Property values must match exact internal names, not display labels\n\n### 3. Manage Deals and Pipeline\n\n**When to use**: User wants to search deals, view pipeline stages, or track deal progress\n\n**Tool sequence**:\n1. `HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE` - Map pipeline and stage IDs\u002Fnames (Prerequisite)\n2. `HUBSPOT_SEARCH_DEALS` - Search deals with filters (Required)\n3. `HUBSPOT_RETRIEVE_PIPELINE_STAGES` - Get stage details for one pipeline (Optional)\n4. `HUBSPOT_RETRIEVE_OWNERS` - Get owner\u002Frep details (Optional)\n5. `HUBSPOT_GET_DEAL` - Get single deal details (Optional)\n6. `HUBSPOT_LIST_DEALS` - List all deals without filters (Fallback)\n\n**Key parameters**:\n- `HUBSPOT_SEARCH_DEALS`: `filterGroups` with filters on `pipeline`, `dealstage`, `createdate`, `closedate`, `hubspot_owner_id`; `properties`, `sorts`, `limit`, `after`\n- `HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE`: `objectType` set to `'deals'`\n\n**Pitfalls**:\n- Results nested under `response.data.results`; properties are often strings (amounts, dates)\n- Stage IDs may be readable strings or opaque numeric IDs; use `label` field for display\n- Filters must use internal property names (`pipeline`, `dealstage`, `createdate`), not display names\n- Paginate via `paging.next.after` until absent\n\n### 4. Search and Filter Tickets\n\n**When to use**: User wants to find support tickets by status, date, or criteria\n\n**Tool sequence**:\n1. `HUBSPOT_SEARCH_TICKETS` - Search with filterGroups (Required)\n2. `HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE` - Discover available property names (Fallback)\n3. `HUBSPOT_GET_TICKET` - Get single ticket details (Optional)\n4. `HUBSPOT_GET_TICKETS` - Bulk fetch tickets by IDs (Optional)\n\n**Key parameters**:\n- `HUBSPOT_SEARCH_TICKETS`: `filterGroups`, `properties` (only listed fields are returned), `sorts`, `limit`, `after`\n\n**Pitfalls**:\n- Incorrect `propertyName`\u002F`operator` returns zero results without errors\n- Date filtering may require epoch-ms bounds; mixing formats causes mismatches\n- Only fields in the `properties` array are returned; missing ones break downstream logic\n- Use READ_ALL_PROPERTIES to discover exact internal property names\n\n### 5. Create and Manage Custom Properties\n\n**When to use**: User wants to add custom fields to CRM objects\n\n**Tool sequence**:\n1. `HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE` - List existing properties (Prerequisite)\n2. `HUBSPOT_READ_PROPERTY_GROUPS_FOR_OBJECT_TYPE` - List property groups (Optional)\n3. `HUBSPOT_CREATE_PROPERTY_FOR_SPECIFIED_OBJECT_TYPE` - Create a single property (Required)\n4. `HUBSPOT_CREATE_BATCH_OF_PROPERTIES` - Batch create properties (Alternative)\n5. `HUBSPOT_UPDATE_SPECIFIC_CRM_PROPERTY` - Update existing property definition (Optional)\n\n**Key parameters**:\n- `HUBSPOT_CREATE_PROPERTY_FOR_SPECIFIED_OBJECT_TYPE`: `objectType`, `name`, `label`, `type` (string\u002Fnumber\u002Fdate\u002Fenumeration), `fieldType`, `groupName`, `options` (for enumerations)\n\n**Pitfalls**:\n- Property names are immutable after creation; choose carefully\n- Enumeration options must be pre-defined with `value` and `label`\n- Group must exist before assigning properties to it\n\n## Common Patterns\n\n### ID Resolution\n- **Property display name → internal name**: Use `HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE`\n- **Pipeline name → pipeline ID**: Use `HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE`\n- **Stage name → stage ID**: Extract from pipeline stages response\n- **Owner name → owner ID**: Use `HUBSPOT_RETRIEVE_OWNERS`\n\n### Pagination\n- Search endpoints use cursor-based pagination\n- Follow `paging.next.after` until absent\n- Typical limit: 100 records per page\n- Pass `after` value from previous response to get next page\n\n### Batch Operations\n- Most create\u002Fupdate endpoints support batching with max 100 records per call\n- For larger datasets, chunk into groups of 100\n- Store returned IDs from each batch before proceeding\n- Use batch endpoints (`CREATE_CONTACTS`, `CREATE_COMPANIES`, `UPDATE_COMPANIES`) instead of single-record endpoints for efficiency\n\n## Known Pitfalls\n\n- **Property names**: All search\u002Ffilter endpoints use internal property names, NOT display labels. Always call `READ_ALL_PROPERTIES_FOR_OBJECT_TYPE` to discover correct names\n- **Batch limits**: Max 100 records per batch operation. Larger sets must be chunked\n- **Response structure**: Search results are nested under `response.data.results` with properties as string values\n- **Date formats**: Date properties may be epoch-ms or ISO strings depending on endpoint. Parse defensively\n- **Immutable names**: Property names cannot be changed after creation. Plan naming conventions carefully\n- **Cursor pagination**: Use `paging.next.after` cursor, not page numbers. Continue until `after` is absent\n- **Duplicate prevention**: Always search before creating contacts\u002Fcompanies to avoid duplicates\n- **Auth verification**: Run `HUBSPOT_GET_ACCOUNT_INFO` first; auth failures cascade to all subsequent calls\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| Create contact | `HUBSPOT_CREATE_CONTACT` | `properties: {email, firstname, lastname}` |\n| Batch create contacts | `HUBSPOT_CREATE_CONTACTS` | `inputs: [{properties}]` (max 100) |\n| Search contacts | `HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA` | `filterGroups, properties, limit, after` |\n| Create companies | `HUBSPOT_CREATE_COMPANIES` | `inputs: [{properties}]` (max 100) |\n| Search companies | `HUBSPOT_SEARCH_COMPANIES` | `filterGroups, properties, after` |\n| Search deals | `HUBSPOT_SEARCH_DEALS` | `filterGroups, properties, after` |\n| Get pipelines | `HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE` | `objectType: 'deals'` |\n| Search tickets | `HUBSPOT_SEARCH_TICKETS` | `filterGroups, properties, after` |\n| List properties | `HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE` | `objectType` |\n| Create property | `HUBSPOT_CREATE_PROPERTY_FOR_SPECIFIED_OBJECT_TYPE` | `objectType, name, label, type, fieldType` |\n| Get owners | `HUBSPOT_RETRIEVE_OWNERS` | None |\n| Verify connection | `HUBSPOT_GET_ACCOUNT_INFO` | None |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,125,1411,"2026-05-16 13:22:24",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"效率工具","productivity","mdi-lightning-bolt-outline","文档处理、数据分析、自动化工作流",4,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":32,"skillCount":33,"createdAt":26},"自动化","automation","mdi-robot-outline","工作流自动化、批处理",3,101,[35],{"id":36,"skillId":4,"version":37,"fileName":38,"fileSize":39,"filePath":40,"fileHash":41,"manifest":42,"createdAt":19},"3448f455-33fa-4cb3-8655-fb6b892a885a","1.0.0","hubspot-automation.zip",3508,"uploads\u002Fskills\u002F01fe6125-75bd-41a6-8230-89e796048312\u002Fhubspot-automation.zip","ffae7b9bc9dc68042039fffb60a00c3624c6cb082b8e0c2a3a391748d25a52fe","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":9725}]",{"code":44,"message":45,"data":46},200,"success",{"items":47,"stats":48,"page":51},[],{"averageRating":49,"totalRatings":49,"ratingCounts":50},0,[49,49,49,49,49],{"limit":52,"offset":49,"hasMore":53,"nextOffset":52,"ratedOnly":16},15,false]