Log receipt expenses in Notion with Gmail, Telegram, and OpenAI

Go to Workflow
0 views
Built by Rahul Joshi Rahul Joshi
Created on September 15, 2026

Description

Quick overview
This workflow captures receipt attachments from Gmail and receipt photos from Telegram, extracts structured expense details with OpenAI (gpt-4o-mini), logs each expense as a new page in a Notion database, and sends a Telegram confirmation, with Slack and Telegram alerts on workflow errors.

How it works
Triggers when a new Gmail message matching the receipt search filter arrives with an attachment.
Extracts the first email attachment, detects whether it is a PDF, and if it is a PDF extracts its text content.
Sends either the PDF text or the receipt image to OpenAI (gpt-4o-mini) to return receipt data as JSON (vendor, date, amount, currency, category, summary).
Triggers when a new Telegram message is received and continues only if it includes a photo.
Downloads the highest-resolution Telegram photo, converts it to a base64 data URL, and sends it to OpenAI (gpt-4o-mini) for JSON receipt extraction.
Parses the OpenAI response into normalized fields and creates a new expense entry in a Notion database.
Sends a Telegram message confirming the logged expense, and on any workflow error posts alerts to Slack and Telegram.

Setup
Add credentials for Gmail OAuth2, Telegram Bot API, OpenAI, Notion, and Slack OAuth2 (for error alerts).
Replace REPLACE_WITH_YOUR_NOTION_EXPENSES_DATABASE_ID with your Notion expenses database ID and ensure the database has matching properties (Vendor, Amount, Currency, Date, Category, Source, Notes).
Set the Telegram chat IDs used for messages by replacing REPLACE_WITH_YOUR_TELEGRAM_CHAT_ID in the confirmation step and YOUR_ADMIN_TELEGRAM_CHAT_ID for error alerts.
Update the Slack channel selection for error alerts to the channel you want to receive workflow failure notifications.
Configure your Telegram bot with BotFather and start a chat with the bot so it can receive photos and send confirmations.
Activate both the Gmail and Telegram triggers.

Nodes Used (7)

Airtable
n8n-nodes-base.airtable
Code
n8n-nodes-base.code
Google Sheets
n8n-nodes-base.googleSheets
Notion
n8n-nodes-base.notion
OpenAI
@n8n/n8n-nodes-langchain.openAi
Slack
n8n-nodes-base.slack
Telegram
n8n-nodes-base.telegram