{"id":361820,"date":"2026-09-06T07:54:47","date_gmt":"2026-09-06T07:54:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pulse\/"},"modified":"2026-09-06T07:54:22","modified_gmt":"2026-09-06T07:54:22","slug":"hamid","status":"publish","type":"plugin","link":"https:\/\/fa.wordpress.org\/plugins\/hamid\/","author":23534883,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.5","stable_tag":"1.0.5","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Hamid Pulse Notifications for Telegram and Bale","header_author":"Hamidreza Moghaddam","header_description":"Instant WordPress notifications delivered to Telegram and Bale messengers \u2014 posts, users, comments, forms, WooCommerce and more, with an async queue, delivery logs and Markdown formatting.","assets_banners_color":"0d1a36","last_updated":"2026-09-06 07:54:22","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/hamidrezamoghaddam.ir\/","header_plugin_uri":"https:\/\/hamidrezamoghaddam.ir","header_author_uri":"https:\/\/hamidrezamoghaddam.ir\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":42,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"mrhamidreza","date":"2026-09-06 07:54:22","revision":3683122}},"upgrade_notice":{"1.0.5":"<p>Normalize PHP file line endings for plugin review compatibility.<\/p>","1.0.4":"<p>Fix uninstall cleanup so it cannot remove options belonging to unrelated plugins.<\/p>","1.0.3":"<p>Display name, text-domain, and requested plugin-slug update for the WordPress.org plugin review. No functional changes.<\/p>","1.0.1":"<p>Code-quality fixes flagged by the WordPress plugin review tools. No functional changes.<\/p>","1.0.0":"<p>Initial release of Pulse. Configure your Telegram and\/or Bale bot under Pulse \u2192 Connections.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3683122,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3683122,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3683122,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3683122,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[273281,6336,1159,9171,286],"plugin_category":[45],"plugin_contributors":[273895],"plugin_business_model":[],"class_list":["post-361820","plugin","type-plugin","status-publish","hentry","plugin_tags-bale","plugin_tags-messenger","plugin_tags-notification","plugin_tags-telegram","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-mrhamidreza","plugin_committers-mrhamidreza"],"banners":{"banner":"https:\/\/ps.w.org\/hamid\/assets\/banner-772x250.png?rev=3683122","banner_2x":"https:\/\/ps.w.org\/hamid\/assets\/banner-1544x500.png?rev=3683122","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/hamid\/assets\/icon-128x128.png?rev=3683122","icon_2x":"https:\/\/ps.w.org\/hamid\/assets\/icon-256x256.png?rev=3683122","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Hamid Pulse sends rich, Markdown-formatted notifications to <strong>Telegram<\/strong>, <strong>Bale<\/strong>, or <strong>both at the same time<\/strong> whenever something happens on your WordPress site. Every platform keeps its own isolated configuration \u2014 bot token, recipients, and endpoint \u2014 so you can mirror alerts to two messengers at once.<\/p>\n\n<p>Receive notifications when:<\/p>\n\n<ul>\n<li>A post is published or submitted for review (any post type).<\/li>\n<li>A new user registers.<\/li>\n<li>A user signs in \u2014 or someone fails to (passwords are never collected or sent).<\/li>\n<li>A new comment arrives, with optional spam filtering.<\/li>\n<li>Contact Form 7, WPForms, Ninja Forms or Elementor Pro forms are submitted.<\/li>\n<li>Visitors subscribe or unsubscribe through Mailchimp (MC4WP).<\/li>\n<li>A WooCommerce order arrives (configurable trigger), an order status changes, products are added\/removed from the cart, or stock runs low.<\/li>\n<li>WP Activity Log (WSAL) records an event.<\/li>\n<\/ul>\n\n<p>Highlights:<\/p>\n\n<ul>\n<li><strong>Multi-platform dispatcher<\/strong> \u2014 Telegram Bot API and Bale Bot API (~95% identical) share one abstract driver, so both platforms behave identically while keeping independent settings.<\/li>\n<li><strong>Markdown formatting<\/strong> \u2014 every message uses <code>parse_mode: Markdown<\/code> with safe escaping helpers for dynamic content.<\/li>\n<li><strong>Async queue<\/strong> \u2014 queued delivery via WP-Cron keeps checkout, forms and logins fast; messages flush in background batches.<\/li>\n<li><strong>Send test message<\/strong> button and a <strong>Find chat IDs<\/strong> tool right inside the settings, for each platform.<\/li>\n<li><strong>Diagnostics<\/strong> \u2014 a delivery log with timestamps, HTTP codes and API error details, plus a manual queue flush.<\/li>\n<li><strong>Proxy support<\/strong> \u2014 custom API endpoints per platform and an HTTP proxy for restricted hosting environments.<\/li>\n<li><strong>Privacy first<\/strong> \u2014 IP geolocation is strictly opt-in (off by default) and cached.<\/li>\n<li><strong>Developer friendly<\/strong> \u2014 <code>pulse_send_message<\/code> action, <code>pulse_notification_text<\/code> filter, and a <code>[pulse_notify]<\/code> shortcode.<\/li>\n<li><strong>AI ready<\/strong> \u2014 optional Abilities API \/ MCP integration so authorized agents can send notifications.<\/li>\n<\/ul>\n\n<h4>Setup<\/h4>\n\n<ol>\n<li>Create a bot: with @BotFather on Telegram, or @BotFather in Bale.<\/li>\n<li>Copy the bot token into the Pulse \u2192 Connections tab and enable the platform.<\/li>\n<li>Enter recipient chat IDs (users, groups or channels), or use the built-in <strong>Find chat IDs<\/strong> tool.<\/li>\n<li>Press <strong>Send test message<\/strong> \u2014 if it arrives, you are done.<\/li>\n<\/ol>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to third-party APIs to deliver notifications. No data is sent to these services unless you configure a bot token, enable a platform, and a notification event occurs (or you use the test-message \/ find-chat-IDs tools in the admin).<\/p>\n\n<h4>Telegram Bot API<\/h4>\n\n<p>Used to send notification messages to Telegram chats, groups, or channels you configure, and to list recent chats when you use <strong>Find chat IDs<\/strong>.<\/p>\n\n<p>When a notification is triggered (or you send a test message), the plugin sends the message text, your bot token, recipient chat ID(s), and any optional inline button URL to <code>api.telegram.org<\/code> (or your custom endpoint) over HTTPS.<\/p>\n\n<p>Telegram: <a href=\"https:\/\/telegram.org\/tos\">Terms of Service<\/a>, <a href=\"https:\/\/telegram.org\/privacy\">Privacy Policy<\/a>.<\/p>\n\n<h4>Bale Bot API<\/h4>\n\n<p>Used for the same purposes on the Bale messenger via <code>tapi.bale.ai<\/code> (or your custom endpoint).<\/p>\n\n<p>When a notification is triggered (or you use the admin tools), the plugin sends the message text, your bot token, recipient chat ID(s), and any optional inline button URL to the Bale Bot API over HTTPS.<\/p>\n\n<p>Bale: <a href=\"https:\/\/bale.ai\/terms\">Terms of Service<\/a>, <a href=\"https:\/\/bale.ai\/terms\">Privacy Policy<\/a> (privacy section within the terms page).<\/p>\n\n<h4>ip-api.com (optional)<\/h4>\n\n<p>Used only when you enable <strong>Enrich alerts with IP geolocation<\/strong> on the Delivery &amp; Privacy tab (disabled by default).<\/p>\n\n<p>When enabled and a notification includes an IP address, the visitor's public IP is sent to <code>ip-api.com<\/code> over HTTP to resolve city, region, country, and ISP. Results are cached locally in WordPress transients for one hour.<\/p>\n\n<p>ip-api.com: <a href=\"https:\/\/ip-api.com\/docs\/legal\">Terms of use and privacy<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>hamid<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin through the WordPress Plugins screen.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Open the <strong>Hamid Pulse<\/strong> menu in your dashboard and configure your Telegram and\/or Bale bot in the Connections tab.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20get%20a%20bot%20token%3F\"><h3>How do I get a bot token?<\/h3><\/dt>\n<dd><p>Telegram: open <a href=\"https:\/\/t.me\/botfather\">@BotFather<\/a>, send <code>\/newbot<\/code> and follow the prompts; the token looks like <code>123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ<\/code>.\nBale: open @BotFather inside Bale and repeat the same steps \u2014 Bale's Bot API mirrors Telegram's, and Pulse supports both through the same interface.<\/p><\/dd>\n<dt id=\"how%20do%20i%20find%20my%20chat%20id%3F\"><h3>How do I find my chat ID?<\/h3><\/dt>\n<dd><p>Send any message to your bot, then press <strong>Find chat IDs<\/strong> on the Pulse \u2192 Connections tab. Pulse lists every recent chat (users, groups, channels) with the exact ID to paste into the settings. Group IDs are negative numbers; public channels can be addressed as <code>@channelname<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20use%20telegram%20and%20bale%20at%20the%20same%20time%3F\"><h3>Can I use Telegram and Bale at the same time?<\/h3><\/dt>\n<dd><p>Yes. Enable both platforms in the Connections tab; each keeps its own token, recipients and endpoint, and every notification is mirrored to both.<\/p><\/dd>\n<dt id=\"will%20notifications%20slow%20down%20my%20site%3F\"><h3>Will notifications slow down my site?<\/h3><\/dt>\n<dd><p>No. Set <strong>Delivery mode<\/strong> to <em>Queued via WP-Cron<\/em> on the Delivery &amp; Privacy tab: outgoing messages are stored in a lightweight queue and flushed in background batches, so checkout, forms and logins never wait on the Bot API.<\/p><\/dd>\n<dt id=\"my%20host%20blocks%20api.telegram.org%20%E2%80%94%20what%20can%20i%20do%3F\"><h3>My host blocks api.telegram.org \u2014 what can I do?<\/h3><\/dt>\n<dd><p>Two options: set a <strong>Custom API endpoint<\/strong> per platform (any mirror that speaks the Bot API), or configure the HTTP <strong>proxy<\/strong> on the Delivery &amp; Privacy tab.<\/p><\/dd>\n<dt id=\"can%20other%20plugins%20send%20notifications%3F\"><h3>Can other plugins send notifications?<\/h3><\/dt>\n<dd><p>Yes \u2014 fire the public action from anywhere:<\/p>\n\n<pre><code>do_action( 'pulse_send_message', 'Hello from my plugin!' );\n<\/code><\/pre>\n\n<p>With an inline button: <code>do_action( 'pulse_send_message', 'New order!', 'View', 'https:\/\/example.com\/order\/1' );<\/code>\nWith a recipient override: <code>do_action( 'pulse_send_message', 'Hello', '', '', '123456789' );<\/code><\/p>\n\n<p>The message text can be adjusted with the <code>pulse_notification_text<\/code> filter.<\/p><\/dd>\n<dt id=\"is%20there%20a%20shortcode%3F\"><h3>Is there a shortcode?<\/h3><\/dt>\n<dd><p>[pulse_notify message=\"Backup finished\" site=\"1\" ip=\"1\"] \u2014 attributes: <code>message<\/code> (required), <code>site<\/code>, <code>ip<\/code>, <code>platform<\/code> (<code>telegram<\/code>, <code>bale<\/code> or <code>both<\/code>), <code>button_label<\/code>, <code>button_url<\/code>. Tokens cannot be overridden from shortcodes by design.<\/p><\/dd>\n<dt id=\"does%20pulse%20collect%20my%20data%3F\"><h3>Does Pulse collect my data?<\/h3><\/dt>\n<dd><p>No telemetry, no tracking, no phoning home. IP geolocation is off by default; when you enable it, IPs are looked up at ip-api.com and cached locally for one hour. Please make sure your own privacy policy covers this.<\/p><\/dd>\n<dt id=\"does%20it%20support%20ai%20agents%20%2F%20mcp%3F\"><h3>Does it support AI agents \/ MCP?<\/h3><\/dt>\n<dd><p>Optionally. With the <a href=\"https:\/\/github.com\/WordPress\/abilities-api\">Abilities API<\/a> and <a href=\"https:\/\/github.com\/WordPress\/mcp-adapter\">MCP Adapter<\/a> plugins installed, the \"Send Pulse notification\" ability is exposed at <code>\/wp-json\/pulse\/mcp<\/code> for authorized agents (administrator capability required).<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20woocommerce%20hpos%3F\"><h3>Is it compatible with WooCommerce HPOS?<\/h3><\/dt>\n<dd><p>Yes. All order data is read and written through the WC_Order CRUD API.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Normalize PHP file line endings for compatibility with plugin review tools.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Restrict uninstall cleanup to this plugin's explicitly named options and scheduled event.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Rename the display name and text domain to use the distinctive Hamid identifier.<\/li>\n<li>Request the new WordPress.org plugin slug <code>hamid<\/code>.<\/li>\n<li>Document third-party services (Telegram, Bale, ip-api.com) in the readme.<\/li>\n<li>Exclude WordPress.org directory assets (banners\/icons) from the plugin package.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix missing translators comment for the plural chat-count string (WordPress.WP.I18n.MissingTranslatorsComment).<\/li>\n<li>Silence false-positive nonce verification warning in the AJAX connection tester (nonce is verified in verify_request()).<\/li>\n<li>Silence direct-database-query warnings in uninstall.php (intentional one-off cleanup query).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Multi-platform dispatcher for Telegram and Bale with isolated per-platform settings.<\/li>\n<li>Markdown-formatted messages with safe escaping helpers.<\/li>\n<li>Async WP-Cron delivery queue with manual flush and delivery diagnostics.<\/li>\n<li>Notifications for posts, users, sign-ins, comments, forms (CF7, WPForms, Ninja Forms, Elementor Pro, MC4WP), WooCommerce and WP Activity Log.<\/li>\n<li>Built-in connection tester and chat ID finder per platform.<\/li>\n<li>Custom API endpoints and HTTP proxy support.<\/li>\n<li>Optional Abilities API \/ MCP integration.<\/li>\n<li><code>[pulse_notify]<\/code> shortcode and <code>pulse_send_message<\/code> action for developers.<\/li>\n<\/ul>","raw_excerpt":"Instant WordPress notifications delivered to Telegram and Bale messengers \u2014 posts, users, comments, forms, WooCommerce and more.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/361820","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=361820"}],"author":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mrhamidreza"}],"wp:attachment":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=361820"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=361820"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=361820"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=361820"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=361820"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=361820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}