Salesforce ACTION
Create Opportunity
Create a Salesforce opportunity (a potential deal with an amount and close date). Requires
Name, StageName and CloseDate - use Describe Object on Opportunity to list the valid StageName values for your org. Use Find Records on Account to get the AccountId to attach the deal to. 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 Opportunity 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-opportunity",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
salesforce_rest_api: { authProvisionId: "apn_xxxxxxx" },
ContactId: "Contact ID",
CloseDate: "Close Date",
},
})
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-opportunity",
"configured_props": {
"salesforce_rest_api": { "authProvisionId": "apn_xxxxxxx" },
"ContactId": "Contact ID",
"CloseDate": "Close Date"
}
}'// 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-opportunity",
arguments: {
ContactId: "Contact ID",
CloseDate: "Close Date",
},
})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 |
|---|---|---|
ContactId Contact ID | string | ID of the contact associated with this opportunity, set as the primary contact (Salesforce's 15- or 18-character record ID, e.g. 003XX000004TmiQ). Use SOQL Query to find the Contact ID. Optional |
CloseDate Close Date | string | Date when the opportunity is expected to close. Required |
Description Description | string | Text description of the opportunity. Limit: 32,000 characters. Optional |
Name Name | string | A name for this opportunity. Limit: 120 characters Required |
StageName Stage Name | string | Current stage of this record. This controls several other fields on an opportunity. Required |
additionalFields Additional Fields | object | Other fields to set for this record as name -> value pairs. Values are parsed as JSON where applicable. Example: {"Industry": "Technology", "AnnualRevenue": 1000000}. Use Describe Object to discover valid field names. Optional |
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-opportunity
- Version
- 0.4.1
- App
- Salesforce
- Authentication
- OAuth
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗