Create HubSpot Task
Create tasks in HubSpot CRM
The Create HubSpot Task node creates follow-up tasks in HubSpot CRM. Use it to automatically generate action items, reminders, and to-dos based on meeting outcomes.
Overview
| Property | Value |
|---|---|
| Category | Action |
| Node IDs | ds.createHubSpotTask.perItem.in1.success1.error1 (per-item)ds.createHubSpotTask.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
- HubSpot integration connected (Setup Guide)
- HubSpot Professional or Enterprise tier (for API access)
- Appropriate HubSpot 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/title |
description | Liquid Template | Yes | - | Task body/notes |
due_date | CEL Expression | No | - | Due date (YYYY-MM-DD) |
priority | Select | No | Normal | High, Normal, or Low |
Deal Room ID
The deal room ID links the task to the correct HubSpot deal:
trigger.dealRoomId
Title
Task subject using Liquid template:
Follow up: {{ json.meeting.title }}
Description
Task body with meeting context:
Follow up from meeting on {{ json.meeting.startTime | date: "%B %d, %Y" }}.
Key discussion points:
{{ json.summary }}
Action required: {{ json.actionItem }}
Due Date
ISO date format (YYYY-MM-DD):
"2024-01-20"
Or calculate dynamically:
// Note: Date calculation may require upstream processing
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": "12345678901",
"dealId": "9876543210",
"title": "Follow up: Q1 Planning Review",
"dueDate": "2024-01-20",
"priority": "High",
"createdAt": "2024-01-15T14:30:00Z"
}
Error Output
{
"error": "DEAL_NOT_FOUND",
"message": "No HubSpot deal associated with deal room dr_xyz789",
"dealRoomId": "dr_xyz789"
}
| Error Code | Description |
|---|---|
DEAL_NOT_FOUND | No HubSpot deal linked to the deal room |
AUTH_ERROR | HubSpot token expired or permissions issue |
VALIDATION_ERROR | Invalid task data |
RATE_LIMIT | HubSpot API rate limit reached |
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 required after meeting on {{ json.meeting.startTime | date: "%B %d" }}.
{{ json.summary }}
Due Date: "2024-01-20"
Priority: Normal
Example: AI-Generated Tasks
Create tasks from AI-extracted action items.
Workflow:
[Load Meeting]
│
▼
[AI Prompt: Extract action items]
│
▼
[Select Many: json.actionItems] ← Expand to individual items
│
▼
[Create HubSpot Task] ← Creates one task per action item
Configuration:
Title:
{{ json.task }}
Description:
From meeting: {{ json.meetingTitle }}
Task: {{ json.task }}
Assigned to: {{ json.owner }}
Meeting summary:
{{ json.meetingSummary }}
Example: Urgent Follow-up
Create high-priority task for urgent items.
Configuration:
Title:
URGENT: Follow up with {{ json.contact.name }}
Description:
Immediate action required based on today's meeting.
Risk identified: {{ json.riskDescription }}
Recommended action: {{ json.recommendedAction }}
Meeting: {{ json.meeting.title }}
Date: {{ json.meeting.startTime | date: "%B %d, %Y" }}
Priority: High
Example: Scheduled Follow-up
Create a task for a future follow-up date.
Configuration:
Title:
Scheduled check-in: {{ json.contact.name }}
Description:
Scheduled follow-up from {{ json.meeting.title }}.
Discuss:
{{ json.followUpTopics }}
Previous meeting notes:
{{ json.summary }}
Due Date: json.followUpDate (calculated upstream)
Best Practices
1. Include Meeting Context
Tasks should have enough context to act on:
Meeting: {{ json.meeting.title }}
Date: {{ json.meeting.startTime | date: "%B %d, %Y" }}
Attendees: {% for a in json.meeting.attendees %}{{ a.name }}{% unless forloop.last %}, {% endunless %}{% endfor %}
Key discussion:
{{ json.summary }}
Action required:
{{ json.actionItem }}
2. Set Appropriate Priorities
| Situation | Priority |
|---|---|
| At-risk deal, customer concern | High |
| Standard follow-up | Normal |
| FYI, nice-to-have | Low |
3. Use Clear, Actionable Titles
✅ Good:
Send proposal to {{ json.contact.name }} by Friday
❌ Bad:
Follow up
4. Handle Multiple Action Items
Use Select Many to create individual tasks:
[AI: Extract action items] → [Select Many] → [Create HubSpot Task]
This creates separate, trackable tasks rather than one big task.
5. Validate Deal Room Association
Before creating tasks, verify the deal room has a HubSpot deal:
[If: has HubSpot deal?]
├── Yes ──▶ [Create HubSpot Task]
└── No ───▶ [Slack Alert: "No HubSpot deal found"] ──▶ [Sink]
Common Issues
"Deal not found" error
Causes:
- Deal room not synced to HubSpot
- HubSpot deal was deleted
- Incorrect deal room ID
Solutions:
- Verify deal room has HubSpot association
- Check HubSpot for the deal
- Re-sync the deal room if needed
Task created but not visible
Causes:
- Task assigned to different user
- HubSpot view filters
- Task is associated but not showing in timeline
Solutions:
- Check task in HubSpot tasks view
- Remove filters
- Check deal's activity timeline
Authentication errors
Causes:
- HubSpot token expired
- Permissions changed
- Integration disconnected
Solutions:
- Reconnect HubSpot integration
- Verify user permissions in HubSpot
- Check integration status in settings
Related Nodes
- AI Prompt - Generate task descriptions
- Select Many - Create multiple tasks
- CRM Update Opportunity - Update deal properties
- Create Salesforce Task - Salesforce alternative
Technical Details
Task Association
Tasks are associated with:
- The HubSpot deal linked to the deal room
- Any contacts on the deal
- The company associated with the deal
Task Owner
Tasks are assigned to the deal's owner in HubSpot. If no owner, the task may be unassigned.
HubSpot API
Uses the HubSpot Engagements API:
- Creates task engagement
- Associates with deal, contacts, company
- Sets due date and priority
Idempotency
Tasks use idempotency keys based on execution context. However, running the workflow multiple times will create multiple tasks (different executions).