Every event on your site, in the chat you already read.
A new order, a payment, a refund, a product running out, a new user, a comment, a form filled in. Each one goes to a channel, a group, a private chat or a bot as a message you wrote, with the details filled in, buttons underneath and a file attached if you want one. One panel for all of it, and it is free.
You write each template once, with the macros you need. Every event fills it in.
What is in a message
Macros for the moving parts, with the full list for each event shown beside the editor
Buttons under the message, each a label and a link, and the links take macros too
An attachment, sent as a document, or as a photo when it is an image
Jalali or Gregorian dates in the same template, and any language, in either direction
// why
Why we built it
Telegram plugins for WordPress existed. None of them did what a store running on Telegram actually needs.
Before
For a lot of stores, Telegram is not a marketing channel. It is where the business runs. The owner, the warehouse, the support person and the courier share a group, and that group is where a new order should appear, seconds after it happens, with everything they need to act on it.
The plugins we tried could send a message when an order arrived, and that was about it. The message was fixed, or nearly fixed. A handful of events were covered and the rest were not. There were no buttons, so nobody could open the order from the chat. Dates came out in a calendar half our clients do not use. When a client wanted to change one word in the message, the answer was a code snippet. And on networks where Telegram is blocked, a plugin that calls Telegram's servers directly simply fails.
The realisation
Notifications are not a feature. For a lot of businesses they are the interface.
If the group chat is where the work happens, the notification has to carry the work: the details, the links, the buttons, the file. It has to be written by the store owner in their own words, cover every event that matters from one place, and reach Telegram from anywhere.
So every event lives in one notifications panel. Each notification has its own recipients, its own message written with macros in Markdown or HTML, buttons underneath and an optional attachment. It knows the Jalali calendar, it can reach Telegram through a relay you control, and every part of the panel has a hook so other plugins can add their own events. It went onto WordPress.org in March 2025. The events, the macros, the buttons, the attachments and the hooks are all in the free version, because that is the only version.
// events
Every event, one panel
Pick an event, add a notification, choose who receives it, write the message. Add as many notifications per event as you like, each with its own recipients and wording.
WooCommerce
New order, and checkout processed, including the block checkout and orders placed through the API
Payment complete
Status changed, to one status or to any
Order updated, refunded or deleted, with the refund details
Stock changed, including low stock, out of stock, and stock restored when an order is cancelled
Product updated
Any WooCommerce email sent, or one specific email
WordPress and forms
New user registered
New comment, and a comment approved, spammed, trashed or updated
Gravity Forms: any form or one form, with its field values
Contact Form 7: any form or one form
WooCommerce extensions
Subscriptions: status, totals, start and end dates
Memberships: plan, status, start and expiry
Bookings: status, date, start and end time
Points and Rewards
Multi-Currency, with amounts formatted the way the store formats them
Your own plugin
Add your own event categories, events, macros and default buttons through hooks. They appear in the same dropdowns as ours, as if they had always been there.
Works with
WooCommerceSubscriptionsMembershipsBookingsPoints and RewardsMulti-CurrencyGravity FormsContact Form 7Ultimate InvoiceJalali calendar
// messages
Messages you write, details it fills in
A notification is a template. You write it once in your own words, drop in macros for the moving parts, and every event renders it with the real values.
Telegram's inline keyboard: the buttons that sit under a message rather than in it. Each is a label and a link, and links take macros, so "Open order" opens that order.
Attach a file, or a photo
A notification can carry an attachment as a document, or as a photo when it is an image. When a WooCommerce email carries a PDF invoice from Ultimate Invoice, the notification can carry it too.
Markdown or HTML, validated
Format with Markdown or switch to HTML. A validator checks the message before it is saved, so a stray asterisk never silently kills a notification.
Recipients per notification
A channel for the team, a private chat for the owner, a group for the warehouse. Set default recipients once and override them on any notification.
Two calendars
Jalali date and time macros beside the Gregorian ones, so a message carries the date its reader actually uses.
Import and export
The whole notifications list as a JSON file. Set up one store, export, import into the next.
Test before you trust
Send a test message to any chat ID from the settings page and see it land, or see exactly what Telegram objected to.
// rewrite
Rewrite anything the site says
The requests that used to end in a code snippet now end in a table: a translation manager and a string replacer, both in the plugin.
Any translated string
Change what WordPress, WooCommerce or a plugin prints, without touching a translation file.
Grouped by plugin
Every string is listed under the plugin it belongs to, so you know where it came from.
Live
Save, and the wording changes everywhere it appears.
Any text at all
Replace text anywhere in the page, translated or not, matching part of a string or all of it.
Two scopes
Rewrite the whole rendered page, or only the post content, chosen per rule.
Portable
Both lists export and import as JSON, so a store's wording travels with it.
// setup
Connected in four steps
The settings page walks you through it and tells you when to save.
Create a bot
In Telegram, with BotFather. It takes a minute.
Paste the token
Into the plugin's settings, and save.
Enter the bot's username
So the plugin can address it.
Connect
Click once, open your bot, press Start. A welcome message confirms it worked.
When Telegram is blocked
Point the plugin at your own API base address instead of Telegram's and route through a relay you control. The settings page links to a guide for doing it with a Cloudflare Worker, so a store on a restricted network still gets every notification.
Finding a chat ID
Channels and groups have IDs that are not shown anywhere obvious. Forward any message from one to your bot, and the bot replies with the ID.
Debug when you need it
A debug mode logs every step of a send, for when a message did not arrive. Off by default.
Reset and start over
Reset the notifications to the defaults with one click, or disconnect the bot and connect another.
// security
Security, with a partner watching
A plugin that holds your bot token and posts to your channels deserves more scrutiny than one that changes a colour. So we do not review its security alone.
The plugin is enrolled in the Patchstack Vulnerability Disclosure Program, so security researchers are invited to test it and report what they find privately. As of September 2026, Patchstack's database lists no vulnerabilities for it. Please do not report security issues in the public support forum.
A researcher reports it
Privately, to Patchstack, through the plugin's disclosure page.
Patchstack validates it
Their team confirms the issue, rates its severity and rules out duplicates.
We fix it
Patch, test, and ship a new version to WordPress.org.
Sites update
The fix reaches every site through the normal WordPress update, before anything is public.
It is disclosed properly
The advisory is published after the fix is out, with the researcher credited.
The token stays on your server
Messages go from your site to Telegram, or to a relay you control. Nothing passes through us.
Checked on the way in and out
Escaping and sanitising throughout, with settings behind capability checks and nonces. Debug logging is off by default.
A security policy in the repository
It points to the same disclosure channel, so a researcher reading the code finds the door straight away.
// developers
For developers
One send helper, and a hook at every seam. Your plugin's events can live in the same panel as ours.
Add event categories and events, macros for them, and default buttons. Inject fields before or after a notification's settings, or after the macro list.
Control the send
Change the method (text, photo or document), the arguments and the buttons just before dispatch, and react to success or failure with what Telegram returned.
hooks.phpA selection of the plugin's hook names
// The panelultimate-integration-for-telegram/notif-panel/notif-category/classultimate-integration-for-telegram/notif-panel/after-notif-types-dropdownultimate-integration-for-telegram/notif-panel/after-macro-listultimate-integration-for-telegram/notif-panel/notif-default-buttons// The sendultimate-integration-for-telegram/helper/send-message-methodultimate-integration-for-telegram/helper/send-message-argumentsultimate-integration-for-telegram/helper/send-message-buttonsultimate-integration-for-telegram/helper/send-message-result/successultimate-integration-for-telegram/helper/send-message-result/failedultimate-integration-for-telegram/helper/translate-pairs
PHPWordPressWooCommerceTelegram Bot APIGravity FormsContact Form 7Cloudflare WorkersPatchstack
// products/
Other things I keep running
Plugins, apps and internal systems. Each one is shipped, documented, and still looked after.