Search all guides

Reference · Tools

Salesforce integration

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.

Works as
Action (binary)
Tool name
salesforce
Operations
13 — Add Note , Add to Campaign , Create , Delete , Get and 8 more
Parameters
72
Outputs
Output, Error
Credentials
Salesforce OAuth2
Official docs
Salesforce docs developer.salesforce.com

What you can build with Salesforce

  • 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.

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.

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”}]}
— FieldsstringNo—Comma-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 FieldstringYes—API 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——
NamestringYes—Filename (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”}]}
— FieldsstringNo—Comma-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”}]}
— FieldsstringNo—Comma-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——
— BirthdatestringNo—Date 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”}]}
— FieldsstringNo—Comma-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 FieldstringYes—API name of the external ID field
External ID ValuestringYes——
Last NamestringYes——
Additional FieldscollectionNo{}—
— Account ID (acconuntId)stringNo——
— Assistant NamestringNo——
— Assistant PhonestringNo——
— BirthdatestringNo—Date 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 NamestringYes—API 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 NamestringYes—API name of the custom object (e.g. My_Object__c)
Record IDstringYes——

Custom Object: Get

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

Custom Object: Get Many

ParameterTypeRequiredDefaultDescription
Custom Object API NamestringYes—API 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”}]}
— FieldsstringNo—Comma-separated list of fields to return

Custom Object: Update

ParameterTypeRequiredDefaultDescription
Custom Object API NamestringYes—API 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 FieldstringYes—API name of the external ID field
External ID ValuestringYes——
Custom Object API NamestringYes—API 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 ExtensionstringNo—Override file extension (e.g. pdf)
— Link To Object IDstringNo—ID 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”}]}
— FieldsstringNo—Comma-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
CompanystringYes—Company name (required)
Last NamestringYes—Last 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)stringNo—User 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”}]}
— FieldsstringNo—Comma-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
CompanystringYes—Company name (required)
Last NamestringYes—Last name (required)
External ID FieldstringYes—API 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)stringNo—User 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 DatestringYes—Date 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”}]}
— FieldsstringNo—Comma-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 FieldstringYes—API name of the external ID field
External ID ValuestringYes——
NamestringYes——
Close DatestringYes—Date 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 QuerystringYes—Raw 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 SubtypestringNo—Maps 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”}]}
— FieldsstringNo—Comma-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”}]}
— FieldsstringNo—Comma-separated list of fields to return

All Operations

ParameterTypeRequiredDefaultDescription
Salesforce AccountcredentialNo—Connect 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.

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

The Salesforce tool manages CRM records, attachments, and documents within Salesforce. It is the right tool when you need to create, update, retrieve, or delete leads, contacts, accounts, opportunities, cases, tasks, custom objects, or attachments, or upload documents. It produces the results of these operations, including record IDs, retrieved data, or confirmation of changes.

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 Salesforce

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 reviewed . Spotted something wrong? Tell us.