This workflow corresponds to n8n.io template #8362 — we link there as the canonical source.
This workflow follows the Postgres → Slack 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": "25 - Automated Daily Signup Summary",
"nodes": [
{
"id": "9bcb46ca-0694-41ee-b700-1dfa22bdb478",
"name": "Database Config Instructions",
"type": "n8n-nodes-base.stickyNote",
"position": [
-180,
200
],
"parameters": {
"color": 4,
"width": 440,
"height": 580,
"content": "## 1\ufe0f\u20e3 Trigger & Data Fetching\n\n\u23f0 Daily Report Trigger runs every day at 9:00 AM.\n\n*It triggers \ud83d\uddc4\ufe0f Fetch Signup Count, which queries the customers table in PostgreSQL to count the number of new signups within the last 24 hours using the created_at timestamp column.*"
},
"typeVersion": 1
},
{
"id": "bf6257e2-a159-42d2-9826-68bf692337b0",
"name": "Messaging Config Instructions",
"type": "n8n-nodes-base.stickyNote",
"position": [
280,
120
],
"parameters": {
"color": 5,
"width": 260,
"height": 660,
"content": "## 2\ufe0f\u20e3 Report Preparation\n\n\ud83d\udcdd Prepare Report Message formats the results into a ready-to-send message.\n\n*It includes the signup count, report date, and a summary message:\n\ud83d\udcca Daily Signup Report \u2013 New signups in last 24h: X*\n"
},
"typeVersion": 1
},
{
"id": "1a8bf7d7-18e7-4b08-947e-6bc189d5a2f5",
"name": "\u23f0 Daily Report Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-120,
420
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "bf7c0220-7aa2-40b0-b12d-3e4756f07130",
"name": "\ud83d\uddc4\ufe0f Fetch Signup Count",
"type": "n8n-nodes-base.postgres",
"position": [
100,
420
],
"parameters": {
"query": "-- EDIT: Replace 'users' with your table name and 'created_at' with your timestamp column\nSELECT COUNT(*) as signup_count \nFROM customers \nWHERE created_at >= NOW() - INTERVAL '24 HOURS';",
"options": {},
"operation": "executeQuery"
},
"typeVersion": 2.4
},
{
"id": "998a13b4-e761-47e2-bfac-8b65a3a47dfa",
"name": "\ud83d\udcdd Prepare Report Message",
"type": "n8n-nodes-base.set",
"position": [
360,
420
],
"parameters": {
"values": {
"string": [
{
"name": "signup_count",
"value": "={{ $json.signup_count || 0 }}"
},
{
"name": "report_date",
"value": "={{ new Date().toLocaleDateString('en-US', { timeZone: 'UTC', year: 'numeric', month: 'long', day: 'numeric' }) }}"
},
{
"name": "message_text",
"value": "=\ud83d\udcca Daily Signup Report\nNew signups in the last 24h: {{ $json.signup_count || 0 }}"
}
]
},
"options": {}
},
"typeVersion": 2
},
{
"id": "8f165983-aa33-489d-bc3c-827b626cd531",
"name": "\ud83d\udcac Post to Slack",
"type": "n8n-nodes-base.slack",
"position": [
660,
220
],
"parameters": {
"text": "={{ $node['\ud83d\udcdd Prepare Report Message'].json.message_text }}",
"channel": "#general",
"attachments": [],
"otherOptions": {}
},
"typeVersion": 1
},
{
"id": "f4130a5a-0473-4e7e-b5cc-00dc33c8775d",
"name": "\ud83d\udce2 Send to Teams",
"type": "n8n-nodes-base.microsoftTeams",
"position": [
660,
420
],
"parameters": {
"name": "YOUR_CHANNEL_NAME",
"teamId": "YOUR_TEAM_ID",
"options": {}
},
"typeVersion": 1
},
{
"id": "13930dd0-dd61-4fb9-857b-f2ca484a1c8e",
"name": "\ud83d\udcf2 Send to Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
660,
620
],
"parameters": {
"text": "={{ $node['\ud83d\udcdd Prepare Report Message'].json.message_text }}",
"chatId": "YOUR_TELEGRAM_CHAT_ID",
"additionalFields": {
"appendAttribution": false
}
},
"typeVersion": 1.1
},
{
"id": "7447cbfd-709d-4acc-9f66-68f2914edd21",
"name": "Messaging Config Instructions1",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
-40
],
"parameters": {
"color": 3,
"width": 360,
"height": 820,
"content": "## 3\ufe0f\u20e3 Multi-Channel Notification Delivery\n\n*The prepared message is sent to multiple platforms in parallel:\n\n\ud83d\udcac Post to Slack\n\ud83d\udce2 Send to Teams\n\ud83d\udcf2 Send to Telegram"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"connections": {
"\u23f0 Daily Report Trigger": {
"main": [
[
{
"node": "\ud83d\uddc4\ufe0f Fetch Signup Count",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\uddc4\ufe0f Fetch Signup Count": {
"main": [
[
{
"node": "\ud83d\udcdd Prepare Report Message",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udcdd Prepare Report Message": {
"main": [
[
{
"node": "\ud83d\udcac Post to Slack",
"type": "main",
"index": 0
},
{
"node": "\ud83d\udce2 Send to Teams",
"type": "main",
"index": 0
},
{
"node": "\ud83d\udcf2 Send to Telegram",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automatically pulls daily signup stats from your PostgreSQL database and shares them with your team across multiple channels. Every morning, it counts the number of new signups in the last 24 hours, formats the results into a concise report, and posts it to Slack,…
Source: https://n8n.io/workflows/8362/ — 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.
This n8n workflow automates task creation and scheduled reminders for users via a Telegram bot, ensuring timely notifications across multiple channels like email and Slack. It streamlines task managem
🌸 Affirmation Sender + Weekly Gratitude Digest v2
Any external system triggers a reminder via webhook with a tenant token — the workflow validates the token, fetches the tenant's channel config and message template from PostgreSQL, renders the messag
This workflow automatically monitors PostgreSQL database data quality and detects structural or statistical anomalies before they impact analytics, pipelines, or applications.
Automatically monitor multiple websites every 5 minutes, log downtime, notify your team instantly via multiple channels, and track uptime/downtime in a Google Sheet—without relying on expensive monito