This workflow follows the HTTP Request → Postgres 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 →
{
"updatedAt": "2026-04-04T14:22:30.528Z",
"createdAt": "2026-04-02T17:12:40.946Z",
"id": "VGi4OAdRy3rOP2e9",
"name": "WF6-DAILY: Daily Interview Briefing",
"description": null,
"active": true,
"isArchived": false,
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "30 7 * * *"
}
]
}
},
"id": "cron-730am",
"name": "Daily 7:30 AM",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
0
]
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT i.id AS interview_id, i.company_name, i.role_title, i.interview_track, i.interview_format, i.interview_stage, i.interview_date, i.interview_start_time, i.interview_end_time, i.interview_duration_minutes, i.location_type, i.physical_address, i.video_platform, i.video_link, i.interviewer_names, i.interviewer_titles, i.what_to_prepare, i.dress_code, i.status, pb.full_brief_text IS NOT NULL AS has_prep_brief, pb.overall_quality_score AS prep_quality, tp.recommended_mode AS travel_mode, tp.recommended_departure_time AS departure_time, tp.estimated_duration_minutes AS travel_minutes, tp.estimated_cost_gbp AS travel_cost FROM interviews i LEFT JOIN prep_briefs pb ON pb.interview_id = i.id LEFT JOIN travel_plans tp ON tp.interview_id = i.id WHERE tenant_id = '{{ $('Loop Over Tenants').item.json.tenant_id }}' AND i.interview_date IN (CURRENT_DATE, CURRENT_DATE + 1) AND i.status NOT IN ('cancelled_by_employer', 'cancelled_by_candidate', 'no_show') ORDER BY i.interview_date, i.interview_start_time;",
"options": {}
},
"id": "get-interviews",
"name": "Get Today & Tomorrow Interviews",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.5,
"position": [
620,
0
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "has-interviews",
"leftValue": "={{ $json.interview_id }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "isNotEmpty"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "check-any",
"name": "Any Interviews?",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
840,
0
]
},
{
"parameters": {
"jsCode": "const items = $input.all();\nconst tenantId = items[0]?.json?.tenant_id || '';\nconst today = new Date().toISOString().split('T')[0];\nconst tomorrow = new Date(Date.now() + 86400000).toISOString().split('T')[0];\n\nconst todayInterviews = items.filter(i => i.json.interview_date === today || String(i.json.interview_date).startsWith(today));\nconst tomorrowInterviews = items.filter(i => i.json.interview_date === tomorrow || String(i.json.interview_date).startsWith(tomorrow));\n\nfunction formatInterview(iv) {\n const j = iv.json;\n let html = `<div style=\"border:1px solid #ddd;border-radius:8px;padding:16px;margin:12px 0;background:#fafafa;\">`;\n html += `<h3 style=\"margin:0 0 8px 0;color:#1a5276;\">${j.company_name} — ${j.role_title}</h3>`;\n html += `<table style=\"width:100%;font-size:14px;\">`;\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;width:140px;\">Time</td><td>${j.interview_start_time || 'TBC'} - ${j.interview_end_time || 'TBC'} (${j.interview_duration_minutes || 60} min)</td></tr>`;\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Format</td><td>${(j.interview_format || '').replace(/_/g, ' ')} | ${j.interview_track}</td></tr>`;\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Stage</td><td>${(j.interview_stage || 'Not specified').replace(/_/g, ' ')}</td></tr>`;\n \n if (j.location_type === 'remote' || j.video_platform) {\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Platform</td><td>${j.video_platform || 'Video'} ${j.video_link ? '— <a href=\"' + j.video_link + '\">Join Link</a>' : ''}</td></tr>`;\n }\n if (j.physical_address) {\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Location</td><td>${j.physical_address}</td></tr>`;\n }\n if (j.interviewer_names && j.interviewer_names.length > 0) {\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Interviewers</td><td>${j.interviewer_names.join(', ')}</td></tr>`;\n }\n if (j.travel_mode) {\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Travel</td><td>${j.travel_mode} — depart ${j.departure_time || 'TBC'} (${j.travel_minutes} min, ~GBP ${j.travel_cost || 'N/A'})</td></tr>`;\n }\n if (j.what_to_prepare) {\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Prepare</td><td>${j.what_to_prepare}</td></tr>`;\n }\n if (j.dress_code) {\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Dress Code</td><td>${j.dress_code}</td></tr>`;\n }\n \n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Prep Brief</td><td>${j.has_prep_brief ? '✅ Ready' : '⚠️ Not yet generated'}</td></tr>`;\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Status</td><td>${j.status}</td></tr>`;\n html += `</table></div>`;\n return html;\n}\n\nlet emailHtml = `<div style=\"font-family:Arial,sans-serif;max-width:650px;\">`;\n\n// Today section\nif (todayInterviews.length > 0) {\n emailHtml += `<h2 style=\"color:#1a5276;border-bottom:2px solid #1a5276;padding-bottom:8px;\">Today's Interviews (${todayInterviews.length})</h2>`;\n todayInterviews.forEach(iv => { emailHtml += formatInterview(iv); });\n} else {\n emailHtml += `<h2 style=\"color:#1a5276;\">No interviews today</h2>`;\n}\n\n// Tomorrow section\nif (tomorrowInterviews.length > 0) {\n emailHtml += `<h2 style=\"color:#2e86c1;border-bottom:2px solid #2e86c1;padding-bottom:8px;margin-top:24px;\">Tomorrow's Interviews (${tomorrowInterviews.length})</h2>`;\n tomorrowInterviews.forEach(iv => { emailHtml += formatInterview(iv); });\n}\n\n// Quick reminders\nemailHtml += `<div style=\"margin-top:24px;padding:16px;background:#eaf2f8;border-radius:8px;\">`;\nemailHtml += `<h3 style=\"margin:0 0 8px 0;\">Quick Reminders</h3>`;\nemailHtml += `<ul style=\"margin:0;padding-left:20px;\">`;\nemailHtml += `<li>Test video/audio 15 minutes before remote interviews</li>`;\nemailHtml += `<li>Have a glass of water and your notes ready</li>`;\nemailHtml += `<li>Review your prep brief one final time</li>`;\nemailHtml += `<li>Prepare 2-3 questions to ask at the end</li>`;\nemailHtml += `</ul></div>`;\n\nemailHtml += `<hr style=\"margin-top:24px;\"><p style=\"font-size:12px;color:#888;\">Selvi Job App — Module 6: Interview Scheduling & Preparation</p></div>`;\n\nconst totalToday = todayInterviews.length;\nconst totalTomorrow = tomorrowInterviews.length;\nlet subject = '';\nif (totalToday > 0 && totalTomorrow > 0) {\n subject = `Today: ${totalToday} interview${totalToday > 1 ? 's' : ''} | Tomorrow: ${totalTomorrow} interview${totalTomorrow > 1 ? 's' : ''}`;\n} else if (totalToday > 0) {\n subject = `Today's Interviews: ${totalToday} scheduled`;\n} else {\n subject = `Tomorrow's Interviews: ${totalTomorrow} scheduled`;\n}\n\nreturn {\n subject: subject,\n emailHtml: emailHtml,\n totalToday: totalToday,\n totalTomorrow: totalTomorrow\n};"
},
"id": "build-email",
"name": "Build Briefing Email",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1060,
0
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.resend.com/emails",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer re_PMdG3JAg_Er4o7VYY74tek5WzMqmqBJ15"
},
{
"name": "Content-type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"from\": \"Selvi Job App <jobs@apiloom.io>\",\n \"to\": [\"{{ $('Loop Over Tenants').item.json.notification_email }}\"],\n \"subject\": {{ JSON.stringify($json.subject) }},\n \"html\": {{ JSON.stringify($json.emailHtml) }}\n}",
"options": {
"timeout": 30000
}
},
"id": "send-briefing",
"name": "Send Daily Briefing",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1280,
0
]
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT id AS tenant_id, name AS tenant_name, notification_email, candidate_profile, search_config, email_config FROM tenants WHERE is_active = true",
"options": {}
},
"id": "fetch_tenants",
"name": "Fetch Active Tenants",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.5,
"position": [
250,
0
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"batchSize": 1,
"options": {}
},
"id": "loop_tenants",
"name": "Loop Over Tenants",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
500,
0
]
}
],
"connections": {
"Daily 7:30 AM": {
"main": [
[
{
"node": "Fetch Active Tenants",
"type": "main",
"index": 0
}
]
]
},
"Get Today & Tomorrow Interviews": {
"main": [
[
{
"node": "Any Interviews?",
"type": "main",
"index": 0
}
]
]
},
"Any Interviews?": {
"main": [
[
{
"node": "Build Briefing Email",
"type": "main",
"index": 0
}
],
[]
]
},
"Build Briefing Email": {
"main": [
[
{
"node": "Send Daily Briefing",
"type": "main",
"index": 0
}
]
]
},
"Fetch Active Tenants": {
"main": [
[
{
"node": "Loop Over Tenants",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Tenants": {
"main": [
[],
[
{
"node": "Get Today & Tomorrow Interviews",
"type": "main",
"index": 0
}
]
]
},
"Send Daily Briefing": {
"main": [
[
{
"node": "Loop Over Tenants",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"callerPolicy": "workflowsFromSameOwner",
"availableInMCP": true
},
"staticData": {
"node:Daily 7:30 AM": {
"recurrenceRules": []
}
},
"meta": null,
"versionId": "d0a8ff1d-0ed5-4aef-9c7b-6bb5c6af9da3",
"activeVersionId": "d0a8ff1d-0ed5-4aef-9c7b-6bb5c6af9da3",
"versionCounter": 7,
"triggerCount": 1,
"shared": [
{
"updatedAt": "2026-04-02T17:12:40.946Z",
"createdAt": "2026-04-02T17:12:40.946Z",
"role": "workflow:owner",
"workflowId": "VGi4OAdRy3rOP2e9",
"projectId": "IrY2W58JPTTW41XY",
"project": {
"updatedAt": "2026-03-29T09:57:50.698Z",
"createdAt": "2026-03-29T09:50:40.962Z",
"id": "IrY2W58JPTTW41XY",
"name": "Venkatesan Ramachandran <venkat.fts@gmail.com>",
"type": "personal",
"icon": null,
"description": null,
"creatorId": "509e77ae-43b3-42df-bd9d-6e2a7aa26079"
}
}
],
"tags": [],
"activeVersion": {
"updatedAt": "2026-04-02T17:12:40.953Z",
"createdAt": "2026-04-02T17:12:40.953Z",
"versionId": "d0a8ff1d-0ed5-4aef-9c7b-6bb5c6af9da3",
"workflowId": "VGi4OAdRy3rOP2e9",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "30 7 * * *"
}
]
}
},
"id": "cron-730am",
"name": "Daily 7:30 AM",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
0
]
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT i.id AS interview_id, i.company_name, i.role_title, i.interview_track, i.interview_format, i.interview_stage, i.interview_date, i.interview_start_time, i.interview_end_time, i.interview_duration_minutes, i.location_type, i.physical_address, i.video_platform, i.video_link, i.interviewer_names, i.interviewer_titles, i.what_to_prepare, i.dress_code, i.status, pb.full_brief_text IS NOT NULL AS has_prep_brief, pb.overall_quality_score AS prep_quality, tp.recommended_mode AS travel_mode, tp.recommended_departure_time AS departure_time, tp.estimated_duration_minutes AS travel_minutes, tp.estimated_cost_gbp AS travel_cost FROM interviews i LEFT JOIN prep_briefs pb ON pb.interview_id = i.id LEFT JOIN travel_plans tp ON tp.interview_id = i.id WHERE i.interview_date IN (CURRENT_DATE, CURRENT_DATE + 1) AND i.status NOT IN ('cancelled_by_employer', 'cancelled_by_candidate', 'no_show') ORDER BY i.interview_date, i.interview_start_time;",
"options": {}
},
"id": "get-interviews",
"name": "Get Today & Tomorrow Interviews",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.5,
"position": [
220,
0
],
"credentials": {
"postgres": {
"id": "uAbCv6KI1KdUiMtX",
"name": "Selvi Jobs DB"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "has-interviews",
"leftValue": "={{ $json.interview_id }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "isNotEmpty"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "check-any",
"name": "Any Interviews?",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
440,
0
]
},
{
"parameters": {
"jsCode": "const items = $input.all();\nconst today = new Date().toISOString().split('T')[0];\nconst tomorrow = new Date(Date.now() + 86400000).toISOString().split('T')[0];\n\nconst todayInterviews = items.filter(i => i.json.interview_date === today || String(i.json.interview_date).startsWith(today));\nconst tomorrowInterviews = items.filter(i => i.json.interview_date === tomorrow || String(i.json.interview_date).startsWith(tomorrow));\n\nfunction formatInterview(iv) {\n const j = iv.json;\n let html = `<div style=\"border:1px solid #ddd;border-radius:8px;padding:16px;margin:12px 0;background:#fafafa;\">`;\n html += `<h3 style=\"margin:0 0 8px 0;color:#1a5276;\">${j.company_name} — ${j.role_title}</h3>`;\n html += `<table style=\"width:100%;font-size:14px;\">`;\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;width:140px;\">Time</td><td>${j.interview_start_time || 'TBC'} - ${j.interview_end_time || 'TBC'} (${j.interview_duration_minutes || 60} min)</td></tr>`;\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Format</td><td>${(j.interview_format || '').replace(/_/g, ' ')} | ${j.interview_track}</td></tr>`;\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Stage</td><td>${(j.interview_stage || 'Not specified').replace(/_/g, ' ')}</td></tr>`;\n \n if (j.location_type === 'remote' || j.video_platform) {\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Platform</td><td>${j.video_platform || 'Video'} ${j.video_link ? '— <a href=\"' + j.video_link + '\">Join Link</a>' : ''}</td></tr>`;\n }\n if (j.physical_address) {\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Location</td><td>${j.physical_address}</td></tr>`;\n }\n if (j.interviewer_names && j.interviewer_names.length > 0) {\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Interviewers</td><td>${j.interviewer_names.join(', ')}</td></tr>`;\n }\n if (j.travel_mode) {\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Travel</td><td>${j.travel_mode} — depart ${j.departure_time || 'TBC'} (${j.travel_minutes} min, ~GBP ${j.travel_cost || 'N/A'})</td></tr>`;\n }\n if (j.what_to_prepare) {\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Prepare</td><td>${j.what_to_prepare}</td></tr>`;\n }\n if (j.dress_code) {\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Dress Code</td><td>${j.dress_code}</td></tr>`;\n }\n \n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Prep Brief</td><td>${j.has_prep_brief ? '✅ Ready' : '⚠️ Not yet generated'}</td></tr>`;\n html += `<tr><td style=\"padding:4px 8px;font-weight:bold;\">Status</td><td>${j.status}</td></tr>`;\n html += `</table></div>`;\n return html;\n}\n\nlet emailHtml = `<div style=\"font-family:Arial,sans-serif;max-width:650px;\">`;\n\n// Today section\nif (todayInterviews.length > 0) {\n emailHtml += `<h2 style=\"color:#1a5276;border-bottom:2px solid #1a5276;padding-bottom:8px;\">Today's Interviews (${todayInterviews.length})</h2>`;\n todayInterviews.forEach(iv => { emailHtml += formatInterview(iv); });\n} else {\n emailHtml += `<h2 style=\"color:#1a5276;\">No interviews today</h2>`;\n}\n\n// Tomorrow section\nif (tomorrowInterviews.length > 0) {\n emailHtml += `<h2 style=\"color:#2e86c1;border-bottom:2px solid #2e86c1;padding-bottom:8px;margin-top:24px;\">Tomorrow's Interviews (${tomorrowInterviews.length})</h2>`;\n tomorrowInterviews.forEach(iv => { emailHtml += formatInterview(iv); });\n}\n\n// Quick reminders\nemailHtml += `<div style=\"margin-top:24px;padding:16px;background:#eaf2f8;border-radius:8px;\">`;\nemailHtml += `<h3 style=\"margin:0 0 8px 0;\">Quick Reminders</h3>`;\nemailHtml += `<ul style=\"margin:0;padding-left:20px;\">`;\nemailHtml += `<li>Test video/audio 15 minutes before remote interviews</li>`;\nemailHtml += `<li>Have a glass of water and your notes ready</li>`;\nemailHtml += `<li>Review your prep brief one final time</li>`;\nemailHtml += `<li>Prepare 2-3 questions to ask at the end</li>`;\nemailHtml += `</ul></div>`;\n\nemailHtml += `<hr style=\"margin-top:24px;\"><p style=\"font-size:12px;color:#888;\">Selvi Job App — Module 6: Interview Scheduling & Preparation</p></div>`;\n\nconst totalToday = todayInterviews.length;\nconst totalTomorrow = tomorrowInterviews.length;\nlet subject = '';\nif (totalToday > 0 && totalTomorrow > 0) {\n subject = `Today: ${totalToday} interview${totalToday > 1 ? 's' : ''} | Tomorrow: ${totalTomorrow} interview${totalTomorrow > 1 ? 's' : ''}`;\n} else if (totalToday > 0) {\n subject = `Today's Interviews: ${totalToday} scheduled`;\n} else {\n subject = `Tomorrow's Interviews: ${totalTomorrow} scheduled`;\n}\n\nreturn {\n subject: subject,\n emailHtml: emailHtml,\n totalToday: totalToday,\n totalTomorrow: totalTomorrow\n};"
},
"id": "build-email",
"name": "Build Briefing Email",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
660,
0
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.resend.com/emails",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer re_PMdG3JAg_Er4o7VYY74tek5WzMqmqBJ15"
},
{
"name": "Content-type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"from\": \"Selvi Job App <jobs@apiloom.io>\",\n \"to\": [\"chellamma.uk@gmail.com\"],\n \"subject\": {{ JSON.stringify($json.subject) }},\n \"html\": {{ JSON.stringify($json.emailHtml) }}\n}",
"options": {
"timeout": 30000
}
},
"id": "send-briefing",
"name": "Send Daily Briefing",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
880,
0
]
}
],
"connections": {
"Daily 7:30 AM": {
"main": [
[
{
"node": "Get Today & Tomorrow Interviews",
"type": "main",
"index": 0
}
]
]
},
"Get Today & Tomorrow Interviews": {
"main": [
[
{
"node": "Any Interviews?",
"type": "main",
"index": 0
}
]
]
},
"Any Interviews?": {
"main": [
[
{
"node": "Build Briefing Email",
"type": "main",
"index": 0
}
],
[]
]
},
"Build Briefing Email": {
"main": [
[
{
"node": "Send Daily Briefing",
"type": "main",
"index": 0
}
]
]
}
},
"authors": "Venkatesan Ramachandran",
"name": null,
"description": null,
"autosaved": false,
"workflowPublishHistory": [
{
"createdAt": "2026-04-02T17:14:31.289Z",
"id": 27,
"workflowId": "VGi4OAdRy3rOP2e9",
"versionId": "d0a8ff1d-0ed5-4aef-9c7b-6bb5c6af9da3",
"event": "activated",
"userId": "509e77ae-43b3-42df-bd9d-6e2a7aa26079"
},
{
"createdAt": "2026-04-04T14:22:30.567Z",
"id": 108,
"workflowId": "VGi4OAdRy3rOP2e9",
"versionId": "d0a8ff1d-0ed5-4aef-9c7b-6bb5c6af9da3",
"event": "deactivated",
"userId": "509e77ae-43b3-42df-bd9d-6e2a7aa26079"
},
{
"createdAt": "2026-04-04T14:22:30.590Z",
"id": 109,
"workflowId": "VGi4OAdRy3rOP2e9",
"versionId": "d0a8ff1d-0ed5-4aef-9c7b-6bb5c6af9da3",
"event": "activated",
"userId": "509e77ae-43b3-42df-bd9d-6e2a7aa26079"
}
]
}
}
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.
postgres
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
WF6-DAILY: Daily Interview Briefing. Uses postgres, httpRequest. Scheduled trigger; 7 nodes.
Source: https://github.com/cto-venkat/selvi-job-app/blob/499ca24d9c9382b5f5561a096360564965fb4b8e/workflows/wf6-daily-mt.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.
Disparador 1.8. Uses itemLists, postgres, emailSend, httpRequest. Scheduled trigger; 85 nodes.
공유회_알림톡_크론. Uses postgres, httpRequest, n8n-nodes-solapi. Scheduled trigger; 39 nodes.
QuepasaAutomatic. Uses postgres, postgresTrigger, httpRequest. Scheduled trigger; 39 nodes.
QuepasaAutomatic. Uses postgres, postgresTrigger, httpRequest. Scheduled trigger; 39 nodes.
QuepasaAutomatic. Uses postgres, postgresTrigger, httpRequest. Scheduled trigger; 39 nodes.