This workflow follows the Google Sheets → Outputparserstructured 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": "telegram to sheets",
"nodes": [
{
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"type": "n8n-nodes-base.telegramTrigger",
"typeVersion": 1.4,
"position": [
-400,
-32
],
"id": "YOUR TELEGRAM ID",
"name": "Telegram Trigger",
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=Extract the following fields from this message and return ONLY a valid JSON object \u2014 no explanation, no markdown, no code blocks (no ```json), no extra text before or after.\n\nRequired JSON structure:\n{\n \"name\": \"value\",\n \"phone\": \"value\",\n \"roll\": \"value\",\n \"date_of_birth\": \"value\",\n \"skills\": \"value\"\n}\n\nRules:\n- Extract exact values from the message below.\n- If a field is missing in the message, use \"\" (empty string).\n- Do not add, rename, or remove any keys.\n- Do not wrap the JSON inside another object or array.\n\nMessage:\n{{$json.message.text}}",
"hasOutputParser": true,
"batching": {}
},
"type": "YOU WANT ADD SOME TYPES",
"typeVersion": 1.9,
"position": [
-192,
-32
],
"id": "YOUR TELEGRAM ID",
"name": "CHOOSE LLM"
},
{
"parameters": {
"operation": "SELECT operation",
"documentId": {
"__rl": true,
"value": "SET THE VALUES",
"mode": "list",
"cachedResultName": "ADD YOUR GOOGLE SHEETS NAME",
"cachedResultUrl": "YOUR DRIVE LINK"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Sheet1",
"cachedResultUrl": "]"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"PHONE NUMBER": "={{$json.phone}}",
"ROLL NUMBER": "=\n{{$json.roll}}",
"SKILLS": "={{$json.skills}}",
"NAME ": "={{$json.name}}",
"DATE OF BIRTH": "={{$json.date_of_birth}}"
},
"matchingColumns": [],
"schema": [
{
"id": "NAME ",
"displayName": "NAME ",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "ROLL NUMBER",
"displayName": "ROLL NUMBER",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "PHONE NUMBER",
"displayName": "PHONE NUMBER",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "DATE OF BIRTH",
"displayName": "DATE OF BIRTH",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "SKILLS",
"displayName": "SKILLS",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
304,
-32
],
"id": "",
"name": "Append row in sheet",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsonSchemaExample": "{\n \"name\": \"Barani\",\n \"phone\": \"8489843167\",\n \"roll\": \"22ECE001\",\n \"date_of_birth\": \"14/02/2004\",\n \"skills\": \"Java, Python\"\n}"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.3,
"position": [
-48,
240
],
"id": "",
"name": "Structured Output Parser"
},
{
"parameters": {
"jsCode": "return items.map(item => {\n const data = item.json.output;\n return {\n json: {\n name: data.name || \"\",\n phone: data.phone || \"\",\n roll: data.roll || \"\",\n date_of_birth: data.date_of_birth || \"\",\n skills: data.skills || \"\"\n }\n };\n});"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
112,
-32
],
"id": "",
"name": "Code in JavaScript"
},
{
"parameters": {
"modelName": "",
"options": {}
},
"type": "",
"typeVersion": 1.1,
"position": [
-192,
160
],
"id": "",
"name": "",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Telegram Trigger": {
"main": [
[
{
"node": "Basic LLM Chain",
"type": "main",
"index": 0
}
]
]
},
"Basic LLM Chain": {
"main": [
[
{
"node": "",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "",
"type": "",
"index": 0
}
]
]
},
"Code in JavaScript": {
"main": [
[
{
"node": "",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "CHOOSE LLM",
"type": "CHHOSE TYPE",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"availableInMCP": false
},
"versionId": "YOUR ID",
"meta": {
"templateCredsSetupCompleted": true
},
"nodeGroups": [],
"id": "YOUR TELEGRAM ID",
"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.
googlePalmApigoogleSheetsOAuth2ApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
telegram to sheets. Uses telegramTrigger, YOU WANT ADD SOME TYPES, googleSheets, outputParserStructured. Event-driven trigger; 6 nodes.
Source: https://github.com/Baranidharan-Ece/DataBridge-n8n/blob/main/DataBridge-n8n.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.
Auto-create and publish AI social videos with Telegram, GPT-4 and Blotato. Uses httpRequest, stickyNote, telegramTrigger, telegram. Event-driven trigger; 42 nodes.
This workflow lets customers order and refill prescriptions via Telegram by extracting medicines from prescription images with Google Gemini, checking and updating inventory in Google Sheets, and send
This workflow handles customer order complaints submitted via Telegram by looking up order details in Google Sheets, using OpenAI to classify message sentiment, and routing each case to auto-approval,
This workflow handles COD order confirmation and abandoned-cart recovery by combining webhooks, Google Sheets logging, OpenAI message generation, and Telegram messaging with inline buttons, plus Slack
This workflow runs a Telegram restaurant ordering flow that uses OpenAI to parse orders and suggest an upsell, sends a Razorpay payment link, confirms paid orders via a Razorpay webhook, logs orders a