Reference · Tools

Salesforce

Full CRUD operations against Salesforce CRM REST API v59.0 with binary attachment and document support.

Action (binary) Sales v1 Binary data

The Salesforce node performs full CRUD against the Salesforce REST API, covering the standard objects plus attachments and documents as binary. A typical build is creating a lead from an inbound enquiry, attaching the submitted document, and updating the record as it progresses.

Node type
Action (binary)
Parameters
72
Outputs
Output, Error
Credentials
Salesforce OAuth2

Salesforce

Manage Salesforce CRM records, attachments, and documents

Overview

The Salesforce tool provides complete CRUD operations for 12 Salesforce resources: Lead, Contact, Account, Opportunity, Case, Task, Attachment, Custom Object, Document, Flow, Search (SOQL), and User. Attachment operations handle binary data: create/update uploads binary as base64 Body field, get retrieves attachment metadata. Document upload uses multipart form to create ContentVersion records. Supports OAuth2 authentication with manual token + refresh, SOQL query builder with conditions, pagination via nextRecordsUrl, upsert via external ID, custom fields, and campaign member management.

Category: Sales
Tool Name: salesforce
Version: 1

Appearance: Icon: lucide-CircleDollarSign | Color: #00A1E0

Node Type

Action (Binary) — handles file/binary data operations

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Salesforce OAuth2 credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Accountaccount
Attachmentattachment
Casecase
Contactcontact
Custom ObjectcustomObject
Documentdocument
Flowflow
Leadlead
Opportunityopportunity
Searchsearch
Tasktask
Useruser

Operations

Which operations are available depends on the selected resource — see the parameter subsections below.

OperationValueDescription
Add NoteaddNoteAdd a note to the selected record
Add to CampaignaddToCampaignAdd the record to a campaign
CreatecreateCreate a record of the selected resource
DeletedeleteDelete a record by ID
GetgetRetrieve a single record by ID
Get ManygetAllRetrieve many records
Get SummarygetSummaryGet the object metadata summary for the selected resource
UpdateupdateUpdate an existing record
UpsertupsertCreate or update a record by external ID
Add CommentaddCommentAdd comment to a case
UploaduploadUpload a document (ContentVersion)
InvokeinvokeInvoke an autolaunched flow
QueryqueryExecute a SOQL query

Parameters

Get Summary takes no parameters of its own — Account, Attachment, Case, Contact, Lead, Opportunity and Task all offer it, and each uses only the shared settings listed under All Operations.

Account: Add Note

ParameterTypeRequiredDefaultDescription
TitlestringYes
OptionscollectionNo{}
— BodystringNo
— Is PrivatebooleanNofalse
— Owner ID (owner)stringNo
Account ID (accountId)stringYes

Account: Create

ParameterTypeRequiredDefaultDescription
NamestringYes
Additional FieldscollectionNo{}
— Account NumberstringNo
— Account SourcestringNo
— Annual RevenuenumberNo0
— Billing CitystringNo
— Billing CountrystringNo
— Billing Postal CodestringNo
— Billing StatestringNo
— Billing StreetstringNo
— Custom Fields (JSON)jsonNo{}
— DescriptionstringNo
— FaxstringNo
— IndustrystringNo
— JigsawstringNo
— Number of EmployeesnumberNo0
— Owner ID (owner)stringNo
— Parent IDstringNo
— PhonestringNo
— Record Type IDstringNo
— Shipping CitystringNo
— Shipping CountrystringNo
— Shipping Postal CodestringNo
— Shipping StatestringNo
— Shipping StreetstringNo
— SIC DescriptionstringNo
— TypestringNo
— WebsitestringNo

Account: Delete

ParameterTypeRequiredDefaultDescription
Account ID (accountId)stringYes

Account: Get

ParameterTypeRequiredDefaultDescription
Account ID (accountId)stringYes

Account: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)
OptionscollectionNo{}
— Conditions (JSON)jsonNo{}JSON: {“conditionValues”:[{“field”:“Name”,“operation”:“equal”,“value”:“Acme”}]}
— FieldsstringNoComma-separated list of fields to return

Account: Update

ParameterTypeRequiredDefaultDescription
Account ID (accountId)stringYes
Update FieldscollectionNo{}
— Account NumberstringNo
— Account SourcestringNo
— Annual RevenuenumberNo0
— Billing CitystringNo
— Billing CountrystringNo
— Billing Postal CodestringNo
— Billing StatestringNo
— Billing StreetstringNo
— Custom Fields (JSON)jsonNo{}
— DescriptionstringNo
— FaxstringNo
— IndustrystringNo
— JigsawstringNo
— NamestringNo
— Number of EmployeesnumberNo0
— Owner ID (owner)stringNo
— Parent IDstringNo
— PhonestringNo
— Record Type IDstringNo
— Shipping CitystringNo
— Shipping CountrystringNo
— Shipping Postal CodestringNo
— Shipping StatestringNo
— Shipping StreetstringNo
— SIC DescriptionstringNo
— TypestringNo
— WebsitestringNo

Account: Upsert

ParameterTypeRequiredDefaultDescription
External ID FieldstringYesAPI name of the external ID field
External ID ValuestringYes
NamestringYes
Additional FieldscollectionNo{}
— Account NumberstringNo
— Account SourcestringNo
— Annual RevenuenumberNo0
— Billing CitystringNo
— Billing CountrystringNo
— Billing Postal CodestringNo
— Billing StatestringNo
— Billing StreetstringNo
— Custom Fields (JSON)jsonNo{}
— DescriptionstringNo
— FaxstringNo
— IndustrystringNo
— JigsawstringNo
— Number of EmployeesnumberNo0
— Owner ID (owner)stringNo
— Parent IDstringNo
— PhonestringNo
— Record Type IDstringNo
— Shipping CitystringNo
— Shipping CountrystringNo
— Shipping Postal CodestringNo
— Shipping StatestringNo
— Shipping StreetstringNo
— SIC DescriptionstringNo
— TypestringNo
— WebsitestringNo

Attachment: Create

ParameterTypeRequiredDefaultDescription
Parent IDstringYes
NamestringYesFilename (max 255 chars)
Binary PropertystringYesdataName of the binary property containing the file to upload
Additional FieldscollectionNo{}
— DescriptionstringNo
— Is PrivatebooleanNofalse
— Owner ID (owner)stringNo

Attachment: Delete

ParameterTypeRequiredDefaultDescription
Attachment IDstringYes

Attachment: Get

ParameterTypeRequiredDefaultDescription
Attachment IDstringYes

Attachment: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)
OptionscollectionNo{}
— Conditions (JSON)jsonNo{}JSON: {“conditionValues”:[{“field”:“Name”,“operation”:“equal”,“value”:“Acme”}]}
— FieldsstringNoComma-separated list of fields to return

Attachment: Update

ParameterTypeRequiredDefaultDescription
Attachment IDstringYes
Update FieldscollectionNo{}
— Binary PropertystringNodataName of the binary property to upload (optional)
— DescriptionstringNo
— Is PrivatebooleanNofalse
— NamestringNo
— Owner ID (owner)stringNo

Case: Add Comment

ParameterTypeRequiredDefaultDescription
Case IDstringYes
Comment BodystringNo
Is PublishedbooleanNofalse

Case: Create

ParameterTypeRequiredDefaultDescription
TypestringYes
Additional FieldscollectionNo{}
— Account ID (accountId)stringNo
— Contact IDstringNo
— Custom Fields (JSON)jsonNo{}
— DescriptionstringNo
— Is EscalatedbooleanNofalse
— OriginstringNo
— Owner ID (owner)stringNo
— Parent IDstringNo
— PrioritystringNo
— ReasonstringNo
— Record Type IDstringNo
— StatusstringNo
— SubjectstringNo
— Supplied CompanystringNo
— Supplied EmailstringNo
— Supplied NamestringNo
— Supplied PhonestringNo

Case: Delete

ParameterTypeRequiredDefaultDescription
Case IDstringYes

Case: Get

ParameterTypeRequiredDefaultDescription
Case IDstringYes

Case: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)
OptionscollectionNo{}
— Conditions (JSON)jsonNo{}JSON: {“conditionValues”:[{“field”:“Name”,“operation”:“equal”,“value”:“Acme”}]}
— FieldsstringNoComma-separated list of fields to return

Case: Update

ParameterTypeRequiredDefaultDescription
Case IDstringYes
Update FieldscollectionNo{}
— Account ID (accountId)stringNo
— Contact IDstringNo
— Custom Fields (JSON)jsonNo{}
— DescriptionstringNo
— Is EscalatedbooleanNofalse
— OriginstringNo
— Owner ID (owner)stringNo
— Parent IDstringNo
— PrioritystringNo
— ReasonstringNo
— Record Type IDstringNo
— StatusstringNo
— SubjectstringNo
— Supplied CompanystringNo
— Supplied EmailstringNo
— Supplied NamestringNo
— Supplied PhonestringNo
— TypestringNo

Contact: Add Note

ParameterTypeRequiredDefaultDescription
TitlestringYes
OptionscollectionNo{}
— BodystringNo
— Is PrivatebooleanNofalse
— Owner ID (owner)stringNo
Contact IDstringYes

Contact: Add to Campaign

ParameterTypeRequiredDefaultDescription
Campaign IDstringYes
OptionscollectionNo{}
— StatusstringNo
Contact IDstringYes

Contact: Create

ParameterTypeRequiredDefaultDescription
Last NamestringYes
Additional FieldscollectionNo{}
— Account ID (acconuntId)stringNo
— Assistant NamestringNo
— Assistant PhonestringNo
— BirthdatestringNoDate in YYYY-MM-DD format
— Custom Fields (JSON)jsonNo{}
— DepartmentstringNo
— DescriptionstringNo
— EmailstringNo
— Email Bounced DatestringNo
— Email Bounced ReasonstringNo
— FaxstringNo
— First Name (firstName)stringNo
— Home PhonestringNo
— JigsawstringNo
— Lead SourcestringNo
— Mailing CitystringNo
— Mailing CountrystringNo
— Mailing Postal CodestringNo
— Mailing StatestringNo
— Mailing StreetstringNo
— Mobile PhonestringNo
— Other CitystringNo
— Other CountrystringNo
— Other PhonestringNo
— Other Postal CodestringNo
— Other StatestringNo
— Other StreetstringNo
— Owner ID (owner)stringNo
— PhonestringNo
— Record Type IDstringNo
— SalutationstringNo
— TitlestringNo

Contact: Delete

ParameterTypeRequiredDefaultDescription
Contact IDstringYes

Contact: Get

ParameterTypeRequiredDefaultDescription
Contact IDstringYes

Contact: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)
OptionscollectionNo{}
— Conditions (JSON)jsonNo{}JSON: {“conditionValues”:[{“field”:“Name”,“operation”:“equal”,“value”:“Acme”}]}
— FieldsstringNoComma-separated list of fields to return

Contact: Update

ParameterTypeRequiredDefaultDescription
Contact IDstringYes
Update FieldscollectionNo{}
— Account ID (acconuntId)stringNo
— Assistant NamestringNo
— Assistant PhonestringNo
— BirthdatestringNo
— Custom Fields (JSON)jsonNo{}
— DepartmentstringNo
— DescriptionstringNo
— EmailstringNo
— Email Bounced DatestringNo
— Email Bounced ReasonstringNo
— FaxstringNo
— First Name (firstName)stringNo
— Home PhonestringNo
— JigsawstringNo
— Last NamestringNo
— Lead SourcestringNo
— Mailing CitystringNo
— Mailing CountrystringNo
— Mailing Postal CodestringNo
— Mailing StatestringNo
— Mailing StreetstringNo
— Mobile PhonestringNo
— Other CitystringNo
— Other CountrystringNo
— Other PhonestringNo
— Other Postal CodestringNo
— Other StatestringNo
— Other StreetstringNo
— Owner ID (owner)stringNo
— PhonestringNo
— Record Type IDstringNo
— SalutationstringNo
— TitlestringNo

Contact: Upsert

ParameterTypeRequiredDefaultDescription
External ID FieldstringYesAPI name of the external ID field
External ID ValuestringYes
Last NamestringYes
Additional FieldscollectionNo{}
— Account ID (acconuntId)stringNo
— Assistant NamestringNo
— Assistant PhonestringNo
— BirthdatestringNoDate in YYYY-MM-DD format
— Custom Fields (JSON)jsonNo{}
— DepartmentstringNo
— DescriptionstringNo
— EmailstringNo
— Email Bounced DatestringNo
— Email Bounced ReasonstringNo
— FaxstringNo
— First Name (firstName)stringNo
— Home PhonestringNo
— JigsawstringNo
— Lead SourcestringNo
— Mailing CitystringNo
— Mailing CountrystringNo
— Mailing Postal CodestringNo
— Mailing StatestringNo
— Mailing StreetstringNo
— Mobile PhonestringNo
— Other CitystringNo
— Other CountrystringNo
— Other PhonestringNo
— Other Postal CodestringNo
— Other StatestringNo
— Other StreetstringNo
— Owner ID (owner)stringNo
— PhonestringNo
— Record Type IDstringNo
— SalutationstringNo
— TitlestringNo

Custom Object: Create

ParameterTypeRequiredDefaultDescription
Custom Object API NamestringYesAPI name of the custom object (e.g. My_Object__c)
Custom Fields (JSON)jsonNo{}JSON of field API name to value, e.g. {“My_Field__c”: “value”}
Additional FieldscollectionNo{}
— Record Type IDstringNo

Custom Object: Delete

ParameterTypeRequiredDefaultDescription
Custom Object API NamestringYesAPI name of the custom object (e.g. My_Object__c)
Record IDstringYes

Custom Object: Get

ParameterTypeRequiredDefaultDescription
Custom Object API NamestringYesAPI name of the custom object (e.g. My_Object__c)
Record IDstringYes

Custom Object: Get Many

ParameterTypeRequiredDefaultDescription
Custom Object API NamestringYesAPI name of the custom object (e.g. My_Object__c)
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)
OptionscollectionNo{}
— Conditions (JSON)jsonNo{}JSON: {“conditionValues”:[{“field”:“Name”,“operation”:“equal”,“value”:“Acme”}]}
— FieldsstringNoComma-separated list of fields to return

Custom Object: Update

ParameterTypeRequiredDefaultDescription
Custom Object API NamestringYesAPI name of the custom object (e.g. My_Object__c)
Record IDstringYes
Custom Fields (JSON)jsonNo{}JSON of field API name to value, e.g. {“My_Field__c”: “value”}
Update FieldscollectionNo{}
— Record Type IDstringNo

Custom Object: Upsert

ParameterTypeRequiredDefaultDescription
External ID FieldstringYesAPI name of the external ID field
External ID ValuestringYes
Custom Object API NamestringYesAPI name of the custom object (e.g. My_Object__c)
Custom Fields (JSON)jsonNo{}JSON of field API name to value, e.g. {“My_Field__c”: “value”}
Additional FieldscollectionNo{}
— Record Type IDstringNo

Document: Upload

ParameterTypeRequiredDefaultDescription
TitlestringYes
Binary PropertystringYesdata
Additional FieldscollectionNo{}
— File ExtensionstringNoOverride file extension (e.g. pdf)
— Link To Object IDstringNoID of object to link document to (FirstPublishLocationId)
— Owner ID (ownerId)stringNo

Flow: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)
OptionscollectionNo{}
— Conditions (JSON)jsonNo{}JSON: {“conditionValues”:[{“field”:“Name”,“operation”:“equal”,“value”:“Acme”}]}
— FieldsstringNoComma-separated list of fields to return

Flow: Invoke

ParameterTypeRequiredDefaultDescription
API NamestringYes
JSON ParametersbooleanNofalse
Input Variables (JSON)jsonNo{}(shown when JSON Parameters is true)

Lead: Add Note

ParameterTypeRequiredDefaultDescription
Lead IDstringYes
TitlestringYes
OptionscollectionNo{}
— BodystringNo
— Is PrivatebooleanNofalse
— Owner ID (owner)stringNo

Lead: Add to Campaign

ParameterTypeRequiredDefaultDescription
Lead IDstringYes
Campaign IDstringYes
OptionscollectionNo{}
— StatusstringNo

Lead: Create

ParameterTypeRequiredDefaultDescription
CompanystringYesCompany name (required)
Last NamestringYesLast name (required)
Additional FieldscollectionNo{}
— Annual RevenuenumberNo0
— CitystringNo
— CountrystringNo
— Custom Fields (JSON)jsonNo{}JSON object of custom field values, e.g. {“My_Field__c”: “value”}
— DescriptionstringNo
— EmailstringNo
— FaxstringNo
— First Name (firstname)stringNo
— Has Opted Out of EmailbooleanNofalse
— Has Opted Out of FaxbooleanNofalse
— IndustrystringNo
— Is Unread By OwnerbooleanNofalse
— JigsawstringNo
— Lead SourcestringNo
— Mobile PhonestringNo
— Number of EmployeesnumberNo0
— Owner ID (owner)stringNoUser or Queue ID
— PhonestringNo
— Postal CodestringNo
— RatingstringNo
— Record Type IDstringNo
— SalutationstringNo
— StatestringNo
— StatusstringNo
— StreetstringNo
— TitlestringNo
— WebsitestringNo

Lead: Delete

ParameterTypeRequiredDefaultDescription
Lead IDstringYes

Lead: Get

ParameterTypeRequiredDefaultDescription
Lead IDstringYes

Lead: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)
OptionscollectionNo{}
— Conditions (JSON)jsonNo{}JSON: {“conditionValues”:[{“field”:“Name”,“operation”:“equal”,“value”:“Acme”}]}
— FieldsstringNoComma-separated list of fields to return

Lead: Update

ParameterTypeRequiredDefaultDescription
Lead IDstringYes
Update FieldscollectionNo{}
— Annual RevenuenumberNo0
— CitystringNo
— CompanystringNo
— CountrystringNo
— Custom Fields (JSON)jsonNo{}
— DescriptionstringNo
— EmailstringNo
— FaxstringNo
— First Name (firstname)stringNo
— Has Opted Out of EmailbooleanNofalse
— Has Opted Out of FaxbooleanNofalse
— IndustrystringNo
— Is Unread By OwnerbooleanNofalse
— JigsawstringNo
— Last NamestringNo
— Lead SourcestringNo
— Mobile PhonestringNo
— Number of EmployeesnumberNo0
— Owner ID (owner)stringNo
— PhonestringNo
— Postal CodestringNo
— RatingstringNo
— Record Type IDstringNo
— SalutationstringNo
— StatestringNo
— StatusstringNo
— StreetstringNo
— TitlestringNo
— WebsitestringNo

Lead: Upsert

ParameterTypeRequiredDefaultDescription
CompanystringYesCompany name (required)
Last NamestringYesLast name (required)
External ID FieldstringYesAPI name of the external ID field
External ID ValuestringYes
Additional FieldscollectionNo{}
— Annual RevenuenumberNo0
— CitystringNo
— CountrystringNo
— Custom Fields (JSON)jsonNo{}JSON object of custom field values, e.g. {“My_Field__c”: “value”}
— DescriptionstringNo
— EmailstringNo
— FaxstringNo
— First Name (firstname)stringNo
— Has Opted Out of EmailbooleanNofalse
— Has Opted Out of FaxbooleanNofalse
— IndustrystringNo
— Is Unread By OwnerbooleanNofalse
— JigsawstringNo
— Lead SourcestringNo
— Mobile PhonestringNo
— Number of EmployeesnumberNo0
— Owner ID (owner)stringNoUser or Queue ID
— PhonestringNo
— Postal CodestringNo
— RatingstringNo
— Record Type IDstringNo
— SalutationstringNo
— StatestringNo
— StatusstringNo
— StreetstringNo
— TitlestringNo
— WebsitestringNo

Opportunity: Add Note

ParameterTypeRequiredDefaultDescription
TitlestringYes
OptionscollectionNo{}
— BodystringNo
— Is PrivatebooleanNofalse
— Owner ID (owner)stringNo
Opportunity IDstringYes

Opportunity: Create

ParameterTypeRequiredDefaultDescription
NamestringYes
Close DatestringYesDate in YYYY-MM-DD format
Stage NamestringYes
Additional FieldscollectionNo{}
— Account ID (accountId)stringNo
— AmountnumberNo0
— Campaign IDstringNo
— Custom Fields (JSON)jsonNo{}
— DescriptionstringNo
— Forecast CategorystringNo
— Lead SourcestringNo
— Next StepstringNo
— Owner ID (owner)stringNo
— Pricebook2 IDstringNo
— ProbabilitynumberNo0
— TypestringNo

Opportunity: Delete

ParameterTypeRequiredDefaultDescription
Opportunity IDstringYes

Opportunity: Get

ParameterTypeRequiredDefaultDescription
Opportunity IDstringYes

Opportunity: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)
OptionscollectionNo{}
— Conditions (JSON)jsonNo{}JSON: {“conditionValues”:[{“field”:“Name”,“operation”:“equal”,“value”:“Acme”}]}
— FieldsstringNoComma-separated list of fields to return

Opportunity: Update

ParameterTypeRequiredDefaultDescription
Opportunity IDstringYes
Update FieldscollectionNo{}
— Account ID (accountId)stringNo
— AmountnumberNo0
— Campaign IDstringNo
— Close DatestringNo
— Custom Fields (JSON)jsonNo{}
— DescriptionstringNo
— Forecast CategorystringNo
— Lead SourcestringNo
— NamestringNo
— Next StepstringNo
— Owner ID (owner)stringNo
— Pricebook2 IDstringNo
— ProbabilitynumberNo0
— Stage NamestringNo
— TypestringNo

Opportunity: Upsert

ParameterTypeRequiredDefaultDescription
External ID FieldstringYesAPI name of the external ID field
External ID ValuestringYes
NamestringYes
Close DatestringYesDate in YYYY-MM-DD format
Stage NamestringYes
Additional FieldscollectionNo{}
— Account ID (accountId)stringNo
— AmountnumberNo0
— Campaign IDstringNo
— Custom Fields (JSON)jsonNo{}
— DescriptionstringNo
— Forecast CategorystringNo
— Lead SourcestringNo
— Next StepstringNo
— Owner ID (owner)stringNo
— Pricebook2 IDstringNo
— ProbabilitynumberNo0
— TypestringNo

Search: Query

ParameterTypeRequiredDefaultDescription
SOQL QuerystringYesRaw SOQL query string

Task: Create

ParameterTypeRequiredDefaultDescription
StatusstringYes
Additional FieldscollectionNo{}
— Activity DatestringNo
— Call DispositionstringNo
— Call Duration (Seconds)numberNo0
— Call ObjectstringNo
— Call TypestringNo
— Custom Fields (JSON)jsonNo{}
— DescriptionstringNo
— Is Reminder SetbooleanNofalse
— Owner ID (owner)stringNo
— PrioritystringNo
— Recurrence TypestringNo
— Reminder DateTimestringNo
— SubjectstringNo
— Task SubtypestringNoMaps to TaskSubtype field
— What IDstringNo
— Who IDstringNo

Task: Delete

ParameterTypeRequiredDefaultDescription
Task IDstringYes

Task: Get

ParameterTypeRequiredDefaultDescription
Task IDstringYes

Task: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)
OptionscollectionNo{}
— Conditions (JSON)jsonNo{}JSON: {“conditionValues”:[{“field”:“Name”,“operation”:“equal”,“value”:“Acme”}]}
— FieldsstringNoComma-separated list of fields to return

Task: Update

ParameterTypeRequiredDefaultDescription
Task IDstringYes
Update FieldscollectionNo{}
— Activity DatestringNo
— Call DispositionstringNo
— Call Duration (Seconds)numberNo0
— Call ObjectstringNo
— Call TypestringNo
— Custom Fields (JSON)jsonNo{}
— DescriptionstringNo
— Is Reminder SetbooleanNofalse
— Owner ID (owner)stringNo
— PrioritystringNo
— StatusstringNo
— SubjectstringNo
— Task SubtypestringNo
— What IDstringNo
— Who IDstringNo

User: Get

ParameterTypeRequiredDefaultDescription
User IDstringYes

User: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)
OptionscollectionNo{}
— Conditions (JSON)jsonNo{}JSON: {“conditionValues”:[{“field”:“Name”,“operation”:“equal”,“value”:“Acme”}]}
— FieldsstringNoComma-separated list of fields to return

All Operations

ParameterTypeRequiredDefaultDescription
Salesforce AccountcredentialNoConnect your Salesforce account via OAuth2.
Max ConcurrencynumberNo10Maximum number of items to process concurrently

Output Data

The node replaces the item JSON with the Salesforce response. Fields that arrived on the input item are not carried through, so capture anything you still need in an earlier node or merge it back downstream. Binary data on the input item is forwarded to the output item unchanged.

Every operation produces exactly one output item per input item — including Get Many and Query, whose matching records arrive as an array on that single item rather than as one item per record. Use a Split Out node on records when you want one item per record. A node run with no input items produces no output items.

These shapes are built by the node itself:

OperationOutput item JSON
getAll on Account, Attachment, Case, Contact, Custom Object, Lead, Opportunity, Task, User{ "records": [ … ] }
getAll on Flow{ "actions": [ … ] } — trimmed to Limit unless Return All is on
query{ "records": [ … ] }
delete, and any update or upsert that Salesforce answers with no content{ "errors": [], "success": true }
{
  "errors": [],
  "success": true
}

Every other operation — create, get, getSummary, addNote, addToCampaign, addComment, invoke and upload — puts the Salesforce REST response on the item exactly as the API returned it. The node does not add, rename or reshape those fields, so what you can reference downstream is whatever your Salesforce org sends back for that object.

Two behaviors worth knowing before you build on the output:

  • Get Many follows pagination for you. With Return All on, every page of the query result is fetched and all records land in the one records array; with it off, the Limit is applied as a SOQL LIMIT.
  • Attachment Get returns the attachment record, not the file. It gives you the attachment’s Salesforce fields; it does not download the file contents into binary data.

Reference the result downstream by expression, for example {{ $json.records }} after a Get Many or {{ $json.success }} after a Delete.

Usage Examples

  • Create a new lead in Salesforce
  • Upload an attachment to a Salesforce record
  • Upload a document to Salesforce Content
  • Query Salesforce records with SOQL
  • Update an opportunity stage
  • Invoke a Salesforce Flow

Example Configuration

Create a lead from the fields on the incoming item:

{
  "type": "salesforce",
  "parameters": {
    "resource": "lead",
    "operation": "create",
    "company": "{{ $json.company }}",
    "lastname": "{{ $json.lastName }}",
    "additionalFields": {
      "firstname": "{{ $json.firstName }}",
      "email": "{{ $json.email }}",
      "phone": "{{ $json.phone }}",
      "status": "Open - Not Contacted"
    }
  }
}

Create or update an opportunity keyed on your own external ID, so re-running the workflow does not duplicate records:

{
  "type": "salesforce",
  "parameters": {
    "resource": "opportunity",
    "operation": "upsert",
    "externalId": "External_ID__c",
    "externalIdValue": "{{ $json.dealRef }}",
    "name": "{{ $json.dealName }}",
    "closeDate": "{{ $json.closeDate }}",
    "stageName": "Prospecting",
    "additionalFields": {
      "amount": 100000,
      "probability": 25
    }
  }
}

Attach a file produced by an upstream node to a Salesforce record:

{
  "type": "salesforce",
  "parameters": {
    "resource": "attachment",
    "operation": "create",
    "parentId": "{{ $json.accountId }}",
    "name": "contract.pdf",
    "binaryPropertyName": "data",
    "additionalFields": {
      "description": "Signed contract",
      "isPrivate": false
    }
  }
}

List leads with a field list and a filter — Conditions (JSON) takes a conditionValues array, one entry per condition:

{
  "type": "salesforce",
  "parameters": {
    "resource": "lead",
    "operation": "getAll",
    "returnAll": false,
    "limit": 50,
    "options": {
      "fields": "Id,Name,Email,Company,Status",
      "conditionsUi": "{\"conditionValues\":[{\"field\":\"Status\",\"operation\":\"equal\",\"value\":\"Open - Not Contacted\"}]}"
    }
  }
}

Run a SOQL query directly:

{
  "type": "salesforce",
  "parameters": {
    "resource": "search",
    "operation": "query",
    "query": "SELECT Id, Name, Email FROM Contact WHERE LastName = '{{ $json.lastName }}' LIMIT 10"
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Manage Salesforce CRM records, attachments, and documents with full CRUD and binary upload/download support.

Common Patterns

Standard CRUD Operations

Most Salesforce resources support standard CRUD operations:

  1. Create: Requires resource-specific required fields + optional additionalFields
  2. Get: Requires the resource ID
  3. Update: Requires the resource ID + updateFields collection
  4. Delete: Requires only the resource ID
  5. Get All: Supports pagination with returnAll/limit and filtering with options

Upsert Pattern

For resources supporting upsert (leads, contacts, accounts, opportunities, custom objects):

  1. Specify the external ID field name in externalId
  2. Provide the external ID value in externalIdValue
  3. Include required fields for creation
  4. Use additionalFields for optional fields

Binary File Operations

For attachments and documents:

  1. Set binaryPropertyName to reference the workflow property containing the file data
  2. Provide appropriate metadata (name, title, etc.)
  3. Use additionalFields for optional properties like description or privacy settings

Custom Object Operations

When working with custom objects:

  1. Always specify the customObject API name (ending in __c)
  2. Use customFieldsUi JSON for custom field values
  3. Standard Salesforce fields can still be used in additionalFields/updateFields

Frequently asked questions

What does each CRUD operation need?

Create needs the resource-specific required fields plus optional additional fields; Get and Delete need the resource ID; Update needs the ID plus an update-fields collection.

Can it handle attachments?

Yes — attachments and documents are supported with binary upload and download, so files can be attached to records from the workflow.

How do I react to changes in Salesforce?

Use the Salesforce Trigger, which polls for created or updated records rather than requiring a platform event configuration.

Which credential does it need?

A Salesforce OAuth2 credential with access to the objects you are working with.

Build with the Salesforce node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Salesforce OAuth2 credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.