This workflow follows the Google Sheets → HTTP Request 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": "Config Phone Workflow",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "2b091cb3-0f71-4f23-b4de-e5456b1e0a36",
"options": {
"responseMode": "responseNode"
}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
320,
240
],
"id": "phone-webhook",
"name": "Config Phone Webhook"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "check-phone-valid",
"leftValue": "={{ $json.body.phoneNumber }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
540,
240
],
"id": "validate-phone",
"name": "Validate Phone"
},
{
"parameters": {
"jsCode": "for (const item of $input.all()) {\n const configDate = item.json.body.configDate || \"\";\n const dateObj = new Date(configDate);\n item.json.formattedDate = dateObj.toLocaleDateString('ar-EG');\n item.json.formattedTime = dateObj.toLocaleTimeString('ar-EG', { hour: '2-digit', minute: '2-digit' });\n item.json.dateOnly = configDate.substring(0, 10);\n}\nreturn $input.all();"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
760,
140
],
"id": "format-date-phone",
"name": "Format Date"
},
{
"parameters": {
"mode": "raw",
"jsonOutput": "={\n \"message\": \"\u062a\u0648\u062c\u064a\u0647 \u062c\u062f\u064a\u062f \u2705 \u0627\u0644\u0637\u0627\u0644\u0628: {{ $('Config Phone Webhook').item.json.body.studentName }} \u0627\u0644\u0645\u0648\u0638\u0641: {{ $('Config Phone Webhook').item.json.body.employeeName }} \u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641: {{ $('Config Phone Webhook').item.json.body.phoneNumber }} \u0627\u0644\u062a\u0627\u0631\u064a\u062e: {{ $json.formattedDate }} \u0627\u0644\u0648\u0642\u062a: {{ $json.formattedTime }}\"\n}",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
980,
140
],
"id": "prepare-phone-message",
"name": "Prepare WhatsApp Message"
},
{
"parameters": {
"jsCode": "for (const item of $input.all()) {\n let val = item.json.message || \"\";\n val = val.replace(/ {4}/g, \"\\n\");\n item.json.formattedMessage = val;\n}\nreturn $input.all();"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1200,
140
],
"id": "format-phone-message",
"name": "Format Message"
},
{
"parameters": {
"method": "POST",
"url": "={{ $env.WASSENGER_API_URL }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Token",
"value": "={{ $env.WASSENGER_API_TOKEN }}"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "group",
"value": "={{ $env.WASSENGER_GROUP_ID }}"
},
{
"name": "message",
"value": "={{ $json.formattedMessage }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1420,
140
],
"id": "send-whatsapp-phone",
"name": "Send WhatsApp to Group"
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "={{ $env.GOOGLE_SHEETS_DOCUMENT_ID }}",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Config_Log",
"mode": "name"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"\u0627\u0644\u0637\u0627\u0644\u0628": "={{ $('Config Phone Webhook').item.json.body.studentName }}",
"\u0627\u0644\u0645\u0648\u0638\u0641": "={{ $('Config Phone Webhook').item.json.body.employeeName }}",
"\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641": "={{ $('Config Phone Webhook').item.json.body.phoneNumber }}",
"\u0627\u0644\u062a\u0627\u0631\u064a\u062e": "={{ $('Format Date').item.json.dateOnly }}",
"\u0648\u0642\u062a \u0627\u0644\u0625\u0646\u0634\u0627\u0621": "={{ new Date().toISOString() }}"
}
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
1640,
140
],
"id": "save-to-sheets",
"name": "Save to Google Sheets"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={ \"sendmessage\": \"true\", \"textdata\": \"\u062a\u0645 \u062d\u0641\u0638 \u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641 \u0628\u0646\u062c\u0627\u062d\" }",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
1860,
140
],
"id": "respond-phone-success",
"name": "Respond Success"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={ \"sendmessage\": \"errorvalue\", \"textdata\": \"\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\" }",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
760,
340
],
"id": "respond-phone-error",
"name": "Respond Error"
}
],
"connections": {
"Config Phone Webhook": {
"main": [
[
{
"node": "Validate Phone",
"type": "main",
"index": 0
}
]
]
},
"Validate Phone": {
"main": [
[
{
"node": "Format Date",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond Error",
"type": "main",
"index": 0
}
]
]
},
"Format Date": {
"main": [
[
{
"node": "Prepare WhatsApp Message",
"type": "main",
"index": 0
}
]
]
},
"Prepare WhatsApp Message": {
"main": [
[
{
"node": "Format Message",
"type": "main",
"index": 0
}
]
]
},
"Format Message": {
"main": [
[
{
"node": "Send WhatsApp to Group",
"type": "main",
"index": 0
}
]
]
},
"Send WhatsApp to Group": {
"main": [
[
{
"node": "Save to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Save to Google Sheets": {
"main": [
[
{
"node": "Respond Success",
"type": "main",
"index": 0
}
]
]
}
},
"meta": {
"templateCredsSetupCompleted": true
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Config Phone Workflow. Uses httpRequest, googleSheets. Webhook trigger; 9 nodes.
Source: https://github.com/mamoun-CS/codex-college/blob/c58549f895bb62e3b3a3c44c085e6718c6037742/n8n-workflows/config-phone-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.
[SANTOBET] FLUXO TODO - BACKUP. Uses googleSheets, httpRequest, googleSheetsTrigger. Webhook trigger; 57 nodes.
FLUXO DISPARO DATA E HORA. Uses itemLists, googleSheets, httpRequest. Webhook trigger; 48 nodes.
This workflow allows you to accept online payments via YooKassa and log both orders and transactions in Google Sheets — all without writing a single line of code. It supports full payment flow: produc
Transform your n8n instance management with this advanced automation system featuring artificial intelligence-driven workflow selection. This template provides comprehensive maintenance operations wit
Nexus_v6(ล่าสุดจริงๆ)ล่าสุดไกไก. Uses googleSheets, httpRequest. Webhook trigger; 41 nodes.