Create Salesforce Task
Create tasks in Salesforce
The Create Salesforce Task node creates follow-up tasks in Salesforce. Use it to automatically generate action items, reminders, and activities based on meeting outcomes.
Overview
| Property | Value |
|---|---|
| Category | Action |
| Node IDs | ds.createSalesforceTask.perItem.in1.success1.error1 (per-item)ds.createSalesforceTask.batch.in1.success1.error1 (batch) |
| Input Ports | 1 |
| Success Outputs | 1 |
| Error Outputs | 1 |
| Execution Mode | Per-item or Batch |
| Timeout | 30 seconds |
| Retry Strategy | Exponential, 3 attempts |
| Side-Effecting | Yes |
Prerequisites
- Salesforce integration connected (Setup Guide)
- Salesforce Enterprise tier or above (for API access)
- Appropriate Salesforce permissions for task creation
Configuration
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
deal_room_id | CEL Expression | Yes | - | Decision Site ID to associate task |
title | Liquid Template | Yes | - | Task subject |
description | Liquid Template | Yes | - | Task description/comments |
due_date | CEL Expression | No | - | Due date (YYYY-MM-DD) |
priority | Select | No | Normal | High, Normal, or Low |
Deal Room ID
Links the task to the correct Salesforce opportunity:
trigger.dealRoomId
Title (Subject)
Task subject using Liquid template:
Follow up: {{ json.meeting.title }}
Description
Task comments/body:
Follow up from meeting on {{ json.meeting.startTime | date: "%B %d, %Y" }}.
Key discussion points:
{{ json.summary }}
Next steps: {{ json.nextSteps }}
Due Date
ISO date format (YYYY-MM-DD):
"2024-01-20"
Or from upstream data:
json.calculatedDueDate
Priority
Task priority level:
High- Urgent tasksNormal- Standard priority (default)Low- Non-urgent tasks
Input Schema
Accepts any data from upstream. Access via json in templates.
Output Schema
Success Output
{
"success": true,
"taskId": "00T5e000001abc123",
"opportunityId": "0065e000001xyz789",
"subject": "Follow up: Q1 Planning Review",
"activityDate": "2024-01-20",
"priority": "High",
"createdAt": "2024-01-15T14:30:00Z"
}
Error Output
{
"error": "OPPORTUNITY_NOT_FOUND",
"message": "No Salesforce opportunity associated with deal room dr_xyz789",
"dealRoomId": "dr_xyz789"
}
| Error Code | Description |
|---|---|
OPPORTUNITY_NOT_FOUND | No Salesforce opportunity linked to deal room |
AUTH_ERROR | Salesforce token expired or permissions issue |
VALIDATION_ERROR | Invalid task data |
FIELD_CUSTOM_VALIDATION | Salesforce validation rule failed |
Examples
Basic Example: Post-Meeting Task
Create a follow-up task after a meeting.
Configuration:
Deal Room ID: trigger.dealRoomId
Title:
Follow up: {{ json.meeting.title }}
Description:
Follow up from meeting on {{ json.meeting.startTime | date: "%B %d" }}.
Summary:
{{ json.summary }}
Action items discussed:
{{ json.actionItems }}
Due Date: "2024-01-20"
Priority: Normal
Example: High-Priority Alert
Create urgent task for at-risk deals.
Configuration:
Title:
URGENT: Risk identified - {{ json.dealName }}
Description:
Risk identified during meeting on {{ json.meeting.startTime | date: "%B %d, %Y" }}.
Risk type: {{ json.riskType }}
Description: {{ json.riskDescription }}
Recommended immediate actions:
{{ json.recommendedActions }}
Meeting participants:
{% for a in json.meeting.attendees %}
- {{ a.name }} ({{ a.email }})
{% endfor %}
Priority: High
Example: Multiple Tasks from Action Items
Create individual tasks for each action item.
Workflow:
[Load Meeting]
│
▼
[AI Prompt: Extract action items as JSON array]
│
▼
[Select Many: json.actionItems] ← Expand array to items
│
▼
[Create Salesforce Task] ← Creates one task per item
Configuration:
Title:
Action: {{ json.task }}
Description:
From: {{ json.meetingTitle }}
Task: {{ json.task }}
Owner: {{ json.owner | default: "Unassigned" }}
Deadline: {{ json.deadline | default: "Not specified" }}
Meeting date: {{ json.meetingDate }}
Example: Scheduled Check-in
Create a future follow-up task.
Configuration:
Title:
Check-in call: {{ json.contact.company }}
Description:
Scheduled check-in following {{ json.meeting.title }}.
Discussion points for next call:
{% for topic in json.followUpTopics %}
- {{ topic }}
{% endfor %}
Previous meeting summary:
{{ json.previousSummary }}
Contact: {{ json.contact.name }} ({{ json.contact.email }})
Due Date: json.followUpDate
Priority: Normal
Best Practices
1. Include Full Context
Sales reps should understand the task without digging:
Opportunity: {{ json.opportunity.name }}
Meeting: {{ json.meeting.title }}
Date: {{ json.meeting.startTime | date: "%B %d, %Y" }}
Attendees:
{% for a in json.meeting.attendees %}
- {{ a.name }}
{% endfor %}
Key discussion points:
{{ json.keyPoints }}
Required action:
{{ json.actionRequired }}
2. Standardize Subject Lines
Use consistent prefixes for easy filtering:
| Type | Prefix Example |
|---|---|
| Follow-up | Follow up: [context] |
| Action required | Action: [task] |
| Urgent | URGENT: [issue] |
| Check-in | Check-in: [contact/company] |
3. Match Salesforce Task Conventions
If your org has task naming conventions, follow them:
[{{ json.taskType }}] {{ json.subject }} - {{ json.contact.company }}
4. Handle Missing Data Gracefully
{% if json.contact.name %}
Contact: {{ json.contact.name }}
{% else %}
Contact: (see meeting attendees)
{% endif %}
{% if json.nextSteps %}
Next steps:
{{ json.nextSteps }}
{% endif %}
5. Validate Before Creating
Check that the deal room has a Salesforce opportunity:
[If: has Salesforce opportunity?]
├── Yes ──▶ [Create Salesforce Task]
└── No ───▶ [Slack: "No SF opportunity found"] ──▶ [Sink]
Common Issues
"Opportunity not found" error
Causes:
- Deal room not synced to Salesforce
- Opportunity was deleted
- Incorrect deal room ID
Solutions:
- Verify deal room has Salesforce association in UI
- Check Salesforce for the opportunity
- Re-sync the deal room
Task created but missing from opportunity
Causes:
- Salesforce page layout doesn't show tasks
- Task associated but in wrong related list
- User view is filtered
Solutions:
- Check opportunity's Activity/Tasks related list
- Clear any list filters
- Verify task exists in Salesforce Tasks tab
Field validation errors
Causes:
- Salesforce validation rules
- Required custom fields not populated
- Field value not in picklist
Solutions:
- Check Salesforce validation rules
- Map required fields in workflow
- Use valid picklist values
Authentication errors
Causes:
- Salesforce session expired
- IP restrictions
- Password policy changes
Solutions:
- Reconnect Salesforce integration
- Verify Salesforce API access
- Check Salesforce login history
Related Nodes
- AI Prompt - Generate task content
- Select Many - Create multiple tasks
- CRM Update Opportunity - Update opportunity
- Create HubSpot Task - HubSpot alternative
Technical Details
Task Object Fields
The node sets these Salesforce Task fields:
Subject- From title parameterDescription- From description parameterActivityDate- From due_date parameterPriority- From priority parameterWhatId- Opportunity ID (from deal room association)Status- "Not Started" (default)
Task Association
Tasks are associated with:
- The Salesforce Opportunity linked to the deal room
- Additional associations depend on Salesforce configuration
Task Owner
Tasks are assigned to the opportunity owner. To assign to a different user, additional configuration may be needed.
Idempotency
Tasks use idempotency keys based on execution context to prevent duplicates during retries. Different workflow executions will create separate tasks.
API Limits
Respects Salesforce API limits:
- Daily API call limits
- Concurrent API call limits
- Retry logic handles temporary rate limits