The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "9w5vu5VmXxpdBLWi",
"name": "Send Daily Birthday Reminders from Google Contacts to Slack",
"tags": [
{
"id": "uScnF9NzR3PLIyvU",
"name": "Published",
"createdAt": "2025-03-21T07:22:28.491Z",
"updatedAt": "2025-03-21T07:22:28.491Z"
}
],
"nodes": [
{
"id": "e4de5385-6b00-4245-b06e-3003703a348a",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
80,
140
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 8
}
]
}
},
"typeVersion": 1.2
},
{
"id": "df65de90-d931-450e-bed1-bf8b4f79a090",
"name": "Google Contacts",
"type": "n8n-nodes-base.googleContacts",
"notes": "Get the contact details\n",
"position": [
300,
140
],
"parameters": {
"fields": [
"emailAddresses",
"birthdays",
"names",
"nicknames"
],
"options": {},
"operation": "getAll",
"returnAll": true
},
"notesInFlow": true,
"typeVersion": 1
},
{
"id": "6e3dfeea-b22d-4156-a9a9-a8d5bb610848",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
800,
180
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "eff6fe23-651d-474d-8d77-3734e1ac4c13",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.today }}",
"rightValue": "={{ $('Google Contacts').item.json.birthdays }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "32bd420e-11ab-4e82-a732-ed155f36094b",
"name": "Slack",
"type": "n8n-nodes-base.slack",
"notes": "Reminds to the birthday message",
"position": [
1020,
60
],
"parameters": {
"text": "Todays Birthday of your friend",
"select": "channel",
"blocksUi": "=Today is {{$json[\"first_name\"]}} {{$json[\"last_name\"]}}'s birthday! \ud83c\udf89",
"channelId": {
"__rl": true,
"mode": "url",
"value": "",
"__regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
},
"messageType": "block",
"otherOptions": {},
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 2.3
},
{
"id": "caa5a301-ff68-4d61-801f-ac8c95edded3",
"name": "Filter Contact ",
"type": "n8n-nodes-base.filter",
"position": [
560,
140
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "edb146b2-f338-4563-a991-d38613d1d5aa",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $('Google Contacts').item.json.birthdays }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "4a156b56-ab25-4d29-aa1b-8cf00e4114c9",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"width": 1220,
"height": 320,
"content": "Send Daily Birthday Reminders from Google Contacts to Slack"
},
"typeVersion": 1
},
{
"id": "b1b04e75-e674-4389-a5ad-ebdcdfedca78",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
360
],
"parameters": {
"width": 1220,
"height": 100,
"content": "This workflow automates the process of retrieving your Google Contacts, filtering out the ones with birthdays on the current day, and sending a reminder to a designated Slack channel. By scheduling it to run daily at a specific time, the workflow ensures that you never miss a birthday reminder. Whether for team celebrations, personal reminders, or simply keeping track of important dates, this workflow can be easily customized to notify you or your team about upcoming birthdays directly in Slack."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "22eaeed6-6d9e-430b-8a1d-3848257cf3b2",
"connections": {
"If": {
"main": [
[
{
"node": "Slack",
"type": "main",
"index": 0
}
]
]
},
"Filter Contact ": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Google Contacts": {
"main": [
[
{
"node": "Filter Contact ",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Google Contacts",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
slackOAuth2Api
About this workflow
Send Daily Birthday Reminders from Google Contacts to Slack. Uses scheduleTrigger, googleContacts, slack, stickyNote. Scheduled trigger; 7 nodes.
Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →