# Create CRM Record — Salesforce

> Create a new Salesforce record of any object type. Use Describe Object first if you're unsure what fields are available or required. For picklist fields, use the API value from Describe Object, not the display label.

- Key: `salesforce_rest_api-create-crm-record`
- Type: Action (Write)
- Version: 0.0.4
- App: Salesforce (`salesforce_rest_api`) — https://pipedream.com/apps/salesforce-rest-api.md
- This page (HTML): https://pipedream.com/apps/salesforce-rest-api/actions/create-crm-record
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/salesforce_rest_api/actions/create-crm-record/create-crm-record.mjs

## Description

Create a new Salesforce record of any object type. Use **Describe Object** first if you're unsure what fields are available or required. For picklist fields, use the API value from **Describe Object**, not the display label.

**Common required fields:**
- Account: `Name`
- Contact: `LastName`
- Lead: `LastName`, `Company`
- Opportunity: `Name`, `StageName`, `CloseDate`
- Case: `Subject`
- Task: `Subject`
- Event: `Subject`, `StartDateTime`, `EndDateTime`

To add a Contact/Lead to a Campaign, create a CampaignMember: `{"CampaignId": "701xxx", "ContactId": "003xxx"}` or `{"CampaignId": "701xxx", "LeadId": "00Qxxx"}`. [See the documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_create.htm)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `objectType` | `string` | Yes | The Salesforce object API name (e.g. Account, Contact, Lead, Opportunity, Case, Task, Event). Use List Objects to discover custom object types (ending in __c). |
| `properties` | `object` | Yes | Field name → value pairs for the new record. Example for Contact: {"FirstName": "Jane", "LastName": "Doe", "Email": "jane@example.com", "AccountId": "001xxx"}. Example for Opportunity: {"Name": "Acme Deal", "StageName": "Prospecting", "CloseDate": "2025-12-31", "Amount": 50000}. Use Describe Object to discover valid field names and picklist values. |

## 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": "salesforce_rest_api",
      },
    },
  },
)

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: "salesforce_rest_api-create-crm-record",
  arguments: {
    objectType: "Object Type",
    properties: "Record 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: "salesforce_rest_api-create-crm-record",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    salesforce_rest_api: { authProvisionId: "apn_xxxxxxx" },
    objectType: "Object Type",
    properties: "Record 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": "salesforce_rest_api-create-crm-record",
    "configured_props": {
      "salesforce_rest_api": { "authProvisionId": "apn_xxxxxxx" },
      "objectType": "Object Type",
      "properties": "Record Properties"
    }
  }'
```

---

- App: https://pipedream.com/apps/salesforce-rest-api.md · All apps: https://pipedream.com/apps
