This workflow follows the Google Sheets → Telegram recipe pattern — see all workflows that pair these two integrations.
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 →
{
"name": "Birthday Reminder",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
0,
0
],
"id": "1c37f1f2-bb1c-4863-aa04-ee6c9e34a9af",
"name": "When clicking \u2018Execute workflow\u2019"
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "YOUR_GOOGLE_SHEET_ID",
"mode": "list",
"cachedResultName": "Sample BIrthday Data (n8n)",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "name"
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
208,
0
],
"id": "fb0b2de7-0983-4a75-bf57-90c771ca3492",
"name": "Get row(s) in sheet",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": false,
"leftValue": "",
"typeValidation": "loose",
"version": 3
},
"conditions": [
{
"id": "497f7f7b-84d4-40da-b78a-2af626afc9b8",
"leftValue": "={{ $json.Birthdate.slice(0,5) }}",
"rightValue": "={{ $now.format('dd-MM') }}",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"looseTypeValidation": true,
"options": {
"ignoreCase": true
}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
416,
0
],
"id": "76843a97-0ac2-42c6-9714-2b670e3f6093",
"name": "If"
},
{
"parameters": {
"chatId": "YOUR_TELEGRAM_CHAT_ID",
"text": "=\ud83c\udf89 Birthday Alert! \n\nIt's {{ $json.Name }}'s birthday today. \n\n\ud83c\udf82 \ud83d\udcc5 Birthday: {{ $json.Birthdate }} \n\nSend your wishes and make their day special! \ud83c\udf88",
"additionalFields": {}
},
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
624,
-96
],
"id": "baa002ba-0299-488d-ab0d-b26415d1506a",
"name": "Send a text message",
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {},
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
624,
96
],
"id": "12d06619-8424-429e-8ee5-42b72a57294c",
"name": "No Operation, do nothing"
},
{
"parameters": {
"content": "n8n birthday reminder tg bot:\n\nYOUR_TELEGRAM_BOT_TOKEN\n\n\nchatid: YOUR_TELEGRAM_CHAT_ID",
"height": 192,
"width": 288
},
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
256
],
"typeVersion": 1,
"id": "9f399b9d-95e1-45fe-a9cd-b9aa5c7f55fb",
"name": "Sticky Note"
}
],
"connections": {
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Get row(s) in sheet",
"type": "main",
"index": 0
}
]
]
},
"Get row(s) in sheet": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Send a text message",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"availableInMCP": false
},
"staticData": null,
"triggerCount": 0,
"meta": {
"templateCredsSetupCompleted": true
}
}
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.
googleSheetsOAuth2ApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Birthday Reminder. Uses googleSheets, telegram. Event-driven trigger; 6 nodes.
Source: https://github.com/DuttPanchal04/n8n-ai-automation-portfolio/blob/main/birthday-reminder/birthday-reminder-workflow.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Stickynote Workflow. Uses stickyNote, noOp, telegramTrigger, googleSheets. Event-driven trigger; 11 nodes.
BillBot. Uses telegram, telegramTrigger, httpRequest, googleSheets. Event-driven trigger; 7 nodes.
99_global_error_handler. Uses errorTrigger, telegram, googleSheets, stickyNote. Event-driven trigger; 4 nodes.
Deal-Finder. Uses executeWorkflowTrigger, googleSheets, perplexity, httpRequest. Event-driven trigger; 49 nodes.
checkProcess(old). Uses googleSheets, httpRequest, telegram, @n-octo-n/n8n-nodes-json-database. Event-driven trigger; 40 nodes.