This workflow follows the Datatable → Gmail 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": "Svyatobor_Bot",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "svyatobor-zayavki",
"authentication": "headerAuth",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
0,
0
],
"id": "f89cd343-948c-4ec5-8365-e050a57834c3",
"name": "Webhook",
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"dataTableId": {
"__rl": true,
"value": "2h0V1PCI00UqauF2",
"mode": "list",
"cachedResultName": "DezTechUg_Client",
"cachedResultUrl": "/projects/8chqbrkPuSShhKVQ/datatables/2h0V1PCI00UqauF2"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"name": "={{ $json.name }}",
"phone": "={{ $json.phone }}",
"email": "={{ $json.email }}",
"service": "={{ $json.service }}",
"ObjectType": "={{ $json.objectType }}",
"address": "={{ $json.address }}",
"preferredTime": "={{ $json.preferredTime }}",
"message": "={{ $json.message }}"
},
"matchingColumns": [],
"schema": [
{
"id": "service",
"displayName": "service",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "ObjectType",
"displayName": "ObjectType",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "name",
"displayName": "name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "email",
"displayName": "email",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "phone",
"displayName": "phone",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "address",
"displayName": "address",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "preferredTime",
"displayName": "preferredTime",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "message",
"displayName": "message",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "createdAt",
"displayName": "createdAt",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.dataTable",
"typeVersion": 1.1,
"position": [
560,
0
],
"id": "5e46022c-84fb-4488-9e60-c58acd7e9adb",
"name": "Insert row1"
},
{
"parameters": {
"chatId": "983656301",
"text": "=<b>\ud83d\udd14 \u041d\u041e\u0412\u0410\u042f \u0417\u0410\u042f\u0412\u041a\u0410 \u0421 \u0421\u0410\u0419\u0422\u0410 \u0421\u0412\u042f\u0422\u041e\u0411\u041e\u0420</b>\n\n\ud83d\udc64 <b>\u041a\u043b\u0438\u0435\u043d\u0442:</b> {{ $json.name }}\n\ud83d\udcde <b>\u0422\u0435\u043b\u0435\u0444\u043e\u043d:</b> <code>{{ $json.phone }}</code>\n\ud83d\udce7 <b>Email:</b> {{ $json.email }}\n\ud83d\udccd <b>\u0410\u0434\u0440\u0435\u0441:</b> {{ $json.address }}\n\n\ud83d\udee0 <b>\u0423\u0441\u043b\u0443\u0433\u0430:</b> {{ $json.service }}\n\ud83c\udfe0 <b>\u041e\u0431\u044a\u0435\u043a\u0442:</b> {{ $json.objectType }}\n\u23f0 <b>\u0412\u0440\u0435\u043c\u044f:</b> {{ $json.preferredTime }}\n\n\ud83d\udcac <b>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430:</b>\n<blockquote>{{ $json.message }}</blockquote>",
"additionalFields": {
"appendAttribution": false,
"parse_mode": "HTML"
}
},
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1056,
0
],
"id": "207d4930-8589-46a7-8fdb-6173e47b83e8",
"name": "[ALERT] Svyatobor_bot",
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sendTo": "svyatobor.23@yandex.ru",
"subject": "\u0417\u0430\u044f\u0432\u043a\u0430 \u0441 \u0441\u0430\u0439\u0442\u0430 \u0421\u0432\u044f\u0442\u043e\u0431\u043e\u0440",
"message": "=<div style=\"font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; border: 1px solid #e0e0e0; border-radius: 8px; overflow: hidden;\">\n \n <!-- \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a -->\n <div style=\"background-color: #4CAF50; color: white; padding: 20px; text-align: center;\">\n <h2 style=\"margin: 0;\">\ud83d\udfe2 \u041d\u043e\u0432\u0430\u044f \u0437\u0430\u044f\u0432\u043a\u0430 \u0441 \u0441\u0430\u0439\u0442\u0430 \u0421\u0432\u044f\u0442\u043e\u0431\u043e\u0440</h2>\n </div>\n\n <!-- \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -->\n <div style=\"padding: 20px; background-color: #f9f9f9;\">\n <table style=\"width: 100%; border-collapse: collapse;\">\n <tr>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee; width: 40%;\"><strong>\ud83d\udc64 \u041a\u043b\u0438\u0435\u043d\u0442:</strong></td>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\">{{ $json.name }}</td>\n </tr>\n <tr>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\"><strong>\ud83d\udcde \u0422\u0435\u043b\u0435\u0444\u043e\u043d:</strong></td>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\">\n <a href=\"tel:{{ $json.phone }}\" style=\"color: #4CAF50; text-decoration: none; font-weight: bold;\">{{ $json.phone }}</a>\n </td>\n </tr>\n <tr>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\"><strong>\ud83d\udce7 Email:</strong></td>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\">\n <a href=\"mailto:{{ $json.email }}\" style=\"color: #2196F3; text-decoration: none;\">{{ $json.email }}</a>\n </td>\n </tr>\n <tr>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\"><strong>\ud83d\udccd \u0410\u0434\u0440\u0435\u0441:</strong></td>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\">{{ $json.address }}</td>\n </tr>\n <tr>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\"><strong>\ud83c\udff7\ufe0f \u0423\u0441\u043b\u0443\u0433\u0430:</strong></td>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\">{{ $json.service }}</td>\n </tr>\n <tr>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\"><strong>\ud83c\udfe0 \u041e\u0431\u044a\u0435\u043a\u0442:</strong></td>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\">{{ $json.objectType }}</td>\n </tr>\n <tr>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\"><strong>\u23f0 \u0423\u0434\u043e\u0431\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f:</strong></td>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\">{{ $json.preferredTime }}</td>\n </tr>\n <tr>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\"><strong>\ud83d\udcac \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:</strong></td>\n <td style=\"padding: 10px; border-bottom: 1px solid #eee;\">{{ $json.message }}</td>\n </tr>\n </table>\n </div>\n</div>",
"options": {}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
1056,
208
],
"id": "da7d3421-8eb8-4ea8-85a3-b64be8b48fb2",
"name": "Send a message",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Insert row1",
"type": "main",
"index": 0
}
]
]
},
"Insert row1": {
"main": [
[
{
"node": "[ALERT] Svyatobor_bot",
"type": "main",
"index": 0
},
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"availableInMCP": false
},
"versionId": "d7de9571-d60e-4c04-8b08-1e2d6014d26b",
"id": "jV9rC_noG1NSMJQtymqQI",
"tags": []
}
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.
gmailOAuth2httpHeaderAuthtelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Svyatobor_Bot. Uses dataTable, telegram, gmail. Webhook trigger; 4 nodes.
Source: https://github.com/nrgy13/Svyatobor2025/blob/e89b7b1c69b61eeab90b3dba1e6f7f6d89e3afed/n8n/Svyatobor_Bot.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.
Send-Draft. Uses gmail, googleDrive, telegram. Webhook trigger; 6 nodes.
Automate WhatsApp communication for recruitment agencies with an interactive, structured customer experience. This workflow handles pricing inquiries, request submissions, tracking, complaints, and hu
Workflow1-2-3. Uses httpRequest, gmail, telegram, postgres. Webhook trigger; 34 nodes.
6-Utility-Certificate-Creator&Validation. Uses dataTable, @pdfgeneratorapi/n8n-nodes-pdf-generator-api, gmail, respondToWebhook. Webhook trigger; 19 nodes.
A complete workflow to create, send, and verify digital certificates fully automated with n8n.Perfect for courses, events, onboarding, internal training, or product education.