Help center support eXpress

We have collected answers to all the most popular questions to make it easy and convenient for you to use eXpress. If you do not find the answer to your question, please contact our support team.

Chats, Channels & Threads

Classification of Chats and Their Properties

The following types of chats are available in the app:
  • Personal — a chat with one user.
  • Group — for communication between multiple users, where all participants can write and see each other.
  • Channels — intended for publishing news; only administrators can write and see participants.
  • Rooms — group chats that save correspondence and materials from group calls and conferences.
  • Chat "Saved Messages" — intended for sending messages to yourself. It can be enabled or restored after deletion in the app settings. Any message can be sent to this chat via the context menu.
  • Discussions — the ability to comment on messages in a group chat or channel.
  • Global chats — special chats visible to all users of a specific server.
By participant composition, chats are divided into:
  • Personal with contacts from the phone book.
  • Personal with corporate contacts.
  • Group with contacts from the phone book.
  • Group with corporate contacts.
  • Mixed chats with participants from servers of different organizations.
  • Personal chats with chatbots.
To determine the type of chat by participant composition:
  • Look at the icon next to the chat name:
    • Green globe — a chat with external users on a public server (RTS).
    • Blue globe — a chat with users of corporate servers (CTS) from different organizations.
    • Blue-green globe — a mixed chat with corporate and external users.
    • Blue briefcase — a chat with users from the current or trusted corporate server.
    • Blue megaphone — a channel with corporate users.
    • Blue-green megaphone — a channel with corporate and external users.
    • Blue bot — a personal chat with a corporate chatbot.
  • Open Routing in the chat properties.
  • Review the list of chat participants: participants are grouped by server affiliation.

Comparison of Group Chat and Channel

  1. In a group chat, all participants can write; in a channel, only administrators can. A channel is convenient for publishing news, while a group chat is for communication among all participants.
    In channels with more than 256 participants, the administrator will see a prompt before sending a message: "Publish? Are you sure you want to publish the message?".
  2. In a group chat, any participant can view the chat composition and see system messages; in a channel, only the administrator can. Regular subscribers of the channel cannot see other participants.
  3. For regular participants, the sender of a message in a channel is the channel itself; for administrators, it is a specific user.
A group chat cannot be transformed into a channel, or vice versa.

Storage and Deletion of Chats

All chats are stored on the server in encrypted form. This ensures that data will not be lost, even if you end the session or reinstall the app — simply log in again, and the chats will load from the server to your device. On the device, chats are also stored in encrypted storage.
Chats are stored on the servers of each participant in the conversation. For example, if a participant from a new corporate server is added to a group chat, the chat will be copied to that server.
After logging back in, when opening any chat, the last 50 (web/desktop) or 100 messages/system messages (mobile app) will load. To load older history, scroll up in the chat.

Access to chats will be lost only in the following cases: Chats can only be deleted locally from the device (using the Delete Chat command in the chat context menu); they cannot be deleted from the server. To save server space, the system administrator can configure automatic file cleanup for files shared in chats. Individual messages can be deleted from the server: "for everyone" or on a timer in privacy mode.

Support for Data Leak Prevention Systems (DLPS)

If your organization uses a data leak prevention policy, you may see clock icons on messages: yellow — the information is being checked for leaks, red — the message failed the check and cannot be sent. For details, contact your organization's support.

Limitations on the Number of Participants in a Group Chat or Channel

In chats with more than 128 participants, only administrators are displayed in the participant list. To find other participants, use the search field.

If the corporate server is configured to create chats and channels with end-to-end encryption enabled by default, the created chat will have a limit of 128 participants. To remove this limitation, the chat administrator must disable End-to-End Encryption in the chat properties or contact the corporate server administrator. End-to-end encryption can only be re-enabled if the number of participants does not exceed 128 users.

In chats with end-to-end encryption disabled, there is a technical limit of 8000 users due to performance constraints. This limit will be increased in the future.

Catalog, Open and Closed Group Chats and Channels

In the Catalog section above the chat list, there are open group chats, channels, and corporate bots. They are available to all users of the corporate server.

More about open and closed group chats and channels:
  • Open chats and channels, available in the corporate chat catalog. These are corporate chats and channels that any registered user on the server can join via the Catalog section. Only the corporate server administrator can create an initially open chat or channel or convert a closed chat or channel to open.
    For Administrators: How to Make a Chat or Channel Open on the Server In the corporate server admin panel:
    • To create an open chat or channel, open the Open Chats section and click the Create button. The first participant of an open chat cannot be added in the admin panel. The first participant must join via the client app through the catalog.
    • To convert a closed chat or channel to open, find the chat in the Chats section and click the Convert to Open Chat button. When converting a closed chat or channel to open, end-to-end encryption is automatically disabled. If necessary, it can be re-enabled later, but with consideration of participant limitations.
    Chats are loaded onto the servers of each participant in the conversation. Therefore, to make a chat open on multiple servers, ensure that the chat has at least one user from the desired server. If not, add at least one such user to the chat.
  • Closed chats and channels. Corporate chats and channels are created as closed by default. Personal chats are always closed. Closed group chats and channels are intended for a limited audience and are therefore not available in the corporate chat catalog. New users are added to a closed group chat or channel by the chat administrator manually or via an invitation link. The corporate server administrator can make an open chat or channel closed in the admin panel.
    For Administrators: How to Close a Chat or Channel on the Server To close an open chat, in the admin panel, open the Open Chats section and click the trash icon next to the desired open chat, or in the Chats section, find the chat and on its page, click the Remove from Open Chats button.

Chat and Channel Administrators

The creator of a group chat or channel can appoint other participants as administrators. Administrators, like the chat creator, can manage the participant list, change chat or channel information, and see channel subscribers. Avatars of administrator participants in the mention list (@) are marked with a star icon.

The creator or another chat administrator can revoke administrator rights from a participant via the participant's context menu (web/desktop) or by long-pressing them in the participant list (mobile clients).
For Administrators: Managing Chat Administrator Rights on the Server You can manage chat administrator rights in the admin panel: in the Chats section, find the desired chat > open Users > toggle true and false in the Administrator column for the desired users. Note that for this, the chat must have an administrator registered on this corporate server.

Routing — How Traffic Flows in a Chat

Routing (routing scheme) is a visual schematic representation of message exchange routes between users in any type of chat. To view the routing scheme, open the chat properties and select Routing.

The scheme is generated relative to the chat participant viewing it. Lines on the diagram indicate paths from the server of the current user to the servers of other chat participants. Trusted corporate servers are connected by lines to each other.

Thus, chat routing allows you to see through which servers traffic is routed in a particular chat.

If the chat is within one server or between trusted servers, traffic will bypass the public regional transport server (RTS). If the chat is created between non-trusted servers or includes at least one user from an external server, traffic will go through the public regional transport server.

Global Chats

The following types of global chats exist:
  • Federated Global Chat eXpress. Named "eXpress." Contains news about new releases of eXpress; in the future, it will display confirmation codes and allow contacting support. Located on RTS and will be available to all users registered on RTS or whose corporate server (CTS) is connected to RTS. Currently, this global chat is disabled. The ETS administrator can disable the federated eXpress chat in the global chat settings on ETS.
  • Global Chat ETS. Named as specified by the administrator. May contain news about new versions of the organization's branded ETS client app; in the future, it will display confirmation codes and allow contacting support. Located on ETS and available to all users whose corporate server is connected to ETS.
  • Corporate Global Chat on CTS. Named as specified by the administrator. Contains information intended for all users of the corporate server. Located on CTS and available to all users of the corporate server.
If the server administrator enables a global chat, it will immediately become available in the general chat list for the relevant users. A global chat is a closed chat (not displayed in the corporate chat catalog). Which global chat is visible to whom among other chats:
  • RTS users see only one global chat — the federated one located on RTS.
  • CTS users may see two global chats: one federated from RTS and one corporate from CTS (if configured by the administrator).
  • ECTS users may see two global chats (one from ETS, one from ECTS), only one of them, or neither (depending on administrator settings).
Global chats on RTS/ETS and CTS/ECTS are different entities and do not share a common history.

Only users appointed as administrators of the global chat bot in the corporate server admin panel can write in a global chat. See how to create a post in a global chat.

History and End-To-End Encryption

Chats with End-to-End Encryption Disabled and Enabled

Depending on the end-to-end encryption settings, chats may have different limitations and capabilities.

Chats with End-to-End Encryption Disabled

In such chats (shared chats), you can add more than 128 participants, and the history from the moment encryption is disabled becomes available to new participants. The correspondence is encrypted with a common server key, rather than individual keys of each participant. This allows increasing the number of participants and opening access to the history, but reduces the level of security: if an attacker gains access to the server, they can steal the common key and decrypt the correspondence. Chats with end-to-end encryption disabled are marked with an unlocked padlock icon on the avatar.

Attention! The history will become available to new participants only from the moment end-to-end encryption is disabled. For new participants to see the entire history, the chat creator or administrator must disable end-to-end encryption when creating the chat and add at least one participant from each corporate server.

Chats for group calls and conferences (rooms) have end-to-end encryption permanently disabled.

End-to-end encryption in channels can only be disabled through the app; the corporate server administrator does not have this capability.

Chats with End-to-End Encryption Enabled

In such chats, you can add no more than 128 participants, and the history is unavailable to new participants. The correspondence is encrypted with individual keys of each participant, making it highly secure. However, new participants will not be able to see old correspondence, as it was not encrypted with their keys. Re-encryption of old messages for new participants is not performed.

In personal chats, end-to-end encryption is always enabled and cannot be disabled.

The limit of 128 participants is due to hardware limitations of mobile devices. End-to-end encryption is resource-intensive, and exceeding this limit may cause device overheating and application crashes.

Opening History for New Participants

End-to-end encryption can be managed by the chat creator or administrator, as well as the corporate server administrator.

To remove the participant limit and open the history for new participants, disable end-to-end encryption in the chat: in the application, open the chat or channel properties and turn off the End-to-End Encryption toggle. This can also be done when adding a new participant. The corporate server administrator can convert the chat or channel to open or disable end-to-end encryption.

Chats are loaded onto the servers of each participant. If there were no participants from a specific server at the time of sending messages, those messages will not be available to the first participant from that server. Subsequent users will see the history from the moment the first participant is added.

A user will not be able to open a pinned message if they were added to the chat with encryption enabled after the message was sent.

For new participants to see the entire history, the chat or channel administrator must:
  • Add at least one user from all necessary servers.
    The first user from a server can even be a bot. For example, if an organization has two servers, and there is already a group chat or channel on the first server, adding a bot from the second server will ensure the history is loaded onto the second server for future users.
  • Disable end-to-end encryption when creating the chat.
For Administrators: Open History Indicator in "Chat JSON" In the admin panel, in the Chat JSON section, the sharedHistory:true indicator can be used to determine if the chat history is open. This indicator appears when end-to-end encryption is disabled in the admin panel (available only for chats).

Clearing Chat, Channel, or Thread History

The Clear Chat/Channel/Thread History command in the properties (card) of a chat, channel, or thread deletes all messages on all your devices, but not on the server — they remain there in encrypted form. The chat, channel, or thread will not disappear from the list but will move in time to the moment of creation. This may not happen immediately, as updating the local cache takes time.

To restore deleted history:
  1. Leave the chat or channel: delete it from the list or exit via the context menu.
  2. Return to the chat or channel via an invitation link or ask the administrator to add you back.
  3. The history will load from the server onto all your devices.

Working with Chats and Channels

How to Find the Desired Chat or Channel

To find a personal chat, enter the user's name (full name) in the search field above the chat list. The user will be found even if you do not have a personal chat with them but share a group chat.

To view open corporate chats, channels, and bots, select Catalog above the chat list.

If a chat or channel is closed, it will not appear in the catalog. To join a closed chat, you need an invitation from the creator or administrator. You can also contact the corporate server administrator to be added via the admin panel.

Creating a Personal Chat, Group Chat, or Channel

To create a personal chat, follow these steps:

App Version Actions
Android

1. Open the contact card from the Contacts section > click the message button.

2. Find the contact through chat search.

3. Tap on the "pencil" icon at the bottom right of the chat list > find the user > open their card > tap the message button.

iOS

1. Open the contact card from the Contacts section > click the message button.

2. Tap on the "pencil" icon in the top right corner > find the user > open their card > tap the message button.

Web/Desktop

1. Open the contact card from the Contacts section > click the message button.

2. Find the contact through chat search.

3. Click the "plus" icon in the top right corner > Personal Chat > select the contact.

To create a group chat or channel, follow these steps:

App Version Actions
Android Tap on the "pencil" icon at the bottom right of the chat list > select Group Chat or Channel > add users via search or create an invite link > specify the chat name.
iOS Tap on the "pencil" icon in the top right corner > then follow the same steps.
Web/Desktop Click the "plus" icon in the top right corner > then follow the same steps.

How to Create an Open Chat Available in the Corporate Catalog

A corporate server administrator can create an open chat. For more details: see the instructions above.

Adding Members to a Chat or Channel

Members can be added in the following ways:

  1. Manually: The chat or channel administrator can add members via search in the chat card.
  2. Invite Link or QR Code: The administrator can create a link or QR code with access parameters:
    • Users from their own and trusted corporate servers.
    • Users from any corporate server.
    • All users (including guests).
  3. Open Chat: A group chat or channel can be made open so users can find it via Catalog.
  4. Automatic Addition: Use the Invite Bot to automatically add newly registered users based on criteria.
  5. Via Admin Panel: The corporate server administrator can add users manually or by list.
For Administrators: Bulk Adding Users to a Chat by List

To add users in bulk via the Admin Panel:

1. Export all registered users: Users > Download as csv > select only cts_user > save the file.

2. In the admin panel, open the chat > Users > Import Users and upload the file.

Confidential Mode

Confidential mode allows you to configure the deletion of messages by a timer after they are read or sent, both on clients and the server. This is the only way to delete messages on the server. In this mode, screenshot protection is also enabled (a warning appears in the mobile app when a screenshot is attempted), and file downloads are blocked (files can only be viewed in the chat, but not all formats are supported). Additionally, you can restrict access to messages to mobile devices only.

Confidential mode is only available in group and personal chats. It can be enabled and configured by any corporate participant if there is no participant from a public server in the chat. This mode is not available in channels. If a chat has more than 256 participants, stealth mode cannot be activated.

On Android devices, the app requires access to storage (files) to use confidential mode. This is necessary to prevent bypassing the screenshot control system. When opening a chat in stealth mode for the first time, select Allow in the file access dialog.

To view messages sent in confidential mode, activate it by clicking on any message with blurred content.

Polls in Group Chats and Channels

In eXpress, polls are natively supported (in client versions 3.30 and server software 3.29). To create a poll, use the paperclip button in the chat.

If the user's client version is not updated, the Poll option in the paperclip button menu will be missing, and errors will be displayed in the chat: Message content is not supported by your application version, System message is not supported, or Unsupported attachment.

Guests and bots cannot create polls in eXpress — this is a protection against vote manipulation.

How to create a poll:
  1. Click the paperclip button in the chat or channel and select Poll.
  2. Set the poll parameters:
    Poll Parameter Description
    Question Required field
    Answers 1 and 2 Required fields
    Quiz Mode Votes cannot be changed, and there is only one correct answer
    Anonymous Poll Voters will not be visible
    Multiple Choice If enabled, multiple answers can be selected
    Allow Forwarding the Poll If enabled, the poll can be forwarded to other chats and channels
  3. After filling in the fields and configuring the parameters, click the checkmark button. The poll will appear in the chat.

The poll creator can manage it even through a forwarded message. Available actions:
  • End the poll, cancel a vote, or select other commands in the message context menu.
  • View results using the button below the poll.
  • Download results in CSV format, which will be sent to personal messages from Poll Bot.
    For Poll Bot to send poll results, the administrator must enable it in the CTS admin panel under "Internal Bots".
Creating Polls via Vote Bot in Previous Versions of the App In client versions prior to 3.30 and server software prior to 3.29, Vote Bot was used to create polls. It can be found in the corporate chat catalog if it is installed on CTS.

This bot is available in the collection of bots and SmartApp and must be installed on the corporate server. If multiple servers participate in the chat, the bot must be published on all servers; otherwise, it will not be able to retrieve user information and will display an error when attempting to download poll results. To install the bot, contact the server administrator through your organization's support.

How to create a poll using Vote Bot:
  1. 1. Message the bot in a personal chat and create a poll.
  2. 2. Add the bot to the group chat or channel where the poll is to be conducted. In channels, the bot must be an administrator.
  3. 3. Complete the poll creation in the chat with the bot by following the instructions.

Only users from the server where the main bot is deployed will be able to download files sent by the bot.

Adding Stickers

You can add stickers in the following ways:
  1. Through a sticker sent by someone in the chat: click on the sticker to add the pack to your collection.
  2. Through a special bot that also allows transferring stickers from Telegram (animated stickers are not supported). If the bot is not available in the corporate chat catalog, contact the server administrator through your organization's support.
  3. Create your own sticker pack via the server admin panel in the Stickers section. To do this, contact your corporate server administrator.

Sending a Message or File to Yourself

To send a message or file to yourself, use the Saved Messages chat. Any message can be sent via the context menu: in the web or desktop version, right-click on the message, and in the mobile app, press and hold the message.

How to Return to a Chat If You Deleted It or Logged Out

If you deleted a personal chat, you can recreate it from the contacts list.

If you deleted a group chat or channel, the administrator or creator of the chat can restore your access. The administrator can also send you an invite link. Alternatively, the corporate server administrator can add you manually through the admin panel.

If you log out of the corporate server (request logout and the server administrator confirms it), you will lose access:
  • to all corporate chats (you will be removed from the list of participants);
  • to correspondence in personal chats that occurred while you were on the corporate server (correspondence from your personal account will remain).
If you return to the same corporate server, your personal corporate correspondence will be restored, and correspondence in group chats and channels will become available after you rejoin them through the administrator.

How to Restore a Group Chat or Channel That All Participants Have Left

If all participants have left a group chat or channel, it can be restored. To do this, contact your organization's administrator.
For Administrators: Restoring a Group Chat/Channel That All Participants Have Left Find and open the group chat or channel in the admin panel, click the Make Chat Public button — the chat will appear in the CTS catalog. Ask any CTS user to join the chat via the Catalog section. Then click the Users button on the chat page in the admin panel and make the joining user an administrator by clicking the false label in the Administrator column. This user will be able to add other participants and create an invite link.

⚠️ A group chat or channel can only be made public if it had an administrator from the current server.

How to Create a Post in the Global Chat

If the global chat is enabled by the administrator and you have been assigned as the administrator of the notification bot on the corporate server, you will be able to send messages to the global chat that will be visible to all server users:
  1. Start a chat with the Notifications bot in one of the following ways:
    • Open the global chat in the app. Click the chat name to open its properties. In the participant list, find Notifications bot > in the context menu, select Send Message or click on the bot and in its properties, click the Write button.
    • Or find the Notifications bot in the corporate catalog > a chat with the bot will open.
  2. If necessary, click the Start button in the chat with the bot.
  3. Send the command /start_post.
  4. Send any number of messages to the bot that you want to post in the global chat. You can edit and delete them within 48 hours before sending the completion command. All message types are supported except geolocation. Contacts and voice messages will appear as attached files, and links will be without previews.
  5. When the messages are ready, send the /finish_post command, then click Confirm (Confirm).
  6. Your messages will appear in the global chat.
  7. Messages sent directly to the global chat, not through the bot, are only visible to the sender. This feature is reserved for the future: a bot is being developed to support users writing in the global chat.


    Reactions and threads are not supported by the global chat.


Using Tags for Chats and Messages

See also tags and tabs.

Working with Threads

Threads: General Information

Threads allow participants to comment on messages in group chats or channels without cluttering the main chat or channel. This is especially useful if the participant does not have administrator rights. A thread is tied to the original message but is essentially a separate group chat.

Client and server versions supporting threads:
  • Web/Desktop 2.5
  • iOS 2.20
  • Android 2.20
  • Backend 2.8

How Threads Work

A thread is a chat linked to the original message. In threads, you cannot make calls, view routing, or pin messages. The thread starts with the original message and the author's name, followed by a horizontal bar indicating the beginning of the thread. Below are the participants' comments, starting from the oldest to the newest.

From the context menu of the original message, you can navigate to the chat or channel where it is located.

A thread cannot be created without an original message. Also, you cannot create a thread within another thread.

Searching for text in the main chat does not include messages from threads. To find text in a thread, you need to open it first.

Through the context menu of messages forwarded from a thread, you can navigate to the original thread.

When the original message is deleted, the thread is not deleted. You can access the thread through the placeholder This message has been deleted. If this placeholder is deleted, the thread will also be removed for the user. When a chat or channel is deleted, the user is automatically unsubscribed from all threads in it. If the user returns to the chat or channel, they will need to resubscribe to the threads.

Any message from any chat or thread can be forwarded to a thread if you are subscribed to it.

By default, notifications for threads in channels are disabled, while in group chats, they inherit the notification settings of the main chat.

How to Find and Subscribe to Threads

You become a participant in a thread (subscribe to it) automatically in the following cases:
  1. You are a participant in the original group chat or channel where the thread was created, and auto-subscription to threads is enabled (either by default or for the specific chat or channel);
  2. You are mentioned in the thread using the @ symbol;
  3. You write in the thread yourself;
  4. You subscribe to the thread through its card.

You can only subscribe to a thread if you are a participant in the original group chat or channel.

You will stop being a participant in a thread (unsubscribe) in the following cases:
  1. You delete the original chat/channel or the thread itself from the chat list;
  2. You are removed from the chat or channel;
  3. You unsubscribe from the thread through its card.

All threads in which you participate are displayed in the Threads section and in the chat list (there is a setting to display threads in the general chat list).

Threads in which you do not participate can be identified by the comment counter below the message in the group chat or channel.

To subscribe to a thread, find the message it is tied to, open the thread card, and click Subscribe to Thread.

In the application settings (starting from version 3.32), you can enable or disable global auto-subscription to threads: open settings (avatar button) > Chat and Channel Settings > Auto-Subscribe to Threads > In Chats/In Channels.
If you have many group chats and channels with active threads, it is recommended to disable global auto-subscription and enable it only for the necessary chats and channels.

How to Create a Thread

Before creating a thread, make sure that the thread feature is enabled in the group chat or channel. The creator or administrator can enable threads: open the chat card, select Settings, and toggle on Threads.

To start a thread, select Start Thread (Comment) in the context menu of the message (long press on mobile). Leave a comment, and a comment counter will appear under the message.

Threads cannot be created for system messages, messages consisting of emojis or stickers, or messages sent in stealth mode.

After adding a comment, you are automatically subscribed to the thread, and it appears in the chat list and the Threads section.

If the thread is created in a channel, you need to manually subscribe to it: open the thread card and select Subscribe to Thread.

Managing Threads

The header Thread in… at the top of the thread opens its card (properties).

The following features are available in the thread card:
  1. Shared Files — view all attachments sent in the thread;
  2. Search in Thread — search for text within the thread;
  3. Load All Messages — force load all comments to the device;
  4. Clear Thread History — delete all comments;
  5. Join Thread/Leave Thread — subscribe or unsubscribe from the thread; below is the list of participants (if the thread is created in a group chat).

In the context menu of the thread (right-click on web/desktop or long press on mobile), you can:
  • Mark the thread as unread;
  • Configure notifications;
  • Pin the thread to the list;
  • Leave the thread;
  • Clear message history.

Working with Messages

Formatting Message Text

You can format message text in the application in several ways: through the context menu of the selected text, using keyboard shortcuts (e.g., Ctrl+B, Ctrl+U), or by using special markup symbols — partial support for the Markdown language is available.

The maximum number of characters in a single message is 4096. If the text exceeds this limit, the message will automatically be split into multiple parts while preserving formatting.

Style
Notation
Bold text
**bold text**
Italic text
*italic text*
Bold italic
***bold italic***
Bulleted list
* 1st item * 2nd item * 3rd item
Strikethrough text
~~strikethrough~~
Code block without language specification
``` code ```
Code block with language specification1
```language code ```
Inline code
`inline code`
Links
[link text](www.example.com)
Tags
#tag
Mentions ("mentions")2
@chat participant
@All (notify all participants)
@@non-chat participant

1 Languages with syntax highlighting support: sh, zsh, bash, basic, clojure, cmake.in, cmake, coffeescript, coffee, cson, iced, patch, cpp, cs, css, diff, jinja, django, docker, dockerfile, delphi, elixir, elm, erlang, go, haskell, ini, java, js, jsx, javascript, json, kotlin, less, lisp, llvm, lua, makefile, matlab, nginx, ocaml, perl, php, ps, powershell, prolog, python, r, rb, gemspec, podspec, thor, irb, ruby, rs, rust, scala, scss, shell, sql, swift, tex, twig, ts, typescript, vbs, vbscript, xml, yml, yaml.

2 More about mentions and their limitations:
  • A mention with a single @ symbol will notify the user, even if they have disabled notifications in the chat or discussion. Only chat participants can be mentioned. This works as a direct reference to a bot or user.
  • A mention with two @@ symbols is used to send a contact or mention a user in the context of a conversation. The mentioned user will not receive a notification, but the recipient will be able to open the contact card and message them. Using @@, you can mention even those who are not in the chat. The contact search is similar to the search in the Contacts section, allowing you to mention a user from a trusted server or a shared chat. The chat or channel administrator can add the mentioned user to the participant list via the context menu.
  • In channels, single mentions (including @All) are not available. With @, you can only mention a bot if it is appointed as a channel administrator. Double mentions are supported in channels.
  • The @All mention does not work in chats and discussions with more than 256 participants. If there are fewer participants, the mention will work.

Editing, Deleting, and Forwarding Messages

To edit, delete (for yourself or for all participants), or forward a message:
  • in the web or desktop version of the app, right-click on the message to open the context menu with the relevant commands;
  • in the mobile versions of the app, press and hold your finger on the message to open the context menu.
To delete or forward multiple messages, select the corresponding command in the context menu for one of them, and then click on other messages to select them — a frame will appear around them.

To forward a message to a discussion, enter the name or part of the name of the parent chat or channel where the discussion was created in the chat search field for forwarding. To make it even easier to find the desired discussion, click the button next to the search field and select the "Discussions" tag. If the discussion is in a channel, first subscribe to the comments, otherwise it will be impossible to forward the message there.

In the desktop or web app, you can optionally collapse the chat list by clicking the arrow in the lower left corner (above the version number) or expand the app window to full screen or just slightly wider — message selection checkboxes will become visible in the chat window. Use them to mark the messages you want to forward.

In group chats and their discussions, an administrator can delete any messages for all participants without time restrictions and can only edit their own messages within 48 hours. In channels and their discussions, an administrator can delete and edit their own messages and the messages of other channel administrators (if end-to-end encryption is disabled in the channel) without time restrictions, except for messages forwarded to the channel from other users — these cannot be edited either during forwarding or after sending.

A regular chat participant and participants in its discussions can edit and delete their own messages for everyone within 48 hours of sending. In channels and their discussions, regular participants (subscribers) cannot write messages.

Pinning a Message

Any chat participant or channel administrator can pin one message to the top. A message can be unpinned or replaced by another pinned message by an administrator participant or the participant who originally pinned the message.

Сообщениям можно назначать теги. См. также «Теги и вкладки чатов».

Chats, Channels & Threads Troubleshooting

"Can't Decrypt" Errors on Messages

Most often, such errors occur due to temporary network issues. To resolve them, try logging off and back into the app or clearing the cache on the problematic device.

If the error appears for one of the participants in a group chat, follow these steps:
  • If all participants see the error message, ask the sender to end the session in the settings and log back into the app from the device from which the message was sent.
  • If the error is visible only to one participant, ask them to end the session and log back into the app.
If the error occurs in a personal chat, send a message to the group chat where this user is present and:
  • If all participants see the error in your message, end the session and log back into the app.
  • If the error is visible only to one recipient, ask them to end the session and log back into the app.
In older versions of client apps (e.g., web/desktop below 3.14.59 or Android below 3.14.10), the error may occur on new types of messages, such as polls. In this case, it is necessary to update the app to the latest version.

If the described actions do not help, and the error repeats on all devices, the issue may be related to your cts encryption keys. Contact your organization's support team or eXpress support for assistance.

⚠️ We strongly recommend updating client apps to the latest versions. This will prevent most new issues with encryption keys.
For Administrators: Checking Encryption Keys Diagnostics

If a user has the “Can't Decrypt” error on all devices or re-logging into the session did not help, collect diagnostics:
User's HUID Open the user's active profile in the admin panel, copy the HUID, and send it to eXpress support.
User's keys of type rts from RTS This information can only be provided by eXpress support.
User's keys of type cts from RTS This information can only be provided by eXpress support.
User's keys of type cts from CTS Open the user's profile in the CTS admin panel, click the Keys button at the top of the screen. Use the search (Ctrl/Cmd + F) for the word “cts” to find keys of type cts. Copy the key ID, issue date, and version number, and send them to support.
Chat JSON of the problematic chat
Check the cts_key_id key
Open the user's profile in the CTS admin panel, go to the Chats section, find the problematic chat, and click Chat JSON. Copy all the content of the opened page and send it to eXpress support.
Two message_new events (sender and recipient) of the problematic message
Check the sender_key_id key
Open the user's profile in the CTS admin panel, go to the Chats section, find the problematic chat, and open Events Table. Find an event of type message_new (not routing_changed!) and copy its content.
⚠️ If the chat is inter-server, request Chat JSON and message_new from each server where this chat exists.

Solution
    The key cts with the highest version number and the latest issue date is considered current. If the key is not current, fixing the chat cache (repair) may help. For this, there is a Recovering Keys in Chats button in the user's profile (available in version 3.23 and above) or Troubleshooting under the user list (available in version 3.24 and above). They allow fixing keys on the current CTS, even for users from another CTS.

    If you have been provided with a script that fixes keys, the command Messaging.Troubleshooting.Chats.repair_user("user_huid") can be used for multiple users.

  1. 1. The latest cts key on the user's CTS must match the key on RTS.
    • A. If the keys are mixed up by version or time, contact eXpress support for instructions on how to fix them.
    • B. If the cts key is missing on CTS but present on RTS:
      • If the user has reset their keys (the number of rts keys on RTS has changed), ask them to reset their password or delete their account. Ensure that the new key appears on CTS.
      • If the keys were not reset, and the user's CTS backend is version 3.11 or higher, perform a repair on RTS through eXpress support. If the backend is below 3.11, update it, and then perform the repair.
  2. 2. Ensure that the latest cts key is present in the Chat JSON of each chat involving the user. If the key is missing or not current, perform a repair on the server.
  3. 3. Check that the latest cts key is present in each chat message (message_new events). If the key is incorrect, perform a repair for the message sender (Sender HUID/UDID in the message_new event) on their server.

Sync is stuck, messages are not sent or not visible in one chat

Error messages may appear: “Updating” or “You can't send messages because you are not member of this channel anymore.”

Try the following steps:
  • If the chat is a group chat, try adding a new user to the chat or assign one of the participants as an administrator. This action may refresh the chat state and resolve the issue.
  • If the chat is personal, create a group chat with the same participants and check if the messages are visible. If the messages are displayed, delete the old personal chat for both participants and recreate it via contacts.
  • If the issue is related to trusted servers (e.g., messages are not visible between users of certain servers), contact the corporate server administrator through your organization's support or eXpress support.
If the described actions do not help, contact your organization's support team or eXpress support for assistance.
For Administrators: Assisting a User with One Problematic Chat Diagnostics

Most often, the issue arises due to the chat being in an inactive state (e.g., after an incorrect user logout or server deletion from RTS). To resolve this, the chat ID is required. It can be obtained in several ways:
  • If the chat is inter-server (cts1+cts2 or rts+cts), and the chat is available in the admin panel on one of the servers, copy its ID from there.
  • If the chat is on one server and is not displayed in the admin panel (inactive chats are hidden), use the web/desktop application:
    • Open Settings > About and click the logo several times to open the engineering menu.
    • Enable the Debug Info toggle and close the engineering menu.
    • In the problematic chat, right-click any message and select Debug Info.
    • In the panel on the right, find the groupChatId value — this is the chat ID.
    If the chat is empty for all participants, try making a call in this chat, download the state from any participant's side, and find the groupChatId by the participants' HUID.
Although inactive chats are not displayed in the chat list in the admin panel, they can be accessed via direct navigation:
  • Open any other chat in the admin panel.
  • In the browser's address bar, replace the chat ID with the previously obtained groupChatId.
  • The desired chat will open with the parameter Active: False.

Solution

If the chat is displayed as inactive in the admin panel, perform a chat repair using its ID. This will activate the chat and make it visible in the admin panel.
Instructions and consultations for fixing a single chat can be obtained from eXpress support.

The command Messaging.Troubleshooting.Chats.resync_chat_servers("chat_ID") in the script from support can be called multiple times with different chat IDs if needed.


If the chat was found in the admin panel, wait for the sync to complete so that the chat loads in the client. If the backend version is below 3.7, update it. If the sync does not occur, see the next issue.

Sync is stuck, messages are not sent or not visible in all chats

In all chats, error messages may appear: “Updating” or “You can't send messages because you are not member of this channel anymore.” Also, in this case, a corporate user (blue) in the routing of participants in all their chats may be incorrectly displayed as a public user (green). Another sign: the last “online” status of the problematic user may be far in the past, even though they were recently active.

To resolve the issue, it is necessary to fix the chat cache on the corporate server where the error occurred. This can be done through your organization's support (if the server belongs to it) or through eXpress support.
For Administrators: Fixing the Chat Cache Diagnostics

Check the Conn type value of the user in the admin panel of their home server:
  • Open the user's profile in the CTS admin panel.
  • Click the Chats button at the top of the screen.
  • Open any chat and click the Users button.
  • Find the user in the list and check the Conn type value.

Solution

If the Conn type does not match the actual state (e.g., rts is displayed instead of cts), perform a repair on the user's server.
Instructions and consultations for fixing the chat cache (repair) can be obtained from eXpress support. For repair, there is a Restore Keys in Chats button in the local user's CTS profile (version 3.23 and above), and for a user from another server, there is a Troubleshooting button under the user list (version 3.24 and above).

The command Messaging.Troubleshooting.Chats.repair_user("HUID_of_the_problematic_user") in the script from support can be called for multiple users if needed.

If the Conn type is correct, and you cannot resolve the issue, collect information on the issues described above and contact eXpress support.

No chat history in one or several specific chats on all devices

If the chat history is missing in one or several group chats, but notifications are received, and the issue occurs on all devices (while other participants see the chats normally), contact your organization's support team to fix your chats.
For Administrators: Fixing the Epoch in a Chat In backend version 3.10, the chat storage structure was changed: now their history is divided into epochs. The issue is resolved by clearing the end_at value of the epoch.

Diagnostics

Signs of the issue:
  • Backend version 3.10 and above.
  • Chat history is missing in one or several group chats.
  • Occurs on all devices.
  • In the epoch query output (see below), there are no epochs with an empty end_at, i.e., all epochs are closed.
  • Real-time events are displayed (sent a test message — saw it), but after re-logging into the app or reloading the page, they disappear + the event has a user key.
Additional signs (optional):
  • Other participants see the chats normally.
  • Push notifications are received.

Solution

Instructions and consultations for fixing the epoch can be obtained from eXpress support.

No chat history in a group call or conference (room) chat on all devices

See instructions for fixing epochs in a specific chat.

Messages sent in a bot-created chat hang with an error

The issue may be caused by desynchronization of keys on the server and in client applications (DLPS key). To resolve this, contact your organization's support team or eXpress support.
For Administrators: Fixing DLPS Key Synchronization Restarting the messaging container will reset the cache and update the keys. Follow these steps:
  1. 1. In the admin panel of the corporate server where the bot is located, collect the logs of the messaging container.
  2. 2. Reproduce the issue in the client application. If the keys_error error appears in the container logs, restart the messaging container using the command:
    cd /opt/express && dpl --dc restart messaging

Messages are displayed as undelivered, although the recipient on iOS receives them

The sender sees messages as undelivered (with one checkmark), although the recipient on iOS has read them.

To fix this, the recipient on iOS needs to:
  1. Open Settings on iOS.
  2. Go to Notifications.
  3. Find the app and enable at least one of the notification display options: Lock Screen, Notification Center, Banners.
If notifications are disabled, messages will be displayed as undelivered to the sender.

Incorrect time in messages, “online” status is displayed incorrectly

Ensure that the following are enabled on the device:
  • Automatic time zone setting.
  • Automatic time synchronization with the cellular network or NTP server.

Empty chat list on iOS after restarting the app

If after updating the app on iOS the chat list is empty and loads slowly, the issue may be related to the app's data storage. Reinstall the app to fix it.
For Advanced Users: Collecting Logs for Diagnostics Collect general logs in the mobile app on iOS after clearing them. In the logs, look for the error:
Type: REALM ERROR Message: can't instantiate migrated encrypted Realm, will create in-memory Realm instead Payload: exception: Migration is required due to the following errors:- Property 'Attachment.deepLinkData' has been added.- Property 'Chat.positionEventInsertedAt' has been added.- Property 'Message.buttonsAutoAdjust' has been added.- Property 'Message.sendStateRaw' has been added.- Property 'Message.needResend' has been removed.
The issue is related to the app's database (Realm). Reinstalling the app will resolve it.

Chat with confidential mode enabled does not open on Android

For confidential mode in a chat on Android, the app requires access to storage (files). This is necessary to prevent bypassing the screenshot control system.

When opening a chat in confidential mode for the first time, select Allow. Do not tap Don't ask again or Deny.

Error “Chat is not available on desktop. Open chat on mobile device”

This error occurs if one of the chat participants has enabled privacy mode with the Mobile-only access setting. To fix it, open the chat card, go to Confidential Mode, and disable Mobile-only access.

“Threads enabled error” or “Threads feature is not supported”

If a chat or channel has a participant with a backend version below 2.8, an error will appear when trying to enable threads. Ensure that all participants have server software version 2.8 or higher. If outdated information about a participant with an old backend is cached in the chat, try adding another user to the chat or making one of the participants an administrator to refresh the chat cache.

Some characters disappear in messages after sending

Special characters such as `*_ are used for text formatting. To send text without distortion, format it as code.