Telegram + Airtable: an assistant that remembers
Your “assistant” probably doesn’t remember anything. You tell it a preference, a decision, or a task… and two days later you’re repeating yourself in a different app, hunting through chat history, or guessing what you meant.
This is the kind of mess that slows down marketers trying to move fast, and it drives agency owners nuts when context gets scattered across clients. Even a busy founder feels it. A Telegram Airtable assistant turns those one-off chats into something reliable, with memory you can actually use.
This workflow gives you a Telegram-based AI agent that remembers key facts in Airtable, transcribes voice notes, and pulls answers from Gmail, Google Calendar, Notion, and web search. You’ll see what it automates, what results to expect, and what you need to run it smoothly.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Telegram + Airtable: an assistant that remembers
flowchart LR
subgraph sg0["Telegram Incoming Hook Flow"]
direction LR
n0@{ icon: "mdi:memory", form: "rounded", label: "Brief Memory Buffer", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Store Memory Record", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Retrieve Memory Entries"]
n3@{ icon: "mdi:cog", form: "rounded", label: "Compile Memory List", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Combine Inputs"]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Incoming Hook"]
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send Telegram Reply"]
n7@{ icon: "mdi:wrench", form: "rounded", label: "Web Search via SerpAPI", pos: "b", h: 48 }
n8@{ icon: "mdi:location-exit", form: "rounded", label: "Fetch Calendar Events", pos: "b", h: 48 }
n9@{ icon: "mdi:location-exit", form: "rounded", label: "Create Calendar Event", pos: "b", h: 48 }
n10@{ icon: "mdi:location-exit", form: "rounded", label: "Modify Calendar Event", pos: "b", h: 48 }
n11@{ icon: "mdi:location-exit", form: "rounded", label: "Remove Calendar Event", pos: "b", h: 48 }
n12@{ icon: "mdi:message-outline", form: "rounded", label: "Retrieve Gmail Threads", pos: "b", h: 48 }
n13@{ icon: "mdi:message-outline", form: "rounded", label: "Fetch Gmail Message", pos: "b", h: 48 }
n14@{ icon: "mdi:brain", form: "rounded", label: "Grok Chat Model", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Text or Voice Check", pos: "b", h: 48 }
n16@{ icon: "mdi:robot", form: "rounded", label: "Transcribe Audio Clip", pos: "b", h: 48 }
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Download Voice File"]
n18@{ icon: "mdi:database", form: "rounded", label: "Fetch Notion Database", pos: "b", h: 48 }
n19@{ icon: "mdi:robot", form: "rounded", label: "Conversation Orchestrator", pos: "b", h: 48 }
n19 --> n6
n15 --> n4
n15 --> n2
n15 --> n17
n4 --> n19
n7 -.-> n19
n3 --> n4
n17 --> n16
n1 -.-> n19
n2 --> n3
n0 -.-> n19
n5 --> n15
n14 -.-> n19
n13 -.-> n19
n16 --> n4
n16 --> n2
n18 -.-> n19
n12 -.-> n19
n9 -.-> n19
n11 -.-> n19
n8 -.-> n19
n10 -.-> n19
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n5 trigger
class n16,n19 ai
class n14 aiModel
class n7 ai
class n0 ai
class n15 decision
class n1,n2,n18 database
classDef customIcon fill:none,stroke:none
class n2,n4,n5,n6,n17 customIcon
The Problem: Your “Assistant” Has No Memory (So You Do the Work Twice)
Most teams don’t struggle because they lack tools. They struggle because their tools don’t share context. You make a plan in chat, confirm a time in email, save a link in Notion, then try to stitch it all together later when you actually need it. That’s when mistakes sneak in. Calendar events get created without the right details, follow-ups get missed, and you waste about 30 minutes just reloading your own brain every morning.
It adds up fast. Here’s where it breaks down in real life.
- You repeat preferences and “important facts” constantly, because chat history is not a database.
- Finding the right email thread means leaving Telegram, opening Gmail, searching, clicking, and losing your train of thought.
- Calendar admin becomes a mini project, especially when you’re capturing tasks from voice notes and trying to convert them into real events.
- Notes and reading lists sit in Notion, but you rarely recall them when you need them most.
The Solution: A Telegram Agent With Airtable Memory + On-Demand Tools
This n8n workflow turns Telegram into a front door for work you normally do across five tabs. You message your bot (text or voice), and the automation routes the request, pulls your recent Airtable “memories” for context, and hands everything to an AI agent. If you send a voice note, it automatically downloads the audio, transcribes it with OpenAI, then treats it like a normal message. From there the agent can decide to search the web, read Gmail, manage Google Calendar events, or fetch a Notion database, depending on what you asked. When you share a personal preference or recurring detail, it quietly saves a distilled version into Airtable so your future requests feel less repetitive.
The workflow starts when a Telegram message hits your bot. It then loads your latest Airtable memories and (if needed) transcribes audio. Finally, the agent combines that context with live tool outputs and replies right back in Telegram, often with the task already done.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you handle scheduling and follow-ups from chat. Manually, you might spend 10 minutes jumping into Gmail to find context, another 10 minutes creating or updating a Calendar event, then 5 minutes digging through Notion for a related note. That’s about 25 minutes per request, and two requests a day is roughly an hour. With this workflow, you send one Telegram message (or a 30-second voice note), wait a minute for tool calls and transcription, and you’re done in about 5 minutes of active effort.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram Bot API to receive and reply to messages
- Airtable to store long-term “memories” per user
- SerpAPI key (get it from your SerpAPI dashboard)
Skill level: Intermediate. You’ll connect a few accounts, create an Airtable base/table, and paste in a Telegram chat ID.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A Telegram message triggers everything. Your bot receives a text message or voice note via the Telegram Trigger, and the workflow immediately routes it down the right path.
Voice gets turned into usable text. If it’s audio, n8n downloads the file and sends it to OpenAI speech-to-text. You end up with a clean transcript that the agent can reason over, search with, and store as a future reference.
Context is loaded from Airtable and combined. The workflow searches your Airtable “Agent Memories” table for the same user, bundles recent entries into a memory block, and merges that with the current message. There’s also a short-term memory window (about 30 turns) so the agent doesn’t feel forgetful mid-conversation.
The agent uses tools only when they matter. Ask for your upcoming meetings, and it calls Google Calendar. Ask for the latest “Product Updates” email, and it uses Gmail. Need background info, and it hits SerpAPI. Then it replies in Telegram with grounded results and (when appropriate) it silently saves a new memory to Airtable.
You can easily modify which facts get stored to memory based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Telegram Trigger
Set up the workflow to receive messages from Telegram and pass them into the logic that distinguishes text from voice inputs.
- Add and open Telegram Incoming Hook.
- Set Updates to
message. - Set Additional Fields → Chat IDs to
[YOUR_ID]and enable Download totrue. - Credential Required: Connect your
telegramApicredentials.
Tip: Restricting Chat IDs helps prevent unauthorized access to your assistant.
Step 2: Route Text vs Voice Messages
Route messages so text goes directly into the AI pipeline, and voice messages are downloaded and transcribed first.
- Open Text or Voice Check and keep the condition String → Exists with Left Value set to
{{ $json.message.text }}. - Connect Text or Voice Check to Download Voice File on the false branch (voice messages).
- In Download Voice File, set Resource to
fileand File ID to{{ $json.message.voice.file_id }}. - Credential Required: Connect your
telegramApicredentials in Download Voice File. - In Transcribe Audio Clip, set Resource to
audioand Operation totranscribe. - Credential Required: Connect your
openAiApicredentials in Transcribe Audio Clip.
⚠️ Common Pitfall: If voice messages aren’t downloading, double-check that Telegram Incoming Hook has Download enabled and the correct Chat IDs.
Step 3: Load and Compile User Memory
Pull past memories from Airtable and aggregate them into a single list for the AI to use.
- Open Retrieve Memory Entries and set Operation to
search. - Set Filter By Formula to
({User} = '[YOUR_NAME]'). - Credential Required: Connect your
airtableTokenApicredentials in Retrieve Memory Entries. - Open Compile Memory List and set Fields to Include to
Memory, Createdand Destination Field Name toMemories. - Open Combine Inputs and set Mode to
combineand Combine By tocombineAll.
Tip: Text or Voice Check outputs to both Combine Inputs and Retrieve Memory Entries in parallel, keeping responses fast while memory loads.
Step 4: Configure the AI Orchestrator and Memory Tools
Set up the conversation agent, its memory window, and connected tools that the model can call on demand.
- Open Conversation Orchestrator and keep Text set to
{{ $json.text }}{{ $json.message.text }}. - Confirm the system message in Conversation Orchestrator includes
{{ $json.Memories.toJsonString() }}for memory injection. - Open Brief Memory Buffer and set Session Key to
{{ $('Text or Voice Check').item.json.message.chat.id }}with Context Window Length set to30. - Attach Grok Chat Model as the language model for Conversation Orchestrator and set Model to
grok-4-0709. - Credential Required: Connect your
xAiApicredentials in Grok Chat Model.
⚠️ Common Pitfall: The AI tools and memory components (like Brief Memory Buffer, Store Memory Record, and Web Search via SerpAPI) are attached to Conversation Orchestrator. Ensure their credentials are configured on each tool node, not inside the agent.
Step 5: Connect External Tools for Search, Calendar, Email, and Notion
Enable the assistant to call external tools when users ask for web searches, calendar actions, Gmail queries, or Notion data.
- In Web Search via SerpAPI, keep default settings and add credentials. Credential Required: Connect your
serpApicredentials. - Configure the Google Calendar tools: Fetch Calendar Events with Operation
getAlland Time Max{{ $now.plus({ week: 4 }) }}; Create Calendar Event, Modify Calendar Event, and Remove Calendar Event for event changes. Credential Required: Connect yourgoogleCalendarOAuth2Apicredentials to each of these nodes. - Configure Gmail tools: Retrieve Gmail Threads with Operation
getAll, and Fetch Gmail Message with Operationget. Keep AI-driven fields like Simplify and Message ID as expressions. Credential Required: Connect yourgmailOAuth2credentials on both nodes. - In Fetch Notion Database, set Resource to
databaseand select your Database ID. Credential Required: Connect yournotionApicredentials. - In Store Memory Record, set Airtable Base and Table IDs, and keep Memory mapped to
{{ $fromAI('Memory') }}. Credential Required: Connect yourairtableTokenApicredentials.
Tip: All tools listed here are connected as AI tools for Conversation Orchestrator, so the agent can call them dynamically based on user requests.
Step 6: Configure the Telegram Response
Return the assistant’s output back to the user in Telegram.
- Open Send Telegram Reply and set Text to
{{ $json.output }}. - Set Chat ID to
{{ $('Telegram Incoming Hook').item.json.message.chat.id }}. - Credential Required: Connect your
telegramApicredentials.
Tip: Conversation Orchestrator flows directly into Send Telegram Reply to keep the assistant’s response instantaneous.
Step 7: Test and Activate Your Workflow
Verify the workflow end-to-end and then enable it for live use.
- Click Execute Workflow and send a text message to your Telegram bot to trigger Telegram Incoming Hook.
- Test a voice note to ensure Download Voice File and Transcribe Audio Clip run before Combine Inputs and Retrieve Memory Entries in parallel.
- Confirm you receive a reply in Telegram from Send Telegram Reply with the AI output.
- When everything works, toggle the workflow to Active to run continuously.
Common Gotchas
- Airtable credentials can expire or your base/table names won’t match. If things break, check the Airtable connection in n8n and verify the “Agent Memories” table fields (Memory, User, Created) first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About an hour if your accounts and permissions are ready.
No. You’ll mostly be connecting accounts and copying a few IDs into the right fields.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in API costs for things like OpenAI transcription and SerpAPI web search.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. Update the Agent system message to match your tone, then adjust what gets stored by refining the “Save Memory” tool behavior so it only saves useful, non-sensitive facts. Common tweaks include saving “preferences” but not “one-off plans,” adding categories or tags in Airtable, and shortening the memory window so old context doesn’t pollute new requests.
Usually it’s the bot token or chat ID. Regenerate the token in @BotFather if needed, and confirm the Telegram Trigger is set to the correct allowed chatIds. Also make sure “download” is enabled if you’re sending voice notes, because the workflow needs permission to fetch the audio file before transcription.
It depends on your n8n plan and your API limits.
Often, yes, if you want a real “agent” with memory and tool-calling. n8n is better suited to branching logic, merging memory context, and mixing multiple tool actions (Calendar, Gmail, Notion, web search) in one conversation without paying per tiny step. It’s also self-hostable, which can matter when volumes grow. Zapier or Make can feel simpler for lightweight, two-app automations, but this workflow is more than a single trigger and action. If you’re torn, Talk to an automation expert and map it to your actual usage.
Once this is running, Telegram stops being a place where requests go to die. Your assistant remembers, your tools respond, and you get to keep moving.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.