n8n Telegram to Google Sheets: Step-by-Step Automation
Build an n8n workflow that saves Telegram messages to Google Sheets — base setup plus the expense-tracking and daily-log variants people actually build.
Quick answer
Two nodes get you there: Telegram Trigger — technically a webhook under the hood — catches new messages sent to your bot, Google Sheets (operation: Append Row) writes them into a spreadsheet. Drop a Set node between the two if you want to control exactly which fields get saved instead of dumping the raw message. No code, and the base version takes about 15 minutes to wire up.
This is one of the most-built workflows in the n8n community — official templates exist for logging daily messages, parsing Telegram messages into expense records, and even AI-assisted logging. The core wiring below is the same for all of them; the "Popular variations" section covers what changes.
What you'll need
- An n8n account (cloud or self-hosted)
- A Telegram bot created through @BotFather — you'll need its token
- A Google account with access to Google Sheets
Step-by-step
1. Create a Telegram bot
Message @BotFather with /newbot, give the bot a name, and you'll get a token that looks like 123456789:AAExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Save it — you'll paste it into n8n next.
2. Add a Telegram Trigger node
- Create a new workflow
- Add a Telegram Trigger node
- Under Credentials, create a new credential and paste in your bot token
- In the Updates field, select
message
3. Connect Google Sheets
- Create a spreadsheet with column headers — for a basic log, something like
Date,Name,Message - Add a Google Sheets node set to the
Append Rowoperation - Authorize your Google account via OAuth2 (n8n opens the standard Google sign-in window)
- Pick the spreadsheet and sheet to write to
4. Map the fields
Connect Telegram Trigger to Google Sheets, then in the Mapping tab assign:
Date→{{$now}}Name→{{$json.message.from.first_name}}Message→{{$json.message.text}}
5. Activate the workflow
Flip the Active toggle top-right. Message your bot on Telegram — a row should land in the sheet within a few seconds.
Popular variations
The base workflow above is a generic logger. Two variants come up constantly in the n8n community and are worth knowing about before you build:
- Expense tracking. Instead of writing the raw message text, add a node (often an AI node with a parsing prompt) between Telegram Trigger and Google Sheets that pulls out amount, category and date from a message like "coffee 4.50" and writes structured columns instead of free text.
- Daily logs / journaling. Same base wiring, but the trigger is filtered to a specific chat or a specific reply pattern, so only intentional log entries get written rather than every message in a group chat.
Both are the same two-node core from Steps 2-3 — the only real change is what happens in the Mapping step.
Common issues
- The workflow doesn't fire on new messages. Check whether the bot is also connected to another service via
/setwebhook— Telegram allows only one active webhook per bot at a time. - Google Sheets throws an authorization error. The OAuth2 token can expire when access permissions change — reconnect the credential on the node.
- Duplicate rows. If you're manually testing the workflow while it's also Active, each message gets processed twice. Turn Active mode off while testing by hand.
If messages don't arrive at all after activating (not just duplicating), the cause usually runs deeper than a /setwebhook conflict — see the full breakdown in n8n webhook not triggering: causes and fixes.
Next step: a smarter bot
This workflow just copies raw message text into a sheet. If you want the bot to actually parse the message, reply to the user, and decide what to log, see how to build an AI agent in n8n — the same Telegram Trigger can feed an AI Agent node instead of writing straight to Google Sheets.
FAQ
Do I need self-hosted n8n for this?
No. n8n Cloud supports both nodes out of the box — no server setup required.
How do I send data to Google Sheets via the Telegram node without writing every field manually?
Use a Set node (or an AI-powered parsing node for the expense-tracking variant) between Telegram Trigger and Google Sheets, then reference its output fields in the Google Sheets Mapping tab instead of mapping straight from the raw Telegram payload.
Can I write to Notion or Airtable instead of Google Sheets?
Yes — swap the Google Sheets node for the matching native Notion or Airtable node. Field mapping works the same way.
Is this free to run?
Telegram Trigger and Google Sheets are both free n8n nodes. The only limit is your n8n plan's monthly execution allowance.
Last fact-checked: August 17, 2026. n8n and Google update their interfaces over time — if a field name in your version looks different, go by what the node does rather than the exact button label.