Title: Team Messenger
Author: Alireza Aminzadeh
Published: <strong>May 15, 2026</strong>
Last modified: May 15, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/team-messenger.svg)

# Team Messenger

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

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

 * [Details](https://wordpress.org/plugins/team-messenger/#description)
 * [Reviews](https://wordpress.org/plugins/team-messenger/#reviews)
 *  [Installation](https://wordpress.org/plugins/team-messenger/#installation)
 * [Development](https://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 combines direct (1:1) chats, group rooms, optional end-to-end encryption
for private threads, media uploads with administrator-controlled policies, presence,
notification badges, pinned messages, and dedicated UIs on both the public site 
and in wp-admin.

Technical details and changelog notes may be published on the plugin support page
or 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`), with pagination for message history.
 2.  Optional end-to-end encryption (E2E) for direct messages: clients can exchange
     messages flagged as encrypted; public keys are stored per user via dedicated REST
     endpoints (`/keys`). Group chats remain readable on the server (plaintext server-
     side).
 3.  Full group chat lifecycle: create, read, update, and delete groups; set name, 
     description, and a group avatar; list members; add or remove members; promote 
     or demote roles via PATCH on members.
 4.  Rich media in chats: images, video, and audio attachments; 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 with independent size and format rules 
     enforced on the server.
 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 (e.g. JPEG, PNG, GIF, WebP).
     Limits are exposed to the client as hints; the server performs 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), with
     authenticated download through `/media/download/{file}` for the private storage
     path.
 8.  “Saved messages” (self-chat): a personal notebook thread with the current user
     as both sides, for notes and files.
 9.  Recent conversations: when no search query is sent, the user list prioritizes 
     people you have recently messaged, without exposing the entire user directory.
 10. Privacy-conscious user search: requires at least three characters and returns 
     a capped number of results.
 11. Presence (online / last seen): clients send a throttled heartbeat to `POST /presence`;`
     last_seen` and `is_online` are returned in user lists only when the viewer has
     shared DM 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` supports `scope`: `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 jump to 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), 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`); pin/unpin from the floating widget, `[
     team_messenger_web_chat]`, admin messenger, and dashboard widgets; a pinned strip
     shows a snippet and scroll-to-message; pins clear 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(
     API supports edit/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: floating chat widget on the front end; full-page `[team_messenger_web_chat]`
     shortcode with configurable HTML fallback for guests; dedicated admin “Messenger”
     screen; optional floating FAB on all wp-admin screens (toggle in settings, respects
     per-user “hide admin chat”); admin bar badges; two dashboard widgets for admins.
 20. Customization in settings: primary accent color, widget corner placement, welcome
     text, shortcode guest content (visual/HTML editor), and site-wide “show messenger
     on all wp-admin screens.”
 21. Per-user preferences on the user profile: optionally hide front-end chat (widget
     + shortcode UI) and/or all wp-admin chat (floating messenger, full messenger page,
     admin bar nodes, 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 via 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}` فقط برای کاربر
احراز هویت‌شده.

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

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

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

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

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

۱۳. نوار ابزار وردپرس: دو گره جدا برای چت شخصی و گروهی با شمارنده و منوی کشویی (
پolling برای پیش‌نمایش؛ پاک‌سازی محدوده‌ای). غیرمدیر به خانه؛ مدیر با `manage_options`
به پیام‌رسان کامل.

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

۱۵. پیام پین‌شده: یک پین برای هر گفتگوی دو نفره و یک پین برای هر گروه؛ در ویجت، 
شورت‌کد، پیام‌رسان ادمین و داشبورد؛ نوار پین با اسکرول به پیام؛ با حذف پیام، پین
هم حذف می‌شود.

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

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

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

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

۲۰. شخصی‌سازی در تنظیمات: رنگ اصلی، گوشهٔ ویجت، متن خوش‌آمد، محتوای مهمان شورت‌کد،
و روشن/خاموش بودن پیام‌رسان در تمام صفحات پنل.

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

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

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

## Installation

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

## FAQ

### Does this work for guests?

The chat UI is for logged-in users. Shortcodes can show configurable fallback content
for visitors.

### Where are translations?

Language packs are loaded automatically when hosted on WordPress.org. The `languages`
folder ships `.pot` and community `.po` files.

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

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

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

فایل‌های ترجمه در پوشهٔ `languages` قرار دارند؛ برای 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

#### 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 **1.0.8**
 *  Last updated **13 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **6.9.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [chat](https://wordpress.org/plugins/tags/chat/)[encryption](https://wordpress.org/plugins/tags/encryption/)
   [groups](https://wordpress.org/plugins/tags/groups/)[messaging](https://wordpress.org/plugins/tags/messaging/)
   [team](https://wordpress.org/plugins/tags/team/)
 *  [Advanced View](https://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/)