> ## Documentation Index
> Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# HubSpot: Batch Upsert Objects

> Create or update many HubSpot CRM records in one batch. Includes SDK V2 guidance, input constraints, response fields, and Deepline credit cost.

Create or update many HubSpot CRM records in one batch.

> [!NOTE]
>
> Tool ID: `hubspot_batch_upsert_objects`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'hubspot_batch_upsert_objects',
  {
    "object_type": "example",
    "inputs": [
      {
        "id": "id_123",
        "properties": {}
      }
    ]
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute hubspot_batch_upsert_objects --input '{
  "object_type": "example",
  "inputs": [
    {
      "id": "id_123",
      "properties": {}
    }
  ]
}' --json
```

## Example response

The static output schema lacks the details for a reliable example. Use `deepline describe hubspot_batch_upsert_objects --json` for the complete live contract.

## Input reference

Batch upsert CRM records.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.object_type` | `string` | Yes | — | HubSpot CRM object type or alias. |
| `payload.id_property` | `string` | No | — | Unique property used for the `id` values across the batch. Contacts can use `email`. companies should not use `domain` here. For companies without an existing unique property, search by domain first, then batch update matched HubSpot record IDs and batch create missing records. |
| `payload.inputs` | `array` | Yes | — | Records to create or update in one batch request (max 100). |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Batch upsert CRM records.",
    "properties": {
      "object_type": {
        "type": "string",
        "description": "HubSpot CRM object type or alias."
      },
      "id_property": {
        "type": "string",
        "description": "Unique property used for the `id` values across the batch. Contacts can use `email`; companies should not use `domain` here. For companies without an existing unique property, search by domain first, then batch update matched HubSpot record IDs and batch create missing records."
      },
      "inputs": {
        "type": "array",
        "description": "Records to create or update in one batch request (max 100).",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "Value of the selected HubSpot unique property to match when creating or updating the record."
            },
            "idProperty": {
              "type": "string",
              "description": "Optional unique property name for this input. Contacts can use `email`; companies should not use `domain` here. For companies without an existing unique property, search by domain first, then batch update matched HubSpot record IDs and batch create missing records."
            },
            "objectWriteTraceId": {
              "type": "string"
            },
            "properties": {
              "type": "object",
              "description": "HubSpot property map to write.",
              "additionalProperties": {}
            }
          },
          "required": [
            "id",
            "properties"
          ],
          "additionalProperties": false
        }
      }
    },
    "required": [
      "object_type",
      "inputs"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `record` | Yes | — | Provider response payload. |
| `result.meta` | `record` | No | — | Additional response metadata (status, paging). |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "Provider response payload.",
        "additionalProperties": {}
      },
      "meta": {
        "type": "object",
        "description": "Additional response metadata (status, paging).",
        "additionalProperties": {}
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `fixed` (per call).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.

## Related documentation

* [HubSpot provider guide](https://deepline.com/docs/providers/hubspot/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.