1. Opening Problem Statement
Meet Darryn Balanco, a project manager managing multiple task lists in Notion while coordinating with his team through Slack. Each weekday morning, Darryn spends at least 30 minutes manually sifting through Notion tasks to identify what’s incomplete and then messaging each team member their assignments. This repetitive process is error-prone—sometimes tasks get overlooked or delayed, causing workflow bottlenecks and lost productivity across the team.
Imagine missing a critical due task because a reminder was forgotten or a delay in notification cascaded into missed deadlines. For Darryn and his small but busy team, every minute lost to manual follow-ups equals lost time on actual work and potential project delays.
2. What This Automation Does
This n8n workflow tackles Darryn’s challenge with a streamlined automated reminder system that runs every weekday at 9:00 AM. Here’s what happens when it runs:
- It triggers automatically from a Cron schedule node, ensuring reminders go out punctually Monday through Friday.
- Queries the Notion database to fetch all task entries, pulling in up-to-date task information.
- Filters tasks to identify only those incomplete (i.e., not marked “Done”).
- Fetches all Slack users via Slack API to identify recipients correctly.
- Matches each task’s Notion assignee email against a preset list of users to route tasks correctly.
- Sends a tailored Slack direct message to each user, listing their pending tasks with due dates.
By automating these steps, Darryn saves at least 2.5 hours per week on manual reminders and drastically reduces missed updates, helping his team stay consistently on track.
3. Prerequisites ⚙️
- Notion account with access to the task database 📁
- Slack workspace with OAuth credentials to send messages 📧🔑
- n8n account to create and run workflows 🔌
- Optional: Self-host n8n workflow (e.g., on Hostinger) for more control and data privacy ⏱️
4. Step-by-Step Guide
Step 1: Create a Cron Trigger for Weekday Schedule
Navigate to + Add Node → Trigger → Cron.
Set the cron expression to 0 9 * * 1,2,3,4,5 to run every Monday to Friday at 9:00 AM.
You should see the Cron node ready to trigger the workflow on the configured schedule.
Tip: Use Crontab Guru to understand and test cron syntax.
Step 2: Store Notion User Emails with Set Node
Add a Set node named “Set Notion User Emails.” Create string fields for each user’s Notion email, for example:
- User 1 Notion Email:
[email protected] - User 2 Notion Email:
[email protected]
This helps map tasks correctly to users later.
Step 3: Store Slack User Full Names with Set Node
Next, add another Set node called “Set Slack User Full Name.” Add string fields with the Slack full names to match:
- User 1 Slack Full Name:
Darryn Balanco - User 2 Slack Full Name:
Cassandra Balanco
Step 4: Retrieve All Tasks from Notion Database
Add a Notion node named “Get To Dos from Tasks Database.”
Set resource to databasePage and operation to getAll.
Enter your Notion Tasks database ID to connect.
You will see a batch of task entries including properties like Status, Task, Due date, and Assigned User.
Step 5: Filter Out Completed Tasks
Add a Filter node called “Filter incomplete tasks only.”
Set the condition to filter tasks where Status is not equal to Done.
This ensures only pending tasks continue in the workflow.
Step 6: Retrieve All Slack Users
Add a Slack node named “Get All Slack Users (Darryn).”
Choose resource as user and operation getAll.
Authenticate with Slack OAuth2 credentials.
This node fetches all Slack users to compare against task assignees.
Step 7: Match Notion Task Users to Emails Using Switch Node
Add a Switch node named “Switch for Notion Users Emails.”
Define rules comparing the task’s Notion User email property to the stored user emails in step 2.
This routes tasks to either “User 1 Notion Tasks” or “User 2 Notion Tasks” outputs based on match.
Step 8: Filter Slack Users by Full Name
Create two Filter nodes:
- One to find Slack user with full name matching User 1’s Slack full name.
- Another to filter for User 2’s Slack full name.
This ensures the reminder is sent to the correct Slack user.
Step 9: Send Slack Direct Message Reminders
Add two Slack nodes named “Send a Direct Message to User 1” and “Send a Direct Message to User 2.”
Set the channel to the Slack user ID from the corresponding filter node, and craft the message text to list the incomplete tasks and due dates using expressions like:
=☑️ {{ $('Filter incomplete tasks only').item.json.Task }} (Due: {{ $('Filter incomplete tasks only').item.json.Due.start }})Enable markdown formatting for clarity.
When these nodes run, users get direct Slack reminders of their current incomplete tasks right in their inbox.
5. Customizations ✏️
- Add More Users: Extend the “Set Notion User Emails” and “Set Slack User Full Name” nodes with additional emails and names, then expand the Switch node with further rules for new users.
- Change Notion Database: In the “Get To Dos from Tasks Database” node, update the database ID to the new target Notion tasks database for different project teams.
- Modify Slack Message Format: In the Slack message nodes, customize the message text or attachment layout to include priority, notes, or tags from Notion properties.
6. Troubleshooting 🔧
Problem: “Notion database ID is invalid or empty”
Cause: Incorrect or missing database ID in the Notion node.
Solution: Recheck the Notion database ID copy-pasted from your Notion workspace and ensure it is input exactly in the “Get To Dos from Tasks Database” node.
Problem: “Slack OAuth credentials not authorized”
Cause: Slack OAuth token expired or missing correct permissions.
Solution: Reauthenticate Slack OAuth credentials under your Slack node settings and verify the OAuth scopes include messaging permissions.
7. Pre-Production Checklist ✅
- Verify your Notion integration has query access to the Tasks database.
- Confirm Slack OAuth credentials authenticate correctly and can send direct messages.
- Run a manual workflow test on a weekday morning and confirm Slack messages are received as expected.
- Backup current Notion data before modifying task assignments or properties.
8. Deployment Guide
Activate the Cron node to enable the workflow schedule to run every weekday at 9:00 AM.
Monitor the workflow execution logs in n8n for any errors or failures immediately after the scheduled triggers.
Adjust Slack messages or user mappings as team members change roles.
10. Conclusion
By setting up this n8n automation, you’ve created a reliable, hands-off process that fetches and filters Notion tasks and delivers personalized Slack reminders for incomplete items every weekday morning. This automation saves Darryn and his team at least 2.5 hours weekly that would otherwise be lost to manual coordination.
Next, consider extending this workflow to support more users, integrate Slack reactions for task confirmation, or add a reporting summary sent weekly to team leads.
With this setup, staying organized and on top of critical tasks becomes effortless.