Intermediate~20 min setupCRM & CommunicationVerified April 2026
HubSpot logo
Slack logo

How to Send HubSpot Task Reminders to Slack with N8n

Automatically notify your team in Slack when HubSpot tasks are overdue or due soon to keep reps accountable.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

HubSpot for Slack exists as a native integration, but it doesn't support conditional routing or custom message formatting. This guide uses an automation platform for full control. View native option →

Best for

Sales teams who want custom reminder logic and don't mind writing basic filtering code.

Not ideal for

Teams that need pure drag-and-drop automation without any JavaScript requirements.

Sync type

scheduled

Use case type

notification

Real-World Example

💡

A 25-person B2B software sales team uses this to notify #sales-alerts when tasks are overdue and #sales for upcoming due dates. Before automation, reps manually checked their task lists 2-3 times daily and routinely missed follow-ups for 24+ hours. Now overdue tasks get immediate attention with @here notifications, and upcoming tasks get gentle reminders to help with daily planning.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.

Prices shown for annual billing. Based on published pricing as of April 2026.

Estimated ROI

1000

min saved/mo

$583

labor value/mo

Free

no platform cost

Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.

Implementation

Skip the setup

Import this workflow directly into n8n

Copy the pre-built n8n blueprint and paste it straight into n8n. All modules, filters, and field mappings are already configured — you just need to connect your accounts.

Before You Start

Make sure you have everything ready.

HubSpot account with Tasks feature enabled and API access
Slack workspace admin access to create channels and add bots
N8n instance running (cloud or self-hosted)
HubSpot private app API key with tasks read permissions
List mapping HubSpot user IDs to Slack user IDs

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Task Subjecths_task_subject
Due Datehs_timestamp
Task Ownerhubspot_owner_id
Task Statushs_task_status
2 optional fields▸ show
Associated Contactassociations.contact
Task Typehs_task_type

Step-by-Step Setup

1

Workflows > New > Add Node > Schedule Trigger

Create New N8n Workflow

Start with a fresh workflow and add a Schedule Trigger node. This will check for overdue tasks every 30 minutes instead of waiting for HubSpot webhooks that don't exist for task due dates.

  1. 1Click 'Add first node' in the empty workflow canvas
  2. 2Select 'Schedule Trigger' from the trigger list
  3. 3Set the interval to 'Every 30 Minutes'
  4. 4Click 'Execute Node' to test the trigger
What you should see: The Schedule Trigger shows a green checkmark with timestamp data in the output panel.
2

Node > HubSpot > Tasks > Get All

Connect HubSpot Node

Add a HubSpot node to query tasks. You'll use the 'Get All' operation on the Tasks resource to pull active tasks with their due dates.

  1. 1Click the + button after the Schedule Trigger
  2. 2Search for 'HubSpot' and select it
  3. 3Choose 'Tasks' as the resource
  4. 4Select 'Get All' as the operation
  5. 5Connect your HubSpot account using API key
What you should see: HubSpot node shows 'Connected' status and displays sample task data when executed.
Common mistake — Use a private app API key, not OAuth - it's more reliable for scheduled workflows.
3

Node > Function > Each Item

Filter for Due Tasks

Add a Function node to filter tasks that are overdue or due within 24 hours. HubSpot returns all tasks, so you need custom logic to identify which ones need reminders.

  1. 1Add a Function node after HubSpot
  2. 2Set the function to process 'Each Item Separately'
  3. 3Paste the date comparison code in the function body
  4. 4Test with sample data to verify filtering logic
What you should see: Function node outputs only tasks with due dates in the past or next 24 hours.
Common mistake — HubSpot timestamps are in milliseconds - convert to JavaScript Date objects or your comparisons will fail.
HubSpot
HU
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Slack
SL
notified
4

Node > Function

Check Task Assignment

Add another Function node to extract the assigned user from each task. You'll need this to mention the right person in Slack and avoid sending reminders for unassigned tasks.

  1. 1Add a second Function node
  2. 2Access the hubspot_owner_id field from task data
  3. 3Add logic to skip tasks with no assigned owner
  4. 4Map owner ID to Slack user ID using a lookup object
What you should see: Function outputs tasks with both HubSpot owner ID and corresponding Slack user ID.
Common mistake — Create a manual mapping object for HubSpot user IDs to Slack user IDs - there's no automatic way to match them.
5

Node > Set > Add Field

Format Slack Message

Use a Set node to structure the reminder message. Include task name, due date, contact/company context, and mention the assigned rep using their Slack user ID.

  1. 1Add a Set node after the Function
  2. 2Create a 'message' field with formatted text
  3. 3Add task subject using {{ $json.subject }}
  4. 4Include due date with {{ $json.hs_timestamp }}
  5. 5Add Slack mention using <@{{ $json.slack_user_id }}>
What you should see: Set node shows formatted message text with proper Slack mentions and task details.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
6

Node > IF > Date & Time

Add Task Priority Logic

Create an IF node to handle overdue vs upcoming tasks differently. Overdue tasks get urgent formatting with red emoji, while upcoming tasks get yellow warning emoji.

  1. 1Add an IF node after Set
  2. 2Set condition to 'Date & Time'
  3. 3Compare task due date to current time
  4. 4Route overdue tasks to 'true' branch
  5. 5Route upcoming tasks to 'false' branch
What you should see: IF node splits into two paths with different message priorities.
Common mistake — Use 'is before' for overdue tasks, not 'is after' - the logic is counterintuitive but correct.
7

Node > Slack > Post Message

Configure Overdue Slack Node

Add a Slack node on the 'true' branch for urgent overdue reminders. These go to a dedicated channel with @here mentions to grab immediate attention.

  1. 1Add Slack node to the true branch
  2. 2Select 'Post Message' operation
  3. 3Choose your #task-alerts channel
  4. 4Set message text with 🚨 OVERDUE prefix
  5. 5Enable 'Link Names' to activate @here mentions
What you should see: Slack node shows connection status and preview of urgent overdue message format.
Common mistake — Don't use @channel in task reminders - it notifies everyone including people who have tasks disabled.
8

Node > Slack > Post Message

Configure Upcoming Slack Node

Add a second Slack node on the 'false' branch for gentle upcoming reminders. These use softer language and go to the general sales channel without @here.

  1. 1Add Slack node to the false branch
  2. 2Select 'Post Message' operation
  3. 3Choose your #sales channel
  4. 4Set message text with ⚠️ DUE SOON prefix
  5. 5Disable 'Link Names' for gentler notifications
What you should see: Second Slack node configured with milder notification formatting.
9

Node > Set > Settings > On Error

Add Error Handling

Connect both Slack nodes to an error handler that logs failed notifications. This prevents the workflow from breaking when Slack is down or API limits are hit.

  1. 1Add a Set node after both Slack nodes
  2. 2Configure it to trigger 'On Error'
  3. 3Set it to log the error details
  4. 4Add the original task data to the error log
What you should see: Error handling node appears with red connection lines from both Slack nodes.
Common mistake — Set error handling to 'Continue On Fail' not 'Stop On Error' or one API failure kills the entire batch.
10

Workflow > Execute Workflow

Test Full Workflow

Execute the complete workflow with real data to verify task filtering, message formatting, and Slack delivery. Check both overdue and upcoming scenarios.

  1. 1Click 'Execute Workflow' button
  2. 2Verify HubSpot returns task data
  3. 3Check that date filtering works correctly
  4. 4Confirm Slack messages appear in correct channels
  5. 5Test with both overdue and upcoming tasks
What you should see: Workflow completes successfully with Slack notifications delivered to appropriate channels.
Common mistake — Test during business hours when your team can verify Slack messages actually arrive and format correctly.
n8n
▶ Run once
executed
HubSpot
Slack
Slack
🔔 notification
received
11

Workflow > Settings > Active

Activate Automation

Turn on the workflow to run automatically every 30 minutes. Set up monitoring to track execution history and catch any failures quickly.

  1. 1Toggle the 'Active' switch in workflow settings
  2. 2Set up email notifications for workflow failures
  3. 3Check the execution history after first few runs
  4. 4Monitor Slack channels for proper message delivery
What you should see: Workflow shows 'Active' status and begins running on schedule automatically.

Drop this into an n8n Code node.

JavaScript — Code Node// Filter for tasks due in next 24 hours or overdue
▸ Show code
// Filter for tasks due in next 24 hours or overdue
const now = new Date();
const tomorrow = new Date(now.getTime() + (24 * 60 * 60 * 1000));

... expand to see full code

// Filter for tasks due in next 24 hours or overdue
const now = new Date();
const tomorrow = new Date(now.getTime() + (24 * 60 * 60 * 1000));
const dueDate = new Date($json.hs_timestamp);

if (dueDate <= tomorrow && $json.hs_task_status !== 'COMPLETED') {
  return {
    ...($json),
    is_overdue: dueDate < now,
    urgency: dueDate < now ? 'high' : 'medium'
  };
}

return null; // Skip this task

Scaling Beyond 100+ tasks per run+ Records

If your volume exceeds 100+ tasks per run records, apply these adjustments.

1

Batch API Requests

Use HubSpot's batch API endpoints instead of individual task queries. This reduces API calls from N per task to N/100 batched requests and stays under rate limits.

2

Filter at Query Level

Add date range filters to the HubSpot API call itself rather than pulling all tasks and filtering in N8n. Use the 'hs_timestamp' filter to only fetch tasks due within your window.

Going live

Production Checklist

Before you turn this on for real, confirm each item.

Troubleshooting

Common errors and how to fix them.

Frequently Asked Questions

Common questions about this workflow.

Analysis

VerdictWhy n8n for this workflow

Use N8n for this if you need custom filtering logic and don't mind writing a bit of code. The date comparison and user mapping require Function nodes that give you full JavaScript control. You can also self-host N8n for free if you're handling sensitive sales data. Skip N8n if your team wants pure drag-and-drop - Zapier's built-in date filters handle 80% of reminder scenarios without code.

Cost

This workflow uses about 20 executions per run - one for the schedule trigger, multiple for HubSpot API calls, filtering, and Slack posts. At 48 runs daily (every 30 minutes), that's 960 executions. With 10 active tasks triggering reminders, you hit roughly 1,500 executions monthly. That fits N8n's Starter plan at $20/month. Zapier would cost $50/month for the same volume since their task filtering counts as premium steps. Make sits between them at $35/month.

Tradeoffs

Make handles the date filtering better with visual calendar operators instead of code. Zapier wins on the Slack formatting with rich message builders and user lookup tables. But N8n gives you the most control over reminder logic - you can add complex rules like 'only remind on weekdays' or 'escalate if overdue by 3+ days' without hitting platform limitations. The Function nodes let you build exactly the filtering logic your sales process needs.

You'll hit HubSpot's rate limits if you check tasks too frequently. Their API allows 100 calls per 10 seconds, but tasks queries can be slow and count against your daily quota. The bigger issue is that HubSpot task timestamps are inconsistent - some come in UTC, others in account timezone. You need timezone conversion logic or your 'due today' reminders fire at midnight instead of business hours. Also watch for tasks assigned to deactivated users - they'll break your Slack user mapping and kill the workflow.

Ideas for what to build next

  • Add Deal Context to Task RemindersModify the workflow to pull associated deal information and include deal value and stage in reminder messages for better context.
  • Create Task Completion NotificationsBuild a second workflow that celebrates when overdue tasks get completed, encouraging the team and tracking accountability improvements.
  • Escalate Persistent Overdue TasksAdd logic to track how long tasks stay overdue and automatically notify managers when tasks hit 3+ days past due.

Related guides

Was this guide helpful?
HubSpot + Slack overviewn8n profile →