Search documentation

Search for pages in the documentation

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

PropertyValue
CategoryAction
Node IDsds.createHubSpotTask.perItem.in1.success1.error1 (per-item)
ds.createHubSpotTask.batch.in1.success1.error1 (batch)
Input Ports1
Success Outputs1
Error Outputs1
Execution ModePer-item or Batch
Timeout30 seconds
Retry StrategyExponential, 3 attempts
Side-EffectingYes

Prerequisites

  • HubSpot integration connected (Setup Guide)
  • HubSpot Professional or Enterprise tier (for API access)
  • Appropriate HubSpot permissions for task creation

Configuration

ParameterTypeRequiredDefaultDescription
deal_room_idCEL ExpressionYes-Decision Site ID to associate task
titleLiquid TemplateYes-Task subject/title
descriptionLiquid TemplateYes-Task body/notes
due_dateCEL ExpressionNo-Due date (YYYY-MM-DD)
prioritySelectNoNormalHigh, Normal, or Low

Deal Room ID

The deal room ID links the task to the correct HubSpot deal:

cel
trigger.dealRoomId

Title

Task subject using Liquid template:

liquid
Follow up: {{ json.meeting.title }}

Description

Task body with meeting context:

liquid
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):

cel
"2024-01-20"

Or calculate dynamically:

cel
// Note: Date calculation may require upstream processing
json.calculatedDueDate

Priority

Task priority level:

  • High - Urgent tasks
  • Normal - Standard priority (default)
  • Low - Non-urgent tasks

Input Schema

Accepts any data from upstream. Access via json in templates.

Output Schema

Success Output

json
{
  "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

json
{
  "error": "DEAL_NOT_FOUND",
  "message": "No HubSpot deal associated with deal room dr_xyz789",
  "dealRoomId": "dr_xyz789"
}
Error CodeDescription
DEAL_NOT_FOUNDNo HubSpot deal linked to the deal room
AUTH_ERRORHubSpot token expired or permissions issue
VALIDATION_ERRORInvalid task data
RATE_LIMITHubSpot 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:

liquid
Follow up: {{ json.meeting.title }}

Description:

liquid
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:

text
[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:

liquid
{{ json.task }}

Description:

liquid
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:

liquid
URGENT: Follow up with {{ json.contact.name }}

Description:

liquid
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:

liquid
Scheduled check-in: {{ json.contact.name }}

Description:

liquid
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:

liquid
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

SituationPriority
At-risk deal, customer concernHigh
Standard follow-upNormal
FYI, nice-to-haveLow

3. Use Clear, Actionable Titles

Good:

liquid
Send proposal to {{ json.contact.name }} by Friday

Bad:

liquid
Follow up

4. Handle Multiple Action Items

Use Select Many to create individual tasks:

text
[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:

text
[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:

  1. Verify deal room has HubSpot association
  2. Check HubSpot for the deal
  3. 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:

  1. Check task in HubSpot tasks view
  2. Remove filters
  3. Check deal's activity timeline

Authentication errors

Causes:

  • HubSpot token expired
  • Permissions changed
  • Integration disconnected

Solutions:

  1. Reconnect HubSpot integration
  2. Verify user permissions in HubSpot
  3. Check integration status in settings

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