Telegram to Notion, file everything without the mess
Your Telegram is full of “important stuff.” A quick client note. A screenshot you’ll need later. A PDF contract. Then it disappears into the scroll, and you end up re-asking for files, re-saving images, or rebuilding context from memory.
Telegram Notion automation helps most when you’re moving fast. Marketing managers tracking creative approvals feel it. So do virtual assistants handling files for multiple people, and founders who live in Telegram but need everything archived somewhere reliable.
This workflow turns Telegram messages into organized Notion entries automatically, while routing images and documents to the right storage. You’ll see what it does, what you need, and what “set it up once” actually looks like.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Telegram to Notion, file everything without the mess
flowchart LR
subgraph sg0["📱 Telegram Message Flow"]
direction LR
n0["<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 Message Trigger"]
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "🔀 Content Type Router", 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/telegram.svg' width='40' height='40' /></div><br/>📥 Download Telegram Image"]
n3@{ icon: "mdi:cog", form: "rounded", label: "🔄 Convert to Base64", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>🌐 Upload to ImgBB"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>📝 Add Image to Notion"]
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/notion.dark.svg' width='40' height='40' /></div><br/>📝 Add Text to Notion"]
n7["<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 Telegram File"]
n8@{ icon: "mdi:cog", form: "rounded", label: "☁️ Upload to Google Drive", pos: "b", h: 48 }
n9@{ icon: "mdi:database", form: "rounded", label: "📊 Record in Google Sheets", pos: "b", h: 48 }
n10["<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 Completion Message"]
n4 --> n5
n3 --> n4
n6 --> n10
n5 --> n10
n1 --> n2
n1 --> n6
n1 --> n7
n7 --> n8
n9 --> n10
n2 --> n3
n8 --> n9
n0 --> n1
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 n0 trigger
class n1 decision
class n6,n9 database
class n4,n5 api
classDef customIcon fill:none,stroke:none
class n0,n2,n4,n5,n6,n7,n10 customIcon
The Problem: Telegram Becomes a Black Hole
Telegram is excellent for speed, and terrible for long-term organization. A message can include a decision you need to track, an image you will reference, or a document that belongs in a project record. But saving it properly means switching apps, downloading files, renaming them, uploading again, then creating a Notion note (and hoping you remember the context). Miss one step and your “system” becomes a pile of half-saved assets that nobody trusts. Multiply that by a few chats and a busy week. Honestly, it gets messy fast.
It’s not one big failure. It’s dozens of small ones that compound.
- You waste about 5–10 minutes per “important” message just trying to file it correctly.
- Images get separated from the notes that explain them, which means you lose the why behind the asset.
- Documents end up in someone’s downloads folder instead of a shared Drive, so the team asks for the same file again.
- Manual logging in spreadsheets is easy to skip, and then reporting turns into guesswork.
The Solution: Auto-Route Telegram Notes, Images, and Files
This n8n workflow listens for new Telegram messages and files them where they belong, based on what you sent. Text notes get added to a specific Notion block so your running log stays current without you opening Notion. Images are handled differently: the workflow fetches the Telegram photo, encodes it, uploads it to ImgBB, and then creates a Notion image block using that hosted image URL. Documents take the “proper archive” path. They’re downloaded from Telegram, uploaded into Google Drive, and then the workflow logs the key details into Google Sheets so you have a clean, searchable ledger. Finally, Telegram sends you a short confirmation so you know it worked.
It starts with a Telegram trigger. Then a routing step classifies the incoming message as text, image, or document. The workflow finishes by writing to Notion (for context), Drive and Sheets (for storage and tracking), and replying back in Telegram.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you receive 20 “keep this” items per week in Telegram: about 10 text notes, 6 images, and 4 documents. Manually, you might spend around 5 minutes saving and labeling each one (download, upload, link, log), which is roughly 100 minutes a week. With this workflow, you just send the message as usual and wait for the confirmation reply. The handling runs in the background, and your active time drops to basically zero beyond the original Telegram send.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram Bot to trigger on new messages.
- Notion to append notes and image blocks.
- Google Drive + Google Sheets for document storage and metadata logging.
- ImgBB API key (get it from your imgbb account settings).
Skill level: Beginner. You’ll connect accounts, paste a few IDs (Notion block, Drive folder), and test each message type once.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A Telegram message comes in. The workflow triggers the moment your bot receives a new message, image, or document in the chat you’ve connected.
The workflow classifies the content. A routing step checks what Telegram sent (plain text, a photo, or a file), then sends it down the correct path so you don’t need separate automations for each scenario.
It files the content where it belongs. Text gets appended into Notion as a heading-style entry. Photos are fetched from Telegram, encoded, uploaded via HTTP to ImgBB, then created as a Notion image block. Documents are pulled from Telegram, sent to Google Drive, and written into Google Sheets for tracking.
You get a confirmation. The workflow replies in Telegram when the filing is complete, which is small but important because you’ll know immediately if something failed.
You can easily modify the routing rules to handle more Telegram message types (like voice notes) 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 entry point so new Telegram messages are captured and routed.
- Add and open 📲 Incoming Telegram Trigger.
- Ensure Updates includes
message(already set). - Credential Required: Connect your telegramApi credentials.
Step 2: Connect Content Routing Logic
Route incoming Telegram messages by type (image, text, file) to the correct processing path.
- Open Route Content Category and confirm three outputs are defined:
Image,Text, andFile. - Verify the image condition uses
{{$json.message.photo}}with the array exists operator. - Verify the text condition uses
{{$json.message.text}}with the string exists operator. - Verify the file condition uses
{{$json.message.document}}with the object exists operator.
Step 3: Set Up Image Processing and Notion Image Blocks
This path handles photo uploads, converts them to Base64, uploads to ImgBB, and creates a Notion image block.
- Configure Fetch Telegram Photo with Resource set to
fileand File ID set to{{$json.message.photo[2].file_id}}. - Credential Required: Connect your telegramApi credentials to Fetch Telegram Photo.
- Open Encode Image Base64 and set Operation to
binaryToPropery. - Open Upload to ImgBB API and set URL to
https://api.imgbb.com/1/uploadand Method toPOST. - In Upload to ImgBB API, set the body parameter image to
{{$json.data}}, and query parameters expiration to600and key to[CONFIGURE_YOUR_API_KEY]. - Open Create Notion Image Block, set URL to
https://api.notion.com/v1/blocks/[YOUR_ID]/children, and Method toPATCH. - In Create Notion Image Block, keep JSON Body as provided and ensure the toggle text references
{{ $('Route Content Category').item.json.message.caption }} - {{ $('📲 Incoming Telegram Trigger').item.json.message.from.first_name }} {{ $('📲 Incoming Telegram Trigger').item.json.message.from.last_name }}and image URL{{ $json.data.url }}. - Credential Required: Connect your httpHeaderAuth credentials to Create Notion Image Block.
[CONFIGURE_YOUR_API_KEY] in Upload to ImgBB API and [YOUR_ID] in Create Notion Image Block with real values, or the upload/Notion update will fail.Step 4: Configure Text-to-Notion Heading Path
This path appends a Notion heading when a text message is received.
- Open Append Notion Heading and set Block ID to
[YOUR_ID]. - In Append Notion Heading, keep the heading content expression as
{{$json.message.text}}under heading_3. - Credential Required: Connect your notionApi credentials to Append Notion Heading.
Step 5: Configure File Uploads to Drive and Logging to Sheets
This path handles file uploads from Telegram, stores them in Google Drive, and logs metadata to Google Sheets.
- Open Retrieve Telegram File and set Resource to
fileand File ID to{{$json.message.document.file_id}}. - Credential Required: Connect your telegramApi credentials to Retrieve Telegram File.
- Open Send File to Drive and set Name to
{{$('📲 Incoming Telegram Trigger').item.json.message.document.file_name}}. - Set Drive to
My Driveand Folder to[YOUR_ID]in Send File to Drive. - Credential Required: Connect your googleDriveOAuth2Api credentials to Send File to Drive.
- Open Log File in Sheets and set Operation to
append. - Map columns exactly as provided: File Size
{{ ($json.size / (1024 * 1024)).toFixed(2) }} mb, File Type{{$json.fileExtension}}, Created At{{$json.createdTime.toDateTime().toFormat("dd-MM-yyyy HH:mm")}}, Drive Link{{$json.webViewLink}}, File Name{{$('Route Content Category').item.json.message.document.file_name}}, Person Uploaded{{$('Route Content Category').item.json.message.from.first_name}} {{$('Route Content Category').item.json.message.from.last_name}}. - Credential Required: Connect your googleSheetsOAuth2Api credentials to Log File in Sheets.
Step 6: Configure the Completion Notification
Notify the sender when their content is processed, regardless of the content type.
- Open Dispatch Completion Notice and set Text to
✅ Task Completed Successfully! Your content has been processed and saved.. - Set Chat ID to
{{$('📲 Incoming Telegram Trigger').item.json.message.chat.id}}. - Credential Required: Connect your telegramApi credentials to Dispatch Completion Notice.
Execution Flow: 📲 Incoming Telegram Trigger → Route Content Category. From there: Route Content Category → Fetch Telegram Photo → Encode Image Base64 → Upload to ImgBB API → Create Notion Image Block → Dispatch Completion Notice; Route Content Category → Append Notion Heading → Dispatch Completion Notice; Route Content Category → Retrieve Telegram File → Send File to Drive → Log File in Sheets → Dispatch Completion Notice.
Step 7: Test and Activate Your Workflow
Verify each branch works correctly, then activate for production use.
- Click Execute Workflow and send three test messages to your Telegram bot: a photo with caption, a text-only message, and a document file.
- Confirm image flow: Notion receives a toggle with the image and caption, using the ImgBB URL.
- Confirm text flow: Notion receives a heading_3 block with the message text.
- Confirm file flow: Google Drive contains the uploaded file and Google Sheets logs the metadata.
- Verify that Dispatch Completion Notice sends the success message after each path.
- Toggle the workflow to Active for production use.
Common Gotchas
- Notion access often fails because the page or block wasn’t shared with the integration. Check the Notion page sharing settings and confirm the block ID is correct.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- ImgBB requests can fail if your API key is wrong or you hit their limits. Check the HTTP Request node output first, because the error message is usually clear.
Frequently Asked Questions
About 30 minutes if your accounts are ready.
No. You’ll mostly paste credentials and a Notion block ID, then run a quick test with a text, an image, and a document.
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 ImgBB usage (often free for light use).
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, but you’ll need to expand the “Route Content Category” switch to detect those message types. From there you can duplicate the document path (retrieve file, upload to Drive, log in Sheets) or send voice notes straight into Notion as an attachment link. Many teams also personalize the final Telegram confirmation to include where the item was stored. If you want to avoid ImgBB entirely, you can swap that image-hosting step for another service and keep the Notion image-block creation idea the same.
Usually it’s the bot token or chat permissions. Regenerate the Telegram bot token, confirm the bot is added to the chat you’re testing, and then reselect the credentials inside n8n so the trigger is listening to the right place. Also check the execution log for the first failed node, because Telegram errors are often specific about what’s missing.
A lot, as long as your n8n plan and storage services can keep up.
Often, yes, especially when you want multi-path logic (text vs image vs document) in one automation. n8n makes branching and data handling straightforward, and self-hosting means you’re not paying per tiny step the same way. Zapier and Make can still be fine if your flow is simple and you value a guided UI over flexibility. The trade-off is usually cost and control. Talk to an automation expert if you want a recommendation based on your message volume and tools.
Once this is running, Telegram stays fast and Notion stays organized. The workflow handles the filing so your team can stop babysitting screenshots and PDFs.
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.