---
name: "salesforce_create"
area: "salesforce"
title: "Create a Salesforce record"
price: "$0.001"
method: "POST"
url: "https://api.conecto.chat/v1/tools/salesforce_create"
mcp_server: "https://api.conecto.chat/mcp/salesforce"
auth: "Authorization: Bearer <conecto_sk_ key>"
docs_url: "https://conecto.chat/tools/salesforce/salesforce_create"
---

# Create a Salesforce record (`salesforce_create`)

Makes a record of any object the run-as user may create.

Make a record of any object the run-as user may create, with the fields given. $0.001.

Price: $0.001 a call. A call that fails costs nothing.

## Use it when

A new contact, lead or case comes up and the team works in Salesforce.

## Say this to your agent

> Add Petra Lindqvist from Hotel Seeblick as a contact.

## Inputs

| Name | Type | Required | Description | Allowed values | Default |
|---|---|---|---|---|---|
| `object` | string | yes | The object's API name, like Account, Contact, Opportunity or Case. Matches ^[A-Za-z][A-Za-z0-9_]{0,79}$. |  |  |
| `fields` | object | yes | Field API names and values, like {"StageName": "Closed Won", "Amount": 18400}. |  |  |

## Example

Written for Hansen & Voss, a restaurant-equipment wholesaler in Hamburg with 60 staff.

MCP: call `salesforce_create` on the MCP server `https://api.conecto.chat/mcp/salesforce` with these arguments:

```json
{
  "object": "Contact",
  "fields": {
    "FirstName": "Petra",
    "LastName": "Lindqvist",
    "Email": "einkauf@hotel-seeblick.example"
  }
}
```

REST:

```bash
curl https://api.conecto.chat/v1/tools/salesforce_create \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"object": "Contact", "fields": {"FirstName": "Petra", "LastName": "Lindqvist", "Email": "einkauf@hotel-seeblick.example"}}'
```

## Response

```json
{
  "call_id": "5f0c8a2e-3b7d-4c1e-9a64-2d8e1f7b0c93",
  "tool": "salesforce_create",
  "status": "succeeded",
  "replayed": false,
  "cost_usd": "$0.001",
  "balance_usd": "$19.75",
  "result": {
    "record": {
      "id": "0035g00000Ab9XyAAJ",
      "object": "Contact",
      "created": true
    }
  }
}
```

`result`: record: id, object and created.

## Errors

| Code | Status | When | Fix |
|---|---|---|---|
| `not_connected` | 409 | Salesforce isn't connected yet. | Connect it with salesforce_connect. |
| `vendor_rejected` | 502 | Salesforce refused: the app's keys, or the run-as user may not do that. | Give the run-as user the permission the message names. |
| `invalid_input` | 400 | Salesforce refused the query or the fields, or the object or id is not one. | Fix what the message names; field names are API names, like StageName. |

The refusals every tool can give (401 key, 402 balance, 429 limits) are on the errors page: https://conecto.chat/docs/errors.md

## Related

- [salesforce_connect](https://conecto.chat/tools/salesforce/salesforce_connect.md): Connects the company's Salesforce org through its own connected app. Free.
- [salesforce_query](https://conecto.chat/tools/salesforce/salesforce_query.md): Runs one SOQL SELECT statement and returns up to 200 records. Free up to 1,000,000 reads a month.
- [salesforce_get](https://conecto.chat/tools/salesforce/salesforce_get.md): One Salesforce record by object and id, with all its fields or the ones named. Free up to 1,000,000 reads a month.
- [salesforce_update](https://conecto.chat/tools/salesforce/salesforce_update.md): Changes a Salesforce record's fields; waits for the owner by default. $0.001 a call.
- [salesforce_disconnect](https://conecto.chat/tools/salesforce/salesforce_disconnect.md): Forgets the connected app's secret; nothing in Salesforce changes. Free.
