# Batch Create or Update Contact — HubSpot

> Create or update a batch of contacts by its ID or email. See the documentation

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

## Description

Create or update a batch of contacts by its ID or email. [See the documentation](https://developers.hubspot.com/docs/api/crm/contacts)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `contacts` | `string[]` | Yes | Provide a list of contacts to be created or updated. If the provided contact has the prop ID or if the provided email already exists, this action will attempt to update it. Expected format for create: { "company": "Biglytics", "email": "bcooper@biglytics.net", "firstname": "Bryan", "lastname": "Cooper", "phone": "(877) 929-0687", "website": "biglytics.net" } Expected format for update: { "id": "101", "company": "Biglytics", "email": "bcooper@biglytics.net", "firstname": "Bryan", "lastname": "Cooper", "phone": "(877) 929-0687", "website": "biglytics.net" } |

## 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-batch-create-or-update-contact",
  arguments: {
    contacts: ["Contacts Array"],
  },
})
```

**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-batch-create-or-update-contact",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    hubspot: { authProvisionId: "apn_xxxxxxx" },
    contacts: ["Contacts Array"],
  },
})

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-batch-create-or-update-contact",
    "configured_props": {
      "hubspot": { "authProvisionId": "apn_xxxxxxx" },
      "contacts": ["Contacts Array"]
    }
  }'
```

---

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