case/create
Create a new support Case record in Salesforce linked to an Account and optionally a Contact.
When to Use
- Create a support case when a customer email arrives via an IMAP trigger or email inbox webhook.
- Log a case from a chatbot escalation when the bot cannot resolve the customer issue.
- Automatically open a case when a monitoring alert fires for a specific customer's service.
- Create a case when a payment fails and the customer needs manual support.
- File a case from a field service report submitted by a technician.
Configuration
Connection
| Field | Type | Required | Description |
InstanceUrl | string | required | Salesforce org URL. |
AccessToken | string | required | Valid OAuth2 access token. |
Operation Fields
| Field | Type | Required | Description |
Subject | string | required | Case subject or title. |
AccountId | string | optional | Salesforce Account ID to link the case to. |
ContactId | string | optional | Salesforce Contact ID for the reporting contact. |
Description | string | optional | Detailed description of the issue. |
Priority | string | optional | Case priority: Low, Medium, or High. |
Status | string | optional | Initial case status, e.g. New, Working. |
Origin | string | optional | How the case was received: Phone, Email, Web. |
Type | string | optional | Case type: Question, Problem, Feature Request. |
Reason | string | optional | Reason for the case. |
Sample Configuration
{
"Resource": "case",
"Operation": "create",
"InstanceUrl": "https://myorg.my.salesforce.com",
"AccessToken": "{{credentials.salesforce.accessToken}}",
"Subject": "Login issue after password reset",
"AccountId": "{{nodes.LookupAccount.records[0].Id}}",
"ContactId": "{{nodes.LookupContact.records[0].Id}}",
"Description": "Customer reports unable to log in after password reset on {{trigger.timestamp}}",
"Priority": "High",
"Status": "New",
"Origin": "Email",
"Type": "Problem"
}
Validation Errors
| Error Code | Condition |
CFG_MISSING_INSTANCE | InstanceUrl is missing. |
CFG_MISSING_TOKEN | AccessToken is missing. |
VAL_MISSING_FIELD | Subject is missing. |
UNEXPECTED_ERROR | Unexpected exception. |
Output
Success Port
| Field | Type | Description |
caseId | string | 18-character Salesforce Case ID. |
caseNumber | string | Human-readable case number (e.g. 00001234). |
createdAt | string | ISO 8601 creation timestamp. |
status | string | Always created. |
resource | string | Always case. |
operation | string | Always create. |
Error Port
| Field | Type | Description |
errorCode | string | Machine-readable error code. |
message | string | Error description. |
Sample Output
{
"caseId": "5005g000007VwxYZA",
"caseNumber": "00001234",
"createdAt": "2026-05-26T13:00:00.000Z",
"status": "created",
"resource": "case",
"operation": "create"
}
Expression Reference
| Expression | Description |
{{nodes.CreateCase.caseId}} | The Salesforce Case ID. |
{{nodes.CreateCase.caseNumber}} | Human-readable case number. |
{{nodes.CreateCase.createdAt}} | Creation timestamp. |
{{nodes.CreateCase.errorCode}} | Error code from error port. |
Node Policies & GuardRails
| Policy | Detail |
| Credential storage | Store AccessToken in BizFirst Credentials Manager. |
| Account linkage | Always provide AccountId when known. Orphaned cases are harder to report and manage. |
| Picklist validation | Priority, Status, Origin, Type values must match org picklist entries. |
| Error port wiring | Always wire the error port. |
| Sandbox testing | Test in sandbox, especially if case creation triggers Salesforce Entitlement or Milestone processes. |
Examples
Create Case from Customer Email
{
"Subject": "{{trigger.emailSubject}}",
"Description": "{{trigger.emailBody}}",
"Origin": "Email",
"Priority": "Medium",
"Status": "New",
"ContactId": "{{nodes.LookupContactByEmail.records[0].Id}}"
}
Chatbot Escalation
{
"Subject": "Chatbot escalation: {{trigger.issueType}}",
"Description": "Session transcript: {{trigger.chatTranscript}}",
"Origin": "Web",
"Priority": "High",
"AccountId": "{{trigger.accountId}}",
"ContactId": "{{trigger.contactId}}"
}
Payment Failure Alert
{
"Subject": "Payment failed — Invoice #{{trigger.invoiceNumber}}",
"Description": "Payment of ${{trigger.amount}} failed on {{trigger.failureDate}}. Reason: {{trigger.failureReason}}",
"Priority": "High",
"Type": "Problem",
"AccountId": "{{trigger.accountId}}"
}