Title: Team Messenger
Author: Alireza Aminzadeh
Published: <strong>15 Bealtaine, 2026</strong>
Last modified: 28 Lúnasa, 2026

---

Search plugins

![](https://ps.w.org/team-messenger/assets/banner-772x250.png?rev=3670543)

![](https://ps.w.org/team-messenger/assets/icon-256x256.png?rev=3670543)

# Team Messenger

 By [Alireza Aminzadeh](https://profiles.wordpress.org/syeedalireza/)

[Download](https://downloads.wordpress.org/plugin/team-messenger.2.0.1.zip)

 * [Details](https://ga.wordpress.org/plugins/team-messenger/#description)
 * [Reviews](https://ga.wordpress.org/plugins/team-messenger/#reviews)
 *  [Installation](https://ga.wordpress.org/plugins/team-messenger/#installation)
 * [Development](https://ga.wordpress.org/plugins/team-messenger/#developers)

 [Support](https://wordpress.org/support/plugin/team-messenger/)

## Description

Team Messenger is a WordPress plugin that adds secure, real-time messaging for logged-
in users. It includes one-to-one chats, group rooms, optional end-to-end encryption
for private threads, media uploads with administrator-controlled policies, presence,
notification badges, pinned messages, and dedicated interfaces on both the public
site and in wp-admin.

Technical details and changelog notes may be published on the plugin support page
or in the documentation as they are updated.

### English — Numbered feature list

 1.  Real-time direct messaging between logged-in WordPress users over the REST API(`
     team_messenger/v1`), including pagination for message history.
 2.  Optional end-to-end encryption (E2E) for direct messages: clients can exchange
     messages flagged as encrypted, and public keys are stored per user through dedicated
     REST endpoints (`/keys`). Group chats remain readable on the server (plaintext
     on the server side).
 3.  Full group-chat lifecycle: create, read, update, and delete groups; set a name,
     description, and group avatar; list members; add or remove members; and promote
     or demote roles with a PATCH request on members.
 4.  Rich media in chats: image, video, and audio attachments, plus optional voice 
     messages recorded in the browser (MediaRecorder, typically WebM/WebA) with server-
     side MIME handling for reliable uploads.
 5.  Two upload contexts on `/media/upload`: `chat` for conversation attachments and`
     avatar` for group profile images. Each context has independent size and format
     rules, which the server enforces.
 6.  Administrator-configurable media policy: separate maximum file sizes for chat (
     0.1–100 MB) and group avatars (0.1–50 MB); toggles for allowed chat categories(
     image / video / audio) and allowed avatar formats (for example JPEG, PNG, GIF,
     WebP). Limits are sent to the client as hints; the server performs the final validation.
 7.  Flexible storage for uploaded files: attachments can live in the WordPress Media
     Library or in a plugin-protected directory (`.htaccess` where applicable). Private-
     path files are downloaded through an authenticated `/media/download/{file}` request.
 8.  “Saved messages” (self-chat): a personal notebook thread in which the current 
     user is both sides, for notes and files.
 9.  Recent conversations: when no search query is sent, the user list prioritizes 
     people you have messaged recently and does not expose the entire user directory.
 10. Privacy-conscious user search: at least three characters are required, and the
     number of results is capped.
 11. Presence (online / last seen): clients send a throttled heartbeat to `POST /presence`.
     The `last_seen` and `is_online` fields appear in user lists only when the viewer
     has shared direct-message history with that user or shares a group (privacy-preserving).
 12. Notifications: `GET /notifications/counts` returns separate counts and text previews
     for new personal and group activity since the last acknowledgment. `POST /notifications/
     ack` accepts a `scope` of `all`, `personal`, or `group`.
 13. WordPress admin bar integration: when the toolbar is visible, separate nodes show
     personal and group chat badges. Dropdowns load preview snippets (periodic polling)
     and allow clearing notifications by scope. Non-administrators link to the site
     home; users with `manage_options` can open the full messenger screen.
 14. Dashboard widgets (administrators): two WordPress Dashboard widgets—personal (
     1:1) and group—provide inline chat with the same REST capabilities as the main
     messenger (including pins and upload limits). They are visible only to users with`
     manage_options` who have not disabled admin chat.
 15. Pinned messages: one pin per direct thread (stored in `team_messenger_direct_pins`)
     and one per group (`pinned_message_id`). You can pin or unpin from the floating
     widget, `[team_messenger_web_chat]`, the admin messenger, and the dashboard widgets.
     A pinned strip shows a snippet and scrolls to the message. Pins are cleared if
     the underlying message is deleted.
 16. Read state: opening a direct thread marks incoming messages from the partner as
     read (`is_read`). For groups, per-user last-read timestamps sync when the thread
     is opened. Your own outgoing group messages can show read receipts (“sent” vs “
     read”) when all other members have caught up.
 17. Message lifecycle: edit or soft-delete your own messages in direct and group threads(
     the API supports edit and delete on owned messages).
 18. Data retention: a daily scheduled event permanently removes soft-deleted direct
     and group messages whose `deleted_at` is older than 30 days (GDPR-oriented housekeeping).
 19. Multiple surfaces: a floating chat widget on the front end; a full-page `[team_messenger_web_chat]`
     shortcode with configurable HTML fallback for guests; a dedicated admin “Messenger”
     screen; an optional floating FAB on all wp-admin screens (toggle in settings, 
     respects the per-user “hide admin chat” setting); admin bar badges; and two dashboard
     widgets for administrators.
 20. Customization in settings: primary accent color, widget corner placement, welcome
     text, shortcode guest content (visual/HTML editor), and a site-wide “show messenger
     on all wp-admin screens” option.
 21. Per-user preferences on the user profile: optionally hide front-end chat (widget
     and shortcode UI) and/or all wp-admin chat (floating messenger, full messenger
     page, admin bar nodes, and dashboard widgets). Shortcode pages show a short notice
     if frontend chat is disabled for that user.
 22. Abuse protection: rate limiting on sending messages and on creating groups, to
     reduce spam and overload.
 23. Internationalization: text domain `team-messenger`. Persian (`fa_IR`) and other
     translations can ship in the `languages` folder. English is the source language.

### فارسی — فهرست شماره‌دار امکانات

۱. پیام‌رسانی مستقیم (یک‌به‌یک) بین کاربران واردشدهٔ وردپرس از طریق REST API با 
فضای نام `team_messenger/v1` و صفحه‌بندی تاریخچهٔ پیام.

۲. رمزنگاری سرتاسری اختیاری برای گفتگوی خصوصی: می‌توان پیام را با پرچم رمزشده ذخیره
کرد؛ کلیدهای عمومی از طریق endpointهای `/keys` ذخیره و بازیابی می‌شوند. در گفتگوی
گروهی، متن روی سرور به‌صورت متن عادی قابل پردازش است.

۳. چرخهٔ کامل مدیریت چت گروهی: ایجاد، ویرایش و حذف گروه؛ تنظیم نام، توضیحات و آواتار
گروه؛ فهرست اعضا؛ افزودن یا حذف عضو؛ و تغییر نقش با PATCH روی عضو.

۴. رسانهٔ غنی در گفتگو: تصویر، ویدیو و صوت؛ پیام صوتی با ضبط در مرورگر (معمولاً 
WebM/WebA) و نرمال‌سازی MIME در سمت سرور.

۵. دو زمینهٔ آپلود در `/media/upload`: `chat` برای پیوست گفتگو و `avatar` برای تصویر
پروفایل گروه؛ هر کدام سقف حجم و فرمت مستقل دارند و اعتبارسنجی نهایی در سرور انجام
می‌شود.

۶. سیاست رسانه از پنل مدیر: حداکثر حجم جداگانه برای چت (۰٫۱ تا ۱۰۰ مگابایت) و آواتار
گروه (۰٫۱ تا ۵۰ مگابایت)؛ امکان روشن یا خاموش کردن دسته‌های مجاز چت و فرمت‌های مجاز
آواتار. اعداد به‌صورت راهنما به کلاینت ارسال می‌شوند و تصمیم نهایی با سرور است.

۷. ذخیره‌سازی انعطاف‌پذیر: فایل‌ها می‌توانند در کتابخانهٔ رسانهٔ وردپرس یا در پوشهٔ
محافظت‌شدهٔ افزونه (با `.htaccess` در صورت امکان) قرار بگیرند. برای مسیر اختصاصی،
دانلود فقط از طریق `/media/download/{file}` و برای کاربر احراز هویت‌شده انجام می‌شود.

۸. «پیام‌های ذخیره‌شده» (چت با خود): فضای شخصی برای یادداشت و فایل که کاربر فعلی
هر دو طرف گفتگو است.

۹. گفتگوهای اخیر: وقتی جستجویی ارسال نشده باشد، فهرست کاربران کسانی را در اولویت
قرار می‌دهد که اخیراً با آن‌ها پیام رد و بدل کرده‌اید و کل دایرکتوری کاربران را 
نمایش نمی‌دهد.

۱۰. جستجوی کاربر با رعایت حریم خصوصی: حداقل سه کاراکتر لازم است و تعداد نتایج محدود
است.

۱۱. حضور (آنلاین / آخرین فعالیت): کلاینت ضربان کنترل‌شده (throttled) به `POST /presence`
می‌فرستد. فیلدهای `last_seen` و `is_online` فقط وقتی در فهرست کاربران دیده می‌شوند
که بیننده سابقهٔ پیام خصوصی مشترک یا عضویت در یک گروه مشترک با آن کاربر داشته باشد.

۱۲. اعلان‌ها: `GET /notifications/counts` شمارنده و پیش‌نمایش متن فعالیت شخصی و 
گروهی را از زمان آخرین تأیید برمی‌گرداند. `POST /notifications/ack` محدودهٔ `all`،`
personal` یا `group` را می‌پذیرد.

۱۳. یکپارچگی با نوار ابزار وردپرس: وقتی نوار ابزار نمایان است، دو گره جدا شمارندهٔ
چت شخصی و گروهی را نشان می‌دهند. منوهای کشویی پیش‌نمایش را با polling دوره‌ای بارگذاری
می‌کنند و امکان پاک‌سازی اعلان‌ها بر اساس محدوده را دارند. کاربران غیرمدیر به صفحهٔ
خانه لینک می‌شوند؛ کاربران دارای `manage_options` می‌توانند به صفحهٔ کامل پیام‌رسان
بروند.

۱۴. ویجت‌های پیشخوان (مدیران): دو ویجت جداگانه در پیشخوان وردپرس—گفتگوی شخصی (یک‌به‌یک)
و گروهی—همان قابلیت‌های REST پیام‌رسان اصلی را دارند (از جمله پین و محدودیت آپلود).
فقط برای کاربران دارای `manage_options` که چت مدیریت را غیرفعال نکرده‌اند نمایش 
داده می‌شوند.

۱۵. پیام پین‌شده: یک پین برای هر گفتگوی دونفره و یک پین برای هر گروه. پین و برداشتن
پین از ویجت شناور، شورت‌کد `[team_messenger_web_chat]`، پیام‌رسان مدیریت و ویجت‌های
پیشخوان امکان‌پذیر است. نوار پین تکه‌ای از متن را نشان می‌دهد و به پیام اسکرول می‌کند.
اگر پیام اصلی حذف شود، پین نیز برداشته می‌شود.

۱۶. وضعیت خوانده‌شدن: با باز کردن گفتگوی خصوصی، پیام‌های ورودی طرف مقابل به‌صورت`
is_read` علامت می‌خورند. در گروه، مهر زمانی آخرین بازدید هر کاربر همگام می‌شود. 
برای پیام‌های خروجی خودتان می‌توان رسید «همه خواندند» را وقتی سایر اعضا همگام شده‌اند
نشان داد.

۱۷. چرخهٔ پیام: ویرایش یا حذف نرم پیام‌های خودتان در گفتگوی خصوصی و گروهی از طریق
API.

۱۸. نگهداری داده: یک رویداد زمان‌بندی‌شدهٔ روزانه پیام‌های حذف‌شدهٔ نرم مستقیم و
گروهی را که `deleted_at` آن‌ها قدیمی‌تر از ۳۰ روز است برای همیشه پاک می‌کند (خانه‌تکانی
با رویکرد GDPR).

۱۹. چندین رابط: ویجت شناور در سایت؛ شورت‌کد تمام‌صفحهٔ `[team_messenger_web_chat]`
با محتوای HTML قابل تنظیم برای مهمان؛ صفحهٔ اختصاصی «پیام‌رسان» در مدیریت؛ دکمهٔ
شناور اختیاری در تمام صفحات wp-admin (تنظیم سراسری و احترام به خاموش بودن چت مدیریت
برای هر کاربر)؛ نشان‌های نوار ابزار؛ و دو ویجت پیشخوان برای مدیران.

۲۰. شخصی‌سازی در تنظیمات: رنگ اصلی تأکید، محل گوشهٔ ویجت، متن خوش‌آمدگویی، محتوای
مهمان شورت‌کد (ویرایشگر دیداری/HTML)، و گزینهٔ سراسری «نمایش پیام‌رسان در تمام صفحات
wp-admin».

۲۱. ترجیحات هر کاربر در پروفایل: امکان پنهان کردن چت سایت (ویجت و رابط شورت‌کد) 
و/یا همهٔ چت wp-admin (پیام‌رسان شناور، صفحهٔ کامل پیام‌رسان، گره‌های نوار ابزار
و ویجت‌های پیشخوان). اگر چت فرانت‌اند برای آن کاربر خاموش باشد، صفحهٔ شورت‌کد یک
اعلان کوتاه نشان می‌دهد.

۲۲. محافظت در برابر سوءاستفاده: محدودیت نرخ ارسال پیام و ایجاد گروه برای کاهش هرزنامه
و بار اضافی.

۲۳. چندزبانه: دامنهٔ متن `team-messenger`؛ ترجمه‌های فارسی (`fa_IR`) و سایر زبان‌ها
می‌توانند از پوشهٔ `languages` عرضه شوند؛ زبان مبدأ متن‌ها انگلیسی است.

## Installation

 1. Upload the plugin files to `/wp-content/plugins/team-messenger`, or install the
    ZIP from Plugins  Add New.
 2. Activate the plugin from the **Plugins** screen.
 3. If needed, configure the options under the plugin’s **Settings** submenu.

## FAQ

### Does this work for guests?

The chat interface is for logged-in users. Shortcodes can display configurable fallback
content for visitors.

### Where are translations?

Language packs load automatically when the plugin is hosted on WordPress.org. The`
languages` folder includes a `.pot` file and community `.po` files.

### آیا برای مهمان‌ها چت فعال است؟

رابط چت مخصوص کاربران واردشده است. در شورت‌کد می‌توان محتوای جایگزین قابل تنظیم 
برای بازدیدکنندگان نمایش داد.

### ترجمه‌ها کجاست؟

بسته‌های زبان هنگام میزبانی روی WordPress.org به‌صورت خودکار بارگذاری می‌شوند. فایل‌های
ترجمه در پوشهٔ `languages` قرار دارند (`.pot` و `.po` جامعه)؛ برای fa_IR نیز پشتیبانی
در نظر گرفته شده است.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Team Messenger” is open source software. The following people have contributed 
to this plugin.

Contributors

 *   [ Alireza Aminzadeh ](https://profiles.wordpress.org/syeedalireza/)

[Translate “Team Messenger” into your language.](https://translate.wordpress.org/projects/wp-plugins/team-messenger)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/team-messenger/), check
out the [SVN repository](https://plugins.svn.wordpress.org/team-messenger/), or 
subscribe to the [development log](https://plugins.trac.wordpress.org/log/team-messenger/)
by [RSS](https://plugins.trac.wordpress.org/log/team-messenger/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.0.1

 * Compatibility: Confirmed with WordPress 7.1. The plugin directory “Tested up 
   to” value is now 7.1.

#### 2.0.0

 * Documentation: README.md and readme.txt wording polished in English and Persian,
   without removing existing features, FAQ items, or version history.
 * Chat UX: History scroll no longer snaps back to the latest message; Persian and
   other underscore locales (for example `fa_IR`) no longer break message rendering;
   sending a message no longer leaves the conversation.
 * Versioning: Major release for the completed 1.x feature set, now published as
   2.0.0.

#### 1.1.0

 * Access: Optional role restriction for who can use Team Messenger (the default
   remains all logged-in users). Enforced in REST and in all chat interfaces.
 * Security: Sending a message now rejects unknown recipients and attachments that
   were not uploaded through this plugin.
 * Privacy: User search no longer matches email addresses.
 * GDPR: Registered personal-data exporters and erasers. Uninstall now removes all
   plugin options, user meta, tables, cron events, and the private upload directory.
 * Translations: `load_plugin_textdomain` loads the bundled `languages` folder for
   local ZIP installs (including fa_IR).
 * Unread: Per-conversation unread counts for personal and group threads; opening
   a thread marks that thread as read. Admin-bar totals still work. The existing
   notification ack API is unchanged.
 * Notifications: Optional desktop (browser) notifications, gated by a widget setting
   and requested only after a user gesture.
 * Chat: Reply/quote on direct and group messages; in-conversation search; optional
   document attachments (PDF, Office, TXT, ZIP).

#### 1.0.9

 * Fixed: Chat views no longer jump back to the latest message after 1–2 seconds
   when you scroll up to read history. Polling now keeps the current scroll position
   unless you were already near the bottom or just sent a message.
 * Fixed: Messages failed to render on WordPress locales that use underscore tags(
   for example `fa_IR`). JavaScript Intl APIs require BCP 47 tags (`fa-IR`). The
   plugin now converts the locale before calling `toLocaleTimeString` / `toLocaleString`,
   with a safe `en-US` fallback.
 * Fixed: Pressing Enter in the message field could submit a surrounding theme or
   WordPress form and leave the conversation. Enter is now stopped from bubbling
   so sending a message keeps the current chat open.

#### 1.0.8

 * Security: Replaced the generic `check_permission` (logged-in only) on the `/media/
   download/{file}` REST endpoint with a dedicated `check_media_download_permission`
   callback that performs full ownership verification before serving any file. The
   check confirms the requesting user is either: (a) the sender or receiver of a
   direct message containing the file, (b) a member of a group whose group message
   contains the file, or (c) a member of the group whose avatar is that file. Site
   administrators (`manage_options`) retain access for moderation purposes. Non-
   matching requests receive a 403 response.

#### 1.0.7

 * Fixed: Plugin URI updated to the correct public documentation page.
 * Fixed: Added plugin owner (syeedalireza) to the Contributors list in readme.txt.
 * Fixed: Removed remote CDN dependency for the Vazirmatn font (jsDelivr); all font
   files (woff2) are now bundled locally inside the plugin.
 * Fixed: Removed inline `<style>` block from the admin global chat partial; critical
   FAB styles are now output via `wp_add_inline_style()` attached to the enqueued
   stylesheet handle.
 * Fixed: Removed `require_once wp-admin/includes/media.php` that was included without
   any subsequent call to a function from that file, violating the core-file loading
   exception rule.
 * Fixed: Shortcode callback `render_web_chat_shortcode` now wraps the guest fallback
   output in `wp_kses_post()` after `do_shortcode()` execution to ensure all returned
   markup is properly escaped.
 * Verified: Plugin Check (PCP) reports no errors or warnings on a clean WordPress
   installation with WP_DEBUG enabled.

#### 1.0.6

 * Maintenance and Plugin Check compliance improvements.

## Meta

 *  Version **2.0.1**
 *  Last updated **1 mhí amháin ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/team-messenger/)
 * Tags
 * [chat](https://ga.wordpress.org/plugins/tags/chat/)[encryption](https://ga.wordpress.org/plugins/tags/encryption/)
   [groups](https://ga.wordpress.org/plugins/tags/groups/)[messaging](https://ga.wordpress.org/plugins/tags/messaging/)
   [team](https://ga.wordpress.org/plugins/tags/team/)
 *  [Advanced View](https://ga.wordpress.org/plugins/team-messenger/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/team-messenger/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/team-messenger/reviews/)

## Contributors

 *   [ Alireza Aminzadeh ](https://profiles.wordpress.org/syeedalireza/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/team-messenger/)