crmoauth2

HubSpot

CRM, marketing, and sales pipelines.

Verdict

HubSpot via MCP is the friendlier-than-Salesforce CRM integration — simpler data model, cleaner API, and a better fit for marketing-led orgs. The right MCP when you want AI in the loop on your CRM but you're not running enterprise Salesforce. What we notice: HubSpot's flatter object model (contacts, companies, deals, tickets) is much easier for the model to reason about than Salesforce's. Read queries are fast and reliable. Write operations work cleanly for common cases (update contact properties, log activity, move deal stage). Marketing automation triggers are accessible too — the model can enqueue email sequences or update list memberships. Best for: marketing teams using HubSpot who want AI summaries of campaign performance and lead activity; SMB sales teams using HubSpot CRM where the deal pipeline is small enough for the model to reason across; logging activity from chat conversations into the right contact record; pulling lead context before outreach. Avoid for: enterprise sales orgs with complex pipeline customisation (Salesforce is the right tool, complexity and all); workflows that need HubSpot's marketing automation editor (the model can trigger flows, not author them); orgs strict about AI write access to the CRM. Practical frame: free tier covers basic API access; paid tiers unlock the full integration. Token cost is moderate — HubSpot records are typically smaller than Salesforce's, so per-call cost is lower ($0.02-0.10).

Common use cases

  • Pull contact history during discovery calls
  • Update deal stages after client meetings
  • Archive stale leads in bulk weekly
  • Associate landing pages with campaign IDs
  • Audit pipeline health before forecast reviews

Integration

Vendor
HubSpot
Category
crm
Auth
OAUTH2
Tools
50
Composio slug
hubspot

Tools

  • Add asset association

    Associates an existing asset ('form', 'object list', or 'external web url') with a specified hubspot marketing campaign.

  • Add token to event template

    Adds a new custom data token to an existing event template for a specified hubspot application, optionally populating a crm object property if objectpropertyname is provided.

  • Archive a batch of emails by ID

    Archives multiple hubspot crm emails by id; ids must exist as archiving is irreversible.

  • Archive a batch of quotes by id

    Archives a batch of existing, non-archived quotes by their ids; this action is irreversible and useful for managing outdated or irrelevant quotes.

  • Archive a CRM object by ID

    Archives a specific hubspot crm object by its type and id, moving it to the recycling bin; this action is irreversible via the api but objects can often be restored via the hubspot ui.

  • Archive batch of companies by id

    Archives a batch of companies by their unique ids; targeted companies must exist, not be previously archived, and this api operation is irreversible.

  • Archive batch of contacts by id

    Archives a batch of existing contacts by their hubspot crm ids, rendering them inactive; this action is irreversible via the api and requires manual restoration or a separate unarchive endpoint.

  • Archive batch of deals by id

    Archives a batch of existing deals by their unique hubspot ids, removing them from active views and reports (soft delete); archived deals may be restorable.

  • Archive batch of feedback submissions by id

    Asynchronously archives a batch of hubspot feedback submissions using their unique ids, which must correspond to valid and existing submissions; the operation is queued, and submissions are moved from active views without being deleted.

  • Archive batch of line items by id

    Archives a batch of existing line items by their unique ids in hubspot crm; this operation is irreversible via the api.

  • Archive batch of objects by id

    Archives a batch of existing, non-archived crm objects of a specified `objecttype` by their ids, effectively hiding them from active use.

  • Archive batch of properties

    Archives a batch of properties by their internal names for a specified hubspot crm object type; this operation is idempotent and safe to retry.

  • Archive batch of tickets by id

    Archives a batch of existing, unarchived hubspot crm tickets by their unique ids.

  • Archive batch products by id

    Archives a batch of existing, unarchived hubspot products by their ids; this action is irreversible via the api.

  • Archive company

    Archives an existing company in hubspot crm by its `companyid`, moving it to a recycling bin from which it can be restored, rather than permanently deleting it.

  • Archive contact by id

    Archives a contact in hubspot crm by its id, moving it to the recycling bin; this is generally irreversible via api and removes the contact from active use.

  • Archive email

    Archives the hubspot email specified by `emailid` by moving it to the recycling bin, making it inaccessible unless restored.

  • Archive emails

    Archives multiple hubspot emails by their ids.

  • Archive feedback submission

    Archives an existing, non-archived feedback submission in hubspot crm by its id, moving it to the recycling bin (not permanently deleting it).

  • Archive line item by id

    Archives a specific hubspot line item by its id, moving it to a recoverable state.

  • Archive product

    Archives a hubspot product by its id.

  • Archive product by product ID

    Archives an existing product in hubspot crm by its `productid`, moving it to an archived state (irreversible via api) to remove it from active use while retaining its data.

  • Archive products

    Archives multiple hubspot products by their ids.

  • Archive property by object type and name

    Archives a specified crm property by its object type and name, moving it to the recycling bin; note that some default hubspot properties cannot be archived.

  • Archive property group

    Archives a hubspot property group, making it inactive and hidden (not permanently deleted, allowing potential restoration) with immediate effect on its crm visibility and usability.

  • Archive quote object by id

    Archives a hubspot quote object by id to the recycling bin; this is api-irreversible and may need manual restoration.

  • Archive ticket

    Archives a hubspot ticket by its id.

  • Archive ticket by id

    Archives an existing hubspot ticket by its id, moving it to the recycling bin; this is a permanent operation not undoable via the api.

  • Archive tickets

    Archives multiple hubspot tickets by their ids.

  • Audit pipeline changes by id

    Retrieves a reverse chronological audit log of all changes for a specific, existing hubspot crm pipeline, which is identified by its `pipelineid` and a valid `objecttype` that supports pipelines (e.g., 'deals', 'tickets').

  • Batch read companies by properties

    Batch-retrieves hubspot company records by their ids, allowing custom id properties, specific properties to fetch, and historical data.

  • Batch update quotes

    Updates multiple existing hubspot quotes in a batch; each quote is identified by its object id or a custom unique property (via `idproperty`), and only writable properties are modified.

  • Campaign search

    Searches for and retrieves a paginated list of hubspot marketing campaigns.

  • Cancel active import

    Cancels an active hubspot data import job using its `importid`; this action is irreversible, and any data already processed will remain.

  • Clone marketing email

    Duplicates an existing hubspot marketing email, identified by its `id`, into a new draft; an optional `clonename` can be assigned to this new email copy.

  • Configure calling extension settings

    Configures or updates settings for a hubspot app's calling extension, including its name, ui url, iframe dimensions, `isready` status, and `supportscustomobjects` flag, for the specified `appid`.

  • Create a batch of campaigns

    Creates up to 50 marketing campaigns in a single batch operation.

  • Create a batch of companies

    Creates multiple company records in hubspot crm in a single batch operation, processing up to 100 companies per request.

  • Create a batch of emails

    Creates multiple email objects for record-keeping (does not send emails) within hubspot crm in a single batch, allowing properties and associations to other crm objects to be set for each email.

  • Create A/B test variation

    Creates a new a/b test variation for an existing hubspot email, using its `contentid`; this action only creates the variation, it does not start the a/b test or send emails.

  • Create a campaign

    Creates a new marketing campaign in hubspot with the specified properties, returning the created campaign data including its `campaignguid`.

  • Create a new marketing email

    Creates a new marketing email in hubspot, allowing comprehensive configuration of content, recipients, sender details, a/b testing, scheduling, web version, and other settings; the internal `name` for the email is required.

  • Create a new property group

    Creates a new, empty property group for a specified crm object type in hubspot, requiring a unique group name for that object type; properties must be added separately.

  • Create association for object type

    Creates the *definition* (schema) of a new association in hubspot, specifying how two crm object types relate (not an actual link between records); any provided `name` must be unique for the `fromobjecttypeid` and `toobjecttypeid` pair.

  • Create batch of contacts

    Deprecated: use the `create batch of contacts` action instead. creates multiple hubspot contact records.

  • Create batch of contacts

    Creates up to 100 new contact records in hubspot crm, optionally associating them with existing crm objects; ensure associated object ids are valid.

  • Create batch of deals

    Creates multiple deals in hubspot crm; ensure any associated object ids, deal stages, and pipeline ids specified are valid and exist within the hubspot account.

  • Create batch of feedback submissions

    Creates a batch of feedback submissions in hubspot, ideal for bulk imports; all property names, `associationtypeid`s, and association `to id`s must reference existing entities in hubspot.

  • Create email

    Creates a new email engagement record in hubspot, requiring portal-specific `properties` (e.g., `hs timestamp` as a utc millisecond timestamp), and that association `to id`s and `associationtypeid`s are valid and existing.

  • Read Batch Emails

    Retrieves a batch of hubspot email objects by their internal ids or values of a specified unique property, allowing targeted property selection, including historical data.

Setup

Setup guide

  1. 11. In Switchy, open your workspace settings and navigate to the Integrations tab. 2. Find HubSpot in the MCP directory and click Connect. 3. You'll redirect to HubSpot's OAuth consent screen — log in with an account that has Super Admin or appropriate CRM permissions. 4. Grant the requested scopes: these typically include crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.deals.read, crm.objects.deals.write, crm.objects.companies.read, crm.objects.companies.write, and marketing-email.read. 5. After authorizing, HubSpot redirects you back to Switchy with a success confirmation. 6. Open any Space and type '@HubSpot list recent deals' to test the connection. 7. If the MCP returns deal data, you're live — if it errors, revisit Integrations to confirm scopes were granted. 8. To invoke a tool, @mention HubSpot in a message and describe the task in plain language, like '@HubSpot archive these contact IDs: 12345, 67890'.

What teammates see: by default, memories from HubSpot are scoped to the Space (PROJECT visibility) - you can mark any memory PRIVATE or share it ORG-wide.

Works well with

Top models

Compatibility data appears once enough Spaces have used this MCP together with a given model.

How Switchy teams use it

Not enough Spaces yet to publish anonymised usage stats (we require ≥ 50 Spaces per week).

Starter prompts

Summarize Open Deals

@HubSpot list all deals currently in the 'Proposal Sent' stage and summarize their total value, owner, and days since last activity.
Open in a Space →

Archive Closed-Lost Contacts

@HubSpot find contacts associated with deals closed-lost more than 90 days ago, then archive them in a batch.
Open in a Space →

Audit Recent Email Archives

@HubSpot show me all emails archived in the past seven days, including their subject lines and associated contact IDs.
Open in a Space →

Add Token to Event Template

@HubSpot add a custom token named 'referral_source' to event template ID 11223 and map it to the contact property 'hs_analytics_source'.
Open in a Space →

Example outputs

Illustrative - representative of the model's voice and quality, not literal recordings.

Prompt

@hubspot show me all deals in the pipeline that closed in the last 30 days, grouped by owner

Output

Found 14 deals closed in the last 30 days across 4 owners: **Sarah Chen (6 deals)** — $127,400 total value - Acme Corp renewal ($45K, closed Dec 18) - Widget Co expansion ($32K, closed Dec 22) - [4 more deals] **Marcus Liu (5 deals)** — $89,200 total **Priya Sharma (2 deals)** — $38,500 total **Jordan Wells (1 deal)** — $15,000 total This is an illustrative summary. Actual results depend on your HubSpot pipeline configuration and deal properties.

Notes

Demonstrates read access to deals and custom reporting. Requires OAuth scopes for CRM deals (crm.objects.deals.read). HubSpot's API returns raw deal records; the AI synthesizes grouping and totals. Rate limits apply at 100 requests per 10 seconds for most accounts.

Prompt

@hubspot create a contact for jamie.torres@techstartup.io with company 'TechStartup Inc' and lifecycle stage 'Marketing Qualified Lead'

Output

Created contact **Jamie Torres** (jamie.torres@techstartup.io) in HubSpot CRM. - **Contact ID:** 12847563 - **Company:** TechStartup Inc (associated) - **Lifecycle Stage:** Marketing Qualified Lead - **Created:** 2025-01-15 at 3:42 PM UTC Contact is now visible in your CRM and will appear in relevant lists and workflows based on your automation rules. This example shows a successful creation; actual response includes full property values and association details.

Notes

Showcases write capability for contacts and company associations. Requires crm.objects.contacts.write scope. Side-effect: triggers any active workflows tied to contact creation or lifecycle stage changes. Duplicate email addresses may cause conflicts depending on your HubSpot settings.

Prompt

@hubspot review all open support tickets from the last week and draft a summary email for our customer success team highlighting urgent issues

Output

Reviewed 23 open tickets created since Jan 8. Here's a draft summary: **Subject:** Weekly Support Escalation — 5 Urgent Items **High Priority (5 tickets):** - Ticket #4521: API timeout errors (Acme Corp, reported 4x) - Ticket #4518: Billing discrepancy $2,300 (Widget Co) - [3 more urgent items] **Medium Priority (12 tickets):** Feature requests and onboarding questions. **Low Priority (6 tickets):** Documentation clarifications. Recommend immediate follow-up on API timeout pattern — may indicate infrastructure issue. This draft synthesizes ticket data; verify details in HubSpot before sending.

Notes

Combines ticket retrieval with AI reasoning to surface patterns and draft communications. Requires crm.objects.tickets.read scope. The AI interprets priority from ticket properties (status, tags, SLA fields). Summary accuracy depends on consistent ticket tagging practices in your HubSpot account.

Use-case deep-dives

Sales handoff at 10-person startup

When HubSpot MCP replaces manual CRM updates after demos

A 10-person SaaS startup runs 30 demos a week. After each call, the AE updates the deal stage, logs notes, and creates follow-up tasks in HubSpot—usually 4 minutes of clicking. With this MCP, the team shares a Switchy workspace where Claude reads the demo transcript, writes the deal update, and queues the task creation. The AE reviews the batch in one pass and commits. This works because HubSpot's OAuth scope covers deals, contacts, and tasks without needing admin keys. The threshold: if your deal stages have complex conditional logic or require multi-object writes (like syncing to a custom object), you'll hit the 50-tool ceiling and need custom scripting. For straightforward pipeline hygiene at small-team scale, this MCP cuts CRM busywork by half.

Customer success quarterly check-ins

Why this MCP wins for bulk contact enrichment workflows

A 6-person CS team preps for 80 quarterly business reviews each quarter. They pull contact records, check last-touch dates, and flag accounts missing recent activity. Doing this manually in HubSpot's UI takes 90 minutes. In Switchy, they prompt Claude to batch-fetch contacts by segment, surface the staleness flags, and draft the outreach sequence—all using the MCP's read and archive tools. The team reviews the list, archives dead leads in one shot (irreversible via API, so they double-check), and exports the live targets. This scenario works because HubSpot's batch operations handle up to a few hundred records without rate-limit drama. If you're running this on 5,000 contacts, expect slowdowns and consider a dedicated ETL tool instead. For mid-sized customer bases, this MCP makes QBR prep a 20-minute task.

Marketing campaign asset audit

When to use this MCP for campaign cleanup at scale

A 4-person marketing team runs 15 campaigns a quarter, each with forms, landing pages, and email templates scattered across HubSpot. At quarter-end, they audit which assets are still live and archive the rest to keep the workspace clean. Manually clicking through campaigns and disassociating assets takes 2 hours. With this MCP in Switchy, they ask Claude to list all campaign associations, flag assets older than 90 days with zero conversions, and batch-archive the dead weight. The MCP's 'add asset association' and archive tools handle the writes; the team spot-checks the list before committing. This works for teams under 50 campaigns per year—beyond that, HubSpot's API pagination and the MCP's 50-tool limit make this tedious. For small teams doing seasonal cleanup, this MCP turns a quarterly chore into a 15-minute review.

Frequently asked

What can the HubSpot MCP do in Switchy?

The HubSpot MCP gives your team read-write access to CRM objects (contacts, companies, deals, quotes), marketing campaigns, and email tracking directly from Switchy's chat. You can archive records, associate assets with campaigns, and manage event templates without opening HubSpot. It's built for teams who need CRM updates mid-conversation, not just reporting.

Do I need admin access to connect HubSpot via OAuth?

You need a HubSpot user account with permissions matching what you want Switchy to do. OAuth will ask for scopes like crm.objects.contacts.write and crm.objects.deals.read. If your HubSpot admin has locked down API access or specific object permissions, the connection will fail or tools will error out. Check with your admin before connecting.

Can the HubSpot MCP create new contacts or deals?

The 50 tools shown focus heavily on archiving and association tasks. While the MCP likely supports creating records (most HubSpot integrations do), the representative sample doesn't list explicit 'create contact' or 'create deal' tools. If creation is critical, test the connection first or ask Switchy support which CRUD operations are exposed.

Why use this instead of HubSpot's UI or Zapier?

Use the MCP when your team is already in Switchy discussing a lead or deal and needs to update HubSpot without context-switching. Zapier is better for scheduled workflows or multi-app chains. HubSpot's UI is better for bulk imports or complex reporting. The MCP shines for ad-hoc CRM writes triggered by conversation, not automation.

Who on the team should connect the HubSpot MCP?

Whoever owns your HubSpot account and understands which CRM objects your team touches daily. Sales ops or a team lead is ideal. Avoid connecting it with a personal account that might leave the company—OAuth tokens tied to departed users break integrations. One shared connection covers the whole Switchy workspace.

Compare with

Compare with anything else →
Data last verified 7 hours ago.Sources aggregated hourly to weekly. See docs/architecture/model-directory.md.