Frappe Telegram Plus
Run your ERPNext approvals and alerts from Telegram. One-tap approvals, notifications, and scheduled digests - zero code, configured entirely from the desk.
- Author: Sandeepambala
- Repository: https://github.com/Sandeepambala/frappe_telegram_plus
- GitHub stars: 1
- Forks: 0
- License: MIT
- Category: Integrations
- Maintenance: Actively Maintained
- Frappe versions: v16
Install Frappe Telegram Plus
bench get-app https://github.com/Sandeepambala/frappe_telegram_plus
Tags
- approval-workflow
- erpnext
- frappe
- frappe-app
- notifications
- telegram
- telegram-bot
Add the Frappe Gems badge to your README
Maintain Frappe Telegram Plus? Paste this into your README:
[](https://frappegems.com/gems/apps/Sandeepambala/frappe_telegram_plus)
About Frappe Telegram Plus
---
## Why this app
Your team already lives in Telegram. Your documents live in ERPNext. This app connects the two, so a manager can approve a Sales Order from their phone in one tap, with the action recorded in ERPNext as if they did it there.
```
Sales Order created -> Telegram message with your buttons -> tap Approve
document submitted, approver and time recorded on the timeline
```
## Features
| Feature | What it gives you |
| --- | --- |
| **One-tap approvals** | Buttons you define yourself: submit, cancel, set a field, apply a workflow action, run a Server Script, or just record the tap. Optionally ask for a typed reason. |
| **Notifications** | A message on any document event, with the document's PDF and uploaded attachments included if you want. |
| **Native Notification channel** | Pick "Telegram" as the Channel on any standard Frappe Notification. Existing alerts, date reminders, and value-change triggers go to Telegram with no rebuild. |
| **Scheduled digests** | "Every weekday at 9 am, post open orders to the sales group." |
| **Self registration** | Users link their own Telegram from their User record. Groups register with one command. No hunting for chat ids. |
| **Audit trail** | Who acted, from which Telegram account, when, and why. On the document timeline and in a dedicated log. |
Works with any doctype. Built-in safeguards: duplicate taps are blocked (first tap wins), actions run under the approver's real ERPNext permissions, the webhook is protected by a secret token, and the bot token never reaches the logs.
## Telegram Rule or Notification channel?
The app gives you two ways to send a message. Pick by what you need:
| You want | Use |
| --- | --- |
| Buttons on the message (approve, reject, custom actions) | **Telegram Rule** |
| Document attachments, topic threading, a delivery log | **Telegram Rule** |
| A reminder before or after a date, like "3 days before due date" | **Notification** with Channel = Telegram |
| An alert when a field changes to a specific value | **Notification** with Channel = Telegram |
| Alerts you already configured, now delivered to Telegram | **Notification** with Channel = Telegram |
| A plain "document created or submitted" message | Either one. The rule adds a delivery log; the notification is quicker to set up. |
In short: **Telegram Rule is the approval engine, the Notification channel is for plain alerts and reminders.**
## Requirements
- Frappe v16 (ERPNext is optional, the engine is doctype agnostic)
- A site reachable over public HTTPS (Telegram delivers updates by webhook)
- No extra Python packages
## Installation
```bash
cd $PATH_TO_YOUR_BENCH
bench get-app https://github.com/Sandeepambala/frappe_telegram_plus
bench --site install-app frappe_telegram_plus
```
## Quick start
An end to end setup takes about five minutes.
1. **Create a bot**: message [@BotFather](https://t.me/BotFather) on Telegram, send `/newbot`, and copy the token it gives you.
2. **Connect it**: open **Telegram Settings** in your site, paste the token, click **Test Connection**, tick **Enabled**, then click **Set Webhook**.
3. **Register yourself**: open your **User** record, click **Register Telegram**, follow the link, and press **Start** in the chat.
4. **Allow yourself to approve**: open the **Telegram Recipient** record that was created and set Role to **Approver**.
5. **Turn on a rule**: enable the shipped **Sales Order Draft Approval** rule and add yourself as a recipient.
Now create a draft Sales Order. You will get a Telegram message with Approve and Reject buttons. Tap one and watch the document update, with the action recorded on its timeline.
To notify a group or channel instead of a person, add the bot to it and create a **Telegram Recipient** with its chat id (see the guide below).
## Documentation
| Guide | What it covers |
| --- | --- |
| [DOCUMENTATION.md](DOCUMENTATION.md) | How everything works and how to use it |
| [DOCTYPES.md](DOCTYPES.md) | Every record type, field by field, with worked examples |
| [HOW_TO_GET_CHAT_ID.md](HOW_TO_GET_CHAT_ID.md) | Finding a group or channel chat id manually |
## Testing
```bash
bench --site run-tests --app frappe_telegram_plus
```
## Contributing
Issues and pull requests are welcome. This app uses [pre-commit](https://pre-commit.com/#installation) (ruff, eslint, prettier, pyupgrade):
```bash
cd apps/frappe_telegram_plus
pre-commit install
```
## Author
Built and maintained by **Sandeep Ambala** ().
## License
[MIT](license.txt)
Related Integrations apps for Frappe & ERPNext
- Insights — Open Source Business Intelligence Tool
- Raven — Simple, open source team messaging platform
- Frappe Whatsapp — WhatsApp cloud integration for frappe
- Frappe Assistant Core — Infrastructure that connects LLMs to ERPNext. Frappe Assistant Core works with the Model Context Protocol (MCP) to expose ERPNext functionality to any compatible Language Model
- Biometric Attendance Sync Tool — A simple tool for syncing Biometric Attendance data with your ERPNext server
- Frappe React Sdk — React hooks for Frappe
- Frappe Js Sdk — TypeScript/JavaScript library for Frappe REST API
- Mcp — Frappe MCP allows Frappe apps to function as MCP servers