Salesforce ACTION
Create CRM Record
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
- Action
- Writes data
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Salesforce account once, then configure and run Create CRM Record from your backend or agent.
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 -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"
}
}'// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{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",
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
objectType Object Type | string | 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). Required |
properties Record Properties | object | 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. Required |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- salesforce_rest_api-create-crm-record
- Version
- 0.0.4
- App
- Salesforce
- Authentication
- OAuth
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗