Postgres 및 Gallabox 개인화 메시지를 사용한 자동화된 WhatsApp 잠재 고객 육성
중급
이것은Lead Nurturing, Multimodal AI분야의자동화 워크플로우로, 11개의 노드를 포함합니다.주로 Code, Postgres, HttpRequest, SplitInBatches, ScheduleTrigger 등의 노드를 사용하며. Postgres와 Gallabox 개인 맞춤형 메시지를 활용한 자동화 WhatsApp 리드 육성
사전 요구사항
- •PostgreSQL 데이터베이스 연결 정보
- •대상 API의 인증 정보가 필요할 수 있음
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "807c58b937f3c75f8b242bc4ac5f455a51832cabd7bcdbecd9fdc3ba6179a8c9",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "84e5aa63-1375-4aa5-980a-b8d252d7535b",
"name": "SQL 쿼리 실행",
"type": "n8n-nodes-base.postgres",
"onError": "continueRegularOutput",
"position": [
4040,
520
],
"parameters": {
"query": "SELECT * FROM \"MQL\".mql_contacts\nWHERE (\n (count = 0)\n OR \n (count = 1 AND (NOW() AT TIME ZONE 'Asia/Kolkata') - webhook_time > INTERVAL '3 minutes')\n OR \n (count = 2 AND (NOW() AT TIME ZONE 'Asia/Kolkata') - webhook_time > INTERVAL '5 minutes')\n OR \n (count = 3 AND (NOW() AT TIME ZONE 'Asia/Kolkata') - webhook_time > INTERVAL '8 minutes')\n)\n AND\n disposition = 'unqualified'\n ;",
"options": {},
"operation": "executeQuery"
},
"retryOnFail": true,
"typeVersion": 2.6,
"alwaysOutputData": true
},
{
"id": "4c385ae2-6ffe-4f84-8647-cc347dd32ad4",
"name": "메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
4000,
680
],
"parameters": {
"width": 176,
"height": 80,
"content": "Gets unqualified leads which count 0,1,2,3 respective time"
},
"typeVersion": 1
},
{
"id": "fcdf84ff-57e4-4faa-adcb-c0e3d707e34c",
"name": "일정 트리거",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
3720,
520
],
"parameters": {
"rule": {
"interval": [
{
"field": "seconds"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "00e9e762-8a4a-46be-85e8-e3bbd86bfc07",
"name": "코드1",
"type": "n8n-nodes-base.code",
"position": [
4780,
540
],
"parameters": {
"jsCode": "// Define matrix with count mapping\nconst matrix = {\n nexus: {\n 0: \"🛵 sample1\",\n 1: \"⚡️ sample1\",\n 2: \"🔋 sample1\",\n 3: \"✨ sample1\"\n },\n magnus: {\n 0: \"🛵 sample2\",\n 1: \"⚡️ sample2\",\n 2: \"🔋 sample2\",\n 3: \"✨ sample2\"\n },\n reo: {\n 0: \"🛵 sample3\",\n 1: \"⚡️ sample3\",\n 2: \"🔋 sample3\",\n 3: \"✨sample3\"\n },\n general: {\n 0: \"🛵 sample4\",\n 1: \"⚡️sample4\",\n 2: \"🔋 sample4\",\n 3: \"✨ sample3\"\n }\n};\n\n// Get inputs from previous node\nconst model = $input.first().json.model// \"nexus\" / \"reo\" / \"magnus\" / \"general\"\nconst count = $input.first().json.count // 0 / 1 / 2 / 3\n\n// const model = \"general\"; \n// const count = 0; \n\n// Fetch matching content\nconst output = matrix[model]?.[count] || \"🛵 default\";\n\n// Return as output\nreturn [{ json: { model, count, output } }];"
},
"typeVersion": 2
},
{
"id": "8c5fad3d-46b3-427e-ab5a-205712394bd0",
"name": "항목 반복4",
"type": "n8n-nodes-base.splitInBatches",
"position": [
4520,
520
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "a7846d82-40fa-4f73-b22a-a100009d276c",
"name": "new_lead_4",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
5000,
540
],
"parameters": {
"url": "https://server.gallabox.com/devapi/messages/whatsapp",
"method": "POST",
"options": {
"response": {
"response": {
"fullResponse": true
}
}
},
"jsonBody": "=add here your copy api for whatsapp sending\n{\n \"channelId\": \"0\",\n \"channelType\": \"whatsapp\",\n \"recipient\": {\n \"name\": \"{{ $('Execute a SQL query').item.json.name }}\",\n \"phone\": \"91{{ $('Execute a SQL query').item.json.phone }}\"\n },\n \"whatsapp\": {\n \"type\": \"template\",\n \"template\": {\n \"templateName\": \"waba_qual_21july25\",\n \"bodyValues\": {\n \"Name\": \"{{ $('Execute a SQL query').item.json.name }}\",\n \"Details\": \"{{ $json.output }}\"\n },\n \"buttonValues\": [\n {\n \"index\": 0,\n \"sub_type\": \"quick_reply\",\n \"parameters\": {\n \"type\": \"payload\",\n \"payload\": \"Show Brochure\"\n }\n },\n {\n \"index\": 1,\n \"sub_type\": \"quick_reply\",\n \"parameters\": {\n \"type\": \"payload\",\n \"payload\": \"Get Showroom Location\"\n }\n },\n {\n \"index\": 2,\n \"sub_type\": \"quick_reply\",\n \"parameters\": {\n \"type\": \"payload\",\n \"payload\": \"Not Interested\"\n }\n }\n ]\n }\n }\n}",
"sendBody": true,
"jsonHeaders": "{\n \"apiKey\": \"\",\n \"apiSecret\": \"\"\n}",
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"specifyHeaders": "json",
"genericAuthType": "httpCustomAuth"
},
"typeVersion": 4.1
},
{
"id": "505800b6-fbe6-49bd-bd97-5cfb3a34da8c",
"name": "테이블 행 업데이트4",
"type": "n8n-nodes-base.postgres",
"position": [
5500,
540
],
"parameters": {
"table": {
"__rl": true,
"mode": "list",
"value": "mql_contacts",
"cachedResultName": "mql_contacts"
},
"schema": {
"__rl": true,
"mode": "list",
"value": "MQL",
"cachedResultName": "MQL"
},
"columns": {
"value": {
"count": "={{ $('Execute a SQL query').item.json.count + 1 }}",
"phone": "={{ $('Execute a SQL query').item.json.phone }}",
"pincode": 0,
"last_message_sent": "={{ $json.last_sent }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "created_at",
"type": "dateTime",
"display": true,
"removed": true,
"required": false,
"displayName": "created_at",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "updated_at",
"type": "dateTime",
"display": true,
"removed": true,
"required": false,
"displayName": "updated_at",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "phone",
"type": "number",
"display": true,
"removed": false,
"required": true,
"displayName": "phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "last_message_sent",
"type": "dateTime",
"display": true,
"required": false,
"displayName": "last_message_sent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "disposition",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "disposition",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "count",
"type": "number",
"display": true,
"removed": false,
"required": false,
"displayName": "count",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "interval",
"type": "number",
"display": true,
"removed": true,
"required": false,
"displayName": "interval",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "remarks",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "remarks",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "model",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "model",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "pincode",
"type": "number",
"display": true,
"removed": false,
"required": false,
"displayName": "pincode",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ABOS API status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ABOS API status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "webhook_time",
"type": "dateTime",
"display": true,
"removed": false,
"required": false,
"displayName": "webhook_time",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"phone"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"typeVersion": 2.6
},
{
"id": "f7729e9d-8f3b-477a-88fe-513be43997e4",
"name": "테이블 행 삽입4",
"type": "n8n-nodes-base.postgres",
"position": [
5280,
540
],
"parameters": {
"table": {
"__rl": true,
"mode": "list",
"value": "mql_logs",
"cachedResultName": "mql_logs"
},
"schema": {
"__rl": true,
"mode": "list",
"value": "MQL",
"cachedResultName": "MQL"
},
"columns": {
"value": {
"name": "={{ $('Execute a SQL query').item.json.name }}",
"phone": "={{ $('Execute a SQL query').item.json.phone }}",
"remarks": "Workflow 1",
"last_sent": "={{ $('Execute a SQL query').item.json.last_message_sent }}",
"mes_count": "={{ $('Execute a SQL query').item.json.count }}",
"message_id": "={{ $json.body.id }}",
"disposition": "={{ $('Execute a SQL query').item.json.disposition }}",
"gb_status_code": "={{ $json.statusCode }}",
"gb_status_message": "={{ $json.body.status }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "created_at",
"type": "dateTime",
"display": true,
"required": false,
"displayName": "created_at",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "updated_at",
"type": "dateTime",
"display": true,
"required": false,
"displayName": "updated_at",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "message_id",
"type": "string",
"display": true,
"required": false,
"displayName": "message_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "name",
"type": "string",
"display": true,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "phone",
"type": "number",
"display": true,
"required": true,
"displayName": "phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "disposition",
"type": "string",
"display": true,
"required": false,
"displayName": "disposition",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "mes_count",
"type": "number",
"display": true,
"required": false,
"displayName": "mes_count",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "last_sent",
"type": "dateTime",
"display": true,
"required": false,
"displayName": "last_sent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "gb_status_code",
"type": "number",
"display": true,
"required": false,
"displayName": "gb_status_code",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "gb_status_message",
"type": "string",
"display": true,
"required": false,
"displayName": "gb_status_message",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "message_status_meta",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "message_status_meta",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "cta",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "cta",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "remarks",
"type": "string",
"display": true,
"required": false,
"displayName": "remarks",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"typeVersion": 2.6
},
{
"id": "a6bb388a-17f3-4e24-94a4-47abf67dacf4",
"name": "메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
4640,
420
],
"parameters": {
"width": 216,
"height": 80,
"content": "Matrixed code to add unque message for pushing that to message with variable\n"
},
"typeVersion": 1
},
{
"id": "afd6a70f-80ae-4c3e-8b82-bd784dacfbe5",
"name": "메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
5000,
420
],
"parameters": {
"width": 150,
"height": 80,
"content": "Gallabox/whatsapp sending api"
},
"typeVersion": 1
},
{
"id": "13fe2f75-fe06-423a-9334-a4be0025624d",
"name": "메모3",
"type": "n8n-nodes-base.stickyNote",
"position": [
5380,
420
],
"parameters": {
"width": 150,
"height": 80,
"content": "Postgres connection to store data "
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"00e9e762-8a4a-46be-85e8-e3bbd86bfc07": {
"main": [
[
{
"node": "a7846d82-40fa-4f73-b22a-a100009d276c",
"type": "main",
"index": 0
}
]
]
},
"a7846d82-40fa-4f73-b22a-a100009d276c": {
"main": [
[
{
"node": "f7729e9d-8f3b-477a-88fe-513be43997e4",
"type": "main",
"index": 0
}
]
]
},
"8c5fad3d-46b3-427e-ab5a-205712394bd0": {
"main": [
[],
[
{
"node": "00e9e762-8a4a-46be-85e8-e3bbd86bfc07",
"type": "main",
"index": 0
}
]
]
},
"fcdf84ff-57e4-4faa-adcb-c0e3d707e34c": {
"main": [
[
{
"node": "84e5aa63-1375-4aa5-980a-b8d252d7535b",
"type": "main",
"index": 0
}
]
]
},
"84e5aa63-1375-4aa5-980a-b8d252d7535b": {
"main": [
[
{
"node": "8c5fad3d-46b3-427e-ab5a-205712394bd0",
"type": "main",
"index": 0
}
]
]
},
"f7729e9d-8f3b-477a-88fe-513be43997e4": {
"main": [
[
{
"node": "505800b6-fbe6-49bd-bd97-5cfb3a34da8c",
"type": "main",
"index": 0
}
]
]
},
"505800b6-fbe6-49bd-bd97-5cfb3a34da8c": {
"main": [
[
{
"node": "8c5fad3d-46b3-427e-ab5a-205712394bd0",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 리드 육성, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
완전히 맞춤화된 3통의 이메일 후속 작업이 포함된 GPT-4 기반 콜드 이메일 워크플로
GPT-4, Mailgun 및 Supabase를 사용한 개인 맞춤형 콜드 이메일 시퀀스 자동화
If
Set
Code
+
If
Set
Code
100 노드Paul
리드 육성
Airtable, OpenAI 및 Unipile을 사용한 자동화된 LinkedIn 잠재 고객 생성 및 개인 메시지 발송
Airtable, OpenAI 및 Unipile을 사용한 자동화된 LinkedIn 리드 생성 및 개인 메시지 발송
If
Set
Code
+
If
Set
Code
143 노드Ruben AI
리드 육성
Gallabox API 및 Supabase 드립 마케팅을 사용한 자동화된 WhatsApp 잠재 고객 육성
Gallabox API와 Supabase 드립 마케팅을 활용한 자동화 WhatsApp 리드 육성
If
Switch
Supabase
+
If
Switch
Supabase
34 노드Rahi
리드 육성
Rapiwa API를 사용한 Google 스프레드시트에서 자동 WhatsApp 환영 메시지 발송
Google 스프레드시트와 Rapiwa를 활용한 영업 리드 대상 자동화 WhatsApp 환영 메시지 발송
If
Code
Wait
+
If
Code
Wait
17 노드SpaGreen Creative
리드 육성
GPT-5와 fal.ai 이미지를 사용한 키워드에서 WordPress까지 자동화 SEO 블로그 프로세스
GPT-5 및 fal.ai 이미지를 사용한 키워드 to WordPress SEO 블로그 프로세스 자동화
Set
Code
Wait
+
Set
Code
Wait
96 노드Paul
콘텐츠 제작
Apollo.io와 Google Sheets를 사용한 자동화된 LinkedIn 잠재 고객 강화 파이프라인
Apollo.io와 Google Sheets를 사용한 자동화된 LinkedIn 리드 강화 파이프라인
If
Code
Wait
+
If
Code
Wait
33 노드Rahi Uppal
리드 생성
워크플로우 정보
난이도
중급
노드 수11
카테고리2
노드 유형6
저자
Rahi
@rahiuppalAI and Automation Consultant with over 1000 hours of experience building, deploying, and solving marketing and sales automation problems. I ship AI products faster by combining business acumen with AI & automation expertise and an engineering mindset. Connect with me on LinkedIn to chat.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유