Skip to content

§00Integrations / CRM

HubSpot integration: When a HubSpot deal closes, the ERP should already know.

HubSpot holds the deal, its line items and the company. The ERP needs a customer and a sales order, and HubSpot needs to hear back about invoices and payments. PartnerMCP listens for the pipeline's won stage, builds the order from the deal's line items, writes status back, and stays on HubSpot's date-based APIs ahead of the 2027 retirement of v1–v4.

How PartnerMCP connects

01Primary path

CRM API (date-based versions)

Paths such as /crm/objects/2026-09/deals. New versions ship every March and September and each is supported for at least 18 months; v4 APIs go unsupported on 30 March 2027, and v1–v3 in September 2027.

Product
HubSpot
Vendor
HubSpot
Category
CRM
Runs
Cloud
Connects through
CRM API (2026-09)
Detects changes with
webhooks (deal.propertyChange)
On this page
  1. 01What you can build
  2. 02Objects and events
  3. 03What it handles
  4. 04Pairings
  5. 05Questions
  6. 06References
§01—What you can build

What you can build.

Each one starts as a sentence. PartnerMCP answers with a plan in HubSpot’s own objects, then builds it against your systems.

01HubSpot won deals → Priority

“When a HubSpot deal is won, create the customer and sales order in Priority ERP and show invoice status on the deal.”

Build this integration

PartnerMCP will

  1. Act on deal.propertyChange when dealstage reaches the stage with probability 1.0 in that pipeline.
  2. Read the deal's line_items and its associated company.
  3. Create or update the Priority CUSTOMERS record and keep CUSTNAME on the company.
  4. Create ORDERS with ORDERITEMS_SUBFORM lines and write ORDNAME back to the deal.
  5. Show the invoice on the deal once Priority finalizes it.

02HubSpot → NetSuite → Slack

“Whenever a deal closes in HubSpot, create the customer and sales order in NetSuite. When payment arrives, update HubSpot and notify the account owner in Slack.”

Build this integration

PartnerMCP will

  1. Find or create the NetSuite customer by external ID.
  2. Create the salesorder from the deal's line_items through SuiteTalk REST.
  3. Watch customerpayment with SuiteQL on lastmodifieddate.
  4. Update the deal and post to the owner in Slack.

03ERP prices → HubSpot products

“Every night, publish our ERP's prices to HubSpot products so reps quote what we'll invoice.”

Build this integration

PartnerMCP will

  1. Read part prices from the ERP.
  2. Batch-update HubSpot products matched on hs_sku, including tiered prices where they apply.
  3. Report products that exist on one side only for review.
§02—Objects and events

Objects and events, by their API names.

The records PartnerMCP reads and writes in HubSpot, and the events that start a run.

  • Deals

    deals

    dealname, dealstage and pipeline — stage and pipeline as internal IDs — plus amount and closedate. propertiesWithHistory=dealstage returns the stage history.

  • Line items

    line_items

    name, quantity, price and hs_product_id, which inherits the product's pricing. Each line item belongs to exactly one parent — a deal, quote, invoice, payment link or subscription.

  • Products

    products

    name, price, hs_sku and hs_cost_of_goods_sold, with tiered pricing through hs_pricing_model, hs_tier_ranges and hs_tier_prices.

  • Companies and contacts

    companiescontacts

    PartnerMCP keeps the ERP customer number in a unique-identifier property and batch-reads by it (idProperty).

  • Pipelines

    /crm/pipelines/2026-09/deals

    Each stage carries metadata.probability — 1.0 for Closed Won, 0.0 for Closed Lost — and an isClosed flag.

  • Quotes, orders and invoices

    quotesordersinvoices

    Commerce objects in the CRM, useful for showing ERP order and invoice status where sales teams work.

Events

  • App webhooks

    Subscriptions such as deal.creation, deal.propertyChange, deal.associationChange and deal.deletion, with at most 10 requests in flight per installing account. There's no ordering guarantee and eventId isn't guaranteed unique, so PartnerMCP de-duplicates and re-reads the deal before acting.

  • Webhooks journal API (2026-09)

    The journal of subscription-related changes for the past three days — PartnerMCP's catch-up after an outage.

  • CRM search

    Polling fallback at 5 requests a second per account, up to 200 records a page and 10,000 results per query.

§03—What it handles

What PartnerMCP handles for you.

The details that break HubSpot integrations in production, and what PartnerMCP does about each one.

  1. 01

    Stage IDs are internal

    dealstage holds a pipeline-specific internal ID, not a label. PartnerMCP reads each pipeline and treats the stage with probability 1.0 as won, so renamed stages and extra pipelines keep working.

  2. 02

    One parent per line item

    A line item belongs to exactly one parent, prices can't be negative, and batch create silently de-duplicates identical inputs. PartnerMCP creates separate line items per parent and models discounts explicitly.

  3. 03

    Webhooks retry, but don't order

    Events can arrive out of order or twice, and association changes fire for both sides. PartnerMCP de-duplicates them and reads the current deal before it writes anything to the ERP.

  4. 04

    Rate limits per app and per account

    Private apps get 100 requests per 10 seconds on Free and Starter and 190 on Professional and Enterprise; public OAuth apps get 110 per 10 seconds per installing account; daily limits run from 250,000 to 1,000,000 and are shared by every app in the account. PartnerMCP paces itself and reads 429 policyName to see which limit it hit.

  5. 05

    Legacy apps and APIs are ending

    Legacy private app creation ends on 26 October 2026 for existing accounts, v4 APIs go unsupported in March 2027 and v1–v3 in September 2027. PartnerMCP connects as an OAuth or Projects-based app on date-based APIs.

  6. 06

    Association limits

    Associations have their own limits — batch read up to 1,000 inputs and batch create up to 2,000 — and PartnerMCP batches within them.

§04—Pairings

Pairings, step by step.

Each pair page has the plan, the field mapping and the edge cases for that combination.

§05—Questions

HubSpot integration questions.

Does PartnerMCP use HubSpot's MCP server?

Where it covers the operation. HubSpot's remote MCP server has been generally available since April 2026 and respects each user's permissions, but it only reads quotes, invoices and orders — so PartnerMCP uses the CRM API for everything the MCP server doesn't write.

We use a private-app token today. What changes?

Legacy private app creation ends on 26 October 2026 for existing accounts, and v1–v3 APIs with legacy apps go unsupported in September 2027. PartnerMCP connects as an OAuth or Projects-based app on date-based APIs, so there's nothing to migrate later.

How is Closed Won detected across several pipelines?

From the pipelines API: each stage has a probability, and Closed Won is 1.0. PartnerMCP reads every pipeline you include, so it never depends on a stage name or a hard-coded ID.

Does it work with HubSpot's tiered pricing?

Yes. Line items created with hs_product_id inherit the product's pricing, tiers included, and PartnerMCP reconciles the ERP's computed total with the deal amount.

§06—References

Vendor documentation.

The public documentation behind the technical details on this page.

§07Next step

Connect HubSpot to the rest of your systems.

Describe what should happen. PartnerMCP shows you the plan before anything is built.