This workflow follows the Agent → Gmail Tool 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": "41-BOwner_Test",
"nodes": [
{
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"type": "n8n-nodes-base.telegramTrigger",
"typeVersion": 1.2,
"position": [
-544,
-96
],
"id": "9a3ce28d-ec0d-4866-b135-0d717125944c",
"name": "Telegram Trigger",
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"model": {
"__rl": true,
"value": "gpt-5-mini",
"mode": "list",
"cachedResultName": "gpt-5-mini"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
-544,
112
],
"id": "0c3749d8-bbb6-421a-8db7-614291f71701",
"name": "OpenAI Chat Model",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.message.text }}",
"options": {
"systemMessage": "=# Meeting Scheduler Bot (no employee availability check)\n\nCoordinate 1-to-1 meetings between the Business Owner and a single employee: collect any missing details, **(optionally) check the owner\u2019s calendar for conflicts**, confirm with the owner on Telegram, then **create the event** and notify the employee by email.\n\n## Context\n- User: Business Owner (Telegram). Employees sheet: **Role | Name | Number | Email**.\n- Tone: friendly; Language: English. Default duration: **1 hour**.\n- Timezone: use owner\u2019s; else **America/Denver** (PC).\n- Organizer: the Google Calendar node\u2019s account (owner email not added to attendees).\n\n## Responsibilities\n1) Parse request \u2192 if fields missing, ask **one compact question**. \n2) Get employee email from Google Sheets by **Name**. \n3) (If available) conflict-check owner calendar for `{start,end,timezone}`. \n4) Show final summary \u2192 wait **Confirm / Edit / Cancel**. \n5) After **Confirm**, create the calendar event and email the employee; send Telegram confirmation to the owner. \n6) Reset memory when done/cancelled.\n\n## Required Fields\nEmployee name; Date & time (with timezone); Duration (default 1h); Location (`office` or `video`); Title/agenda; Extra participants (optional emails). \nIf `video`, obtain the **meeting link from Google Calendar** (conference data) and include it.\n\n## Tools\n- **Employees Info (Sheets\u2014read):** lookup by Name \u2192 `{name,email,role,number}`. \n- **Owner Calendar (Calendar\u2014getMany events):** inputs `{start,end,timezone}`; conflict if `(event.start < end) AND (event.end > start)` and not cancelled. \n- **Create Event (Calendar\u2014create):** inputs `title,start,end,timezone,location/link,description,attendees:[employeeEmail,...extras]`; enable conference data; returns `eventLink` and `meetingLink`. \n- **Employee_Not (Gmail\u2014send):** send final meeting details to employee. \n- **Telegram (send message):** prompts/summaries/confirmation. \n- **Simple Memory:** session state with the memory key above.\n\n## Telegram Output (Markdown)\n"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 2.1,
"position": [
-320,
-96
],
"id": "eae04998-2618-4502-810f-13b29afdd9d3",
"name": "GPT-5"
},
{
"parameters": {
"calendar": {
"__rl": true,
"value": "mramdanelshamy@gmail.com",
"mode": "list",
"cachedResultName": "mramdanelshamy@gmail.com"
},
"start": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', ``, 'string') }}",
"end": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', ``, 'string') }}",
"additionalFields": {
"attendees": [
"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('attendees0_Attendees', ``, 'string') }}"
],
"description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', ``, 'string') }}",
"summary": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Summary', ``, 'string') }}"
}
},
"type": "n8n-nodes-base.googleCalendarTool",
"typeVersion": 1.3,
"position": [
144,
112
],
"id": "6a0af123-c5f3-44d8-b5c8-b5de1f619316",
"name": "Create an event in Google Calendar",
"credentials": {
"googleCalendarOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
"text": "={{ $json.output }}",
"additionalFields": {
"appendAttribution": false
}
},
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
128,
-112
],
"id": "75db8409-c546-408a-9b1c-3daded74962d",
"name": "Send a text message",
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "1Hj4lk11wLPATXC33WFrIhGWwCWRGqzQUyFcus3k_SHI",
"mode": "list",
"cachedResultName": "Database",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Hj4lk11wLPATXC33WFrIhGWwCWRGqzQUyFcus3k_SHI/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Sheet1",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Hj4lk11wLPATXC33WFrIhGWwCWRGqzQUyFcus3k_SHI/edit#gid=0"
},
"options": {}
},
"type": "n8n-nodes-base.googleSheetsTool",
"typeVersion": 4.6,
"position": [
-192,
144
],
"id": "12286178-bd0e-4e54-8818-ef2dd89b2f82",
"name": "Employees Info",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sendTo": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}",
"subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}",
"emailType": "text",
"message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
"options": {
"appendAttribution": false
}
},
"type": "n8n-nodes-base.gmailTool",
"typeVersion": 2.1,
"position": [
-32,
144
],
"id": "b0a3e8ef-37c5-41cc-ae78-171d8ac2d430",
"name": "Employee_Not",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
"contextWindowLength": 500
},
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
-368,
128
],
"id": "eee299f4-0e6e-474d-b0ed-10426a99c0f5",
"name": "Simple Memory"
}
],
"connections": {
"Telegram Trigger": {
"main": [
[
{
"node": "GPT-5",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "GPT-5",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Create an event in Google Calendar": {
"ai_tool": [
[
{
"node": "GPT-5",
"type": "ai_tool",
"index": 0
}
]
]
},
"GPT-5": {
"main": [
[
{
"node": "Send a text message",
"type": "main",
"index": 0
}
]
]
},
"Employees Info": {
"ai_tool": [
[
{
"node": "GPT-5",
"type": "ai_tool",
"index": 0
}
]
]
},
"Employee_Not": {
"ai_tool": [
[
{
"node": "GPT-5",
"type": "ai_tool",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "GPT-5",
"type": "ai_memory",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "45531081-e8e2-4e9f-80b6-aab6ff25ab5b",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "QFq0moOz2HXL9uiv",
"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.
gmailOAuth2googleCalendarOAuth2ApigoogleSheetsOAuth2ApiopenAiApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
41-BOwner_Test. Uses telegramTrigger, lmChatOpenAi, agent, googleCalendarTool. Event-driven trigger; 8 nodes.
Source: https://github.com/MohElshamy1994/n8n-course-Projetcs/blob/f37fce8a58c6e943ea6021f17a9768c72abc71fa/workflows/41_BusinessOwnerGPT5/41-BOwner_GPT5.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 a text or voice message to a Telegram bot and it books, reschedules, or cancels Google Calendar events for you. It resolves attendee names to email addresses, attaches a Meet link, and drafts a G
Meet Troy, your intelligent personal assistant that seamlessly manages your Google Calendar and Tasks through Telegram. This workflow combines AI-powered natural language processing with MCP (Model Co
This workflow turns a Telegram bot into a fitness and nutrition coach powered by Anthropic Claude, with voice-note transcription via OpenAI, user data stored in Google Sheets, and optional workout sch
How it works: This project teaches you to create a personal AI assistant named Jackie that operates through Telegram. Jackie can summarize unread emails, check calendar events, manage Google Tasks, an
This workflow turns a Telegram bot into a simple Notion To-Do assistant.