# Update Deal — HubSpot

> Update a deal in HubSpot by id. Set Object ID and put the fields to change in Object Properties as HubSpot internal names. Look up the id with Search CRM if you only have a name. Example: Object ID 123, Object Properties { "dealstage"…

- Key: `hubspot-update-deal`
- Type: Action (Write)
- Version: 1.0.1
- App: HubSpot (`hubspot`) — https://pipedream.com/apps/hubspot.md
- This page (HTML): https://pipedream.com/apps/hubspot/actions/update-deal
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/hubspot/actions/update-deal/update-deal.mjs

## Description

Update a deal in HubSpot by id. Set **Object ID** and put the fields to change in **Object Properties** as HubSpot internal names. Look up the id with **Search CRM** if you only have a name. Example: Object ID `123`, Object Properties `{ "dealstage": "closedwon", "amount": "90000" }`. Returns the updated deal. [See the documentation](https://developers.hubspot.com/beta-docs/guides/api/crm/objects/deals#update-deals)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `objectId` | `string` | Yes | Hubspot's internal ID for the contact Options are loaded from the connected account. |
| `objectProperties` | `object` | Yes | Enter the object properties to update as a JSON object. Example: {"firstname": "Alice", "lastname": "Smith"}. This will overwrite any properties entered individually. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "hubspot",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "hubspot-update-deal",
  arguments: {
    objectId: "Object ID",
    objectProperties: "Object Properties",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "hubspot-update-deal",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    hubspot: { authProvisionId: "apn_xxxxxxx" },
    objectId: "Object ID",
    objectProperties: "Object Properties",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "hubspot-update-deal",
    "configured_props": {
      "hubspot": { "authProvisionId": "apn_xxxxxxx" },
      "objectId": "Object ID",
      "objectProperties": "Object Properties"
    }
  }'
```

---

- App: https://pipedream.com/apps/hubspot.md · All apps: https://pipedream.com/apps
