# Messages

> Real-time chat between community members, in two-person conversations. It opens from your photo at the top, in a panel with your status (Available, Away, Busy or Unavailable), Conversations and People, Free or Add first (connections with Add, Accept and Decline), the notifications bell, typing, Read receipts, deleting, blocking, e-mail notices and privacy: only the two people read the conversation, never the team. On every plan.

**Messages** is real-time chat between community members: **two-person** conversations that arrive instantly, without reloading the page. It comes **on** in every community, on **every plan**, and every role uses it: member, moderator, finance, admin and owner.

Only the two people in a conversation read what was written. **The community team has no access to messages**: there is no screen, report or moderation queue with them (see [Privacy](#privacy)).

## Where it is

The chat has no menu item and no space of its own. It opens from **your photo, at the top right**: one click opens the **Messages and account** side panel, and another click on the photo closes it (**Esc**, a click outside the panel or swiping right also close it). The red number on the photo is the total of unread messages, and the dot at its bottom right is your [chat status](#your-chat-status). There is no longer a chat icon at the top or a **Messages** bar at the bottom.

From top to bottom, the panel has:

- a line with the **Chat settings** gear (with **Read receipts**, **Show when I was last online**, **Sounds** and **Blocked people**), the **My Account** button (with its name written out) and **Sign Out**. The **My Profile** icon is gone: your [member page](/membros/seu-perfil) opens from **View my profile**, in **My Account**;
- depending on your role, a line with **My company** (people on a [company](/membros/empresas)'s team), **Events I organize** (people who organize events) and **Overall engagement** (when the community has overall engagement on). They left the side menu, which now ends with the community;
- **Search conversations**;
- the **Conversations** (with the unread count) and **People** (with the number of people online) tabs, underlined like the Feed tabs, with your **status** selector on the same line, on the right. On a narrow screen, the selector shrinks to the dot and the arrow (the status name shows on hover). The panel opens on **Conversations** when there are unread messages and on **People** otherwise.

With the chat off in the community, the photo opens only the account line (**My Account** and **Sign Out**) and the one with your role's items. The side menu no longer has **My Account**, **Sign Out**, **Billing** (now in **My Account › Billing**) or **Report a problem** (the bug icon at the top).

The panel opens **right below the top bar**, and the photo stays where it is. From 600 px wide, it is a 380 px sidebar on the right, over a dark backdrop; **on a phone** (below 600 px), it takes the full width, below the top bar.

**When you open a conversation:** on screens below 1024 px, it takes the screen, with **Back** to the panel. **On a computer (from 1024 px)**, it opens in a **330 px window** in the bottom-right corner, with **Minimize** (only its top strip stays) and **Close**; as many fit as the space allows without covering the side menu (one on a 1280 px screen with the menu open, two on a 1920 px one), and a new one replaces the oldest. A minimized conversation becomes a small tab with the photo, the name and the unread count; those that don't fit go into **+N** (*"N more conversations"*). The open windows are saved in this browser.

The bell, to the left of your photo, carries connection requests and acceptances (see [Notifications](#notifications)). With unread messages, the browser tab title shows the total. Each person can have up to **10 tabs or devices** connected to the chat at once; opening one more takes the oldest off real time.

## Your chat status

The status sits in the photo panel, on the line of the **Conversations | People** tabs, on the right, in the button with the colored dot (**Your chat status**). You pick three; the fourth, **Away**, is automatic:

| Status | Color | What it is |
|---|---|---|
| **Available** (default) | Green | *"Shown in People, gets notices"*. Gets new conversations and connection requests, with sound, windows that open by themselves and e-mail |
| **Away** | Yellow | Automatic: after **10 minutes without activity**. Everything keeps arriving as in Available. It is not in the picker and never shows over Busy or Unavailable |
| **Busy** | Red | *"Shown as busy; messages arrive without sound"*. Still gets new conversations, connection requests and e-mail, but **without sound** and **without the window popping open** |
| **Unavailable** | Grey | *"Nobody sees you; no notices"*. **Blocks new conversations** and connection requests; existing conversations go on |

**Everyone starts Available**, including people who were members before the chat arrived: the chat works without anyone setting anything up. Each person changes it whenever they like, and the choice is never overwritten. The change applies at once in all your tabs; if it fails, the status goes back with *"Couldn't change your status. Try again."*

**Away** comes by itself when you stop moving (mouse, keyboard, visible tab) for 10 minutes: your photo shows the yellow dot and, under the status, *"Away: no activity in this tab for 10 min. Back to Available as soon as you move."* Others only see you as away when **all** your tabs and devices are idle. Whoever picked Busy or Unavailable stays that way.

The first time you open the panel, a hint under the status explains: *"You show up as available to chat. Change it here any time."* **Got it** (or any status change) closes the hint, which does not come back.

| | Available or Away | Busy | Unavailable |
|---|---|---|---|
| Shows in other people's **People** | Yes, online (green, or yellow with *"away"*) | Yes, online in red, with *"busy"* | **Never** |
| Sees the **People** list | Yes | Yes | No (*"You are unavailable: nobody sees you here and the list stays closed. Change your status above to see who is around."*) |
| Someone can start a **new** conversation with you or ask to connect | Yes | Yes | No |
| Gets messages in the conversations you already have | Yes | Yes | **Yes**: you read and reply when you open the panel |
| Count on the photo and in the tab title | Yes | Yes | No |
| Sound and windows that open by themselves | Yes | **No** | No |
| Message e-mail | Yes | Yes | **No** |

### What others see: online and last seen

In **People**, in **Conversations** and at the top of the chat window, each person shows up the WhatsApp way:

| Situation | Dot | What shows |
|---|---|---|
| Online and Available | Green | *"online"* |
| Online and Busy | Red | *"busy"* |
| Online and Away | Yellow | *"away"* |
| Out of the app, with a time | Grey | *"last seen today at 2:32 PM"* (or *yesterday at…*, the weekday, or the date, when earlier) |
| Out of the app, no time | Grey | *"offline"* |

In the narrow chat window the phrase is short (*"seen today at 2:32 PM"*), and the full phrase shows on hover. The time is rounded down to the minute.

**Unavailable and blocked look offline.** To others, someone offline, someone who chose **Unavailable** and someone who blocked (or was blocked) all look the same: a grey dot, with the last time or *"offline"*. Nobody finds out you chose Unavailable or blocked someone. Between two people with a block, the time never shows.

**Show when I was last online**, in the **Chat settings** gear, is on by default. Off, nobody sees your time, and **you don't see other people's either** (*"If you turn it off, you don't see other people's either"*): everyone out of the app shows only as *"offline"*.

## People

The **People** tab of **Chat** lists who is **available to chat** in the community:

- the **Team** first, then the **Members**, each header with how many people are in the group (*"Team · 28"*, *"Members · 79"*), following the search; in each group, **online** (green) first, then **offline** (grey), by name; the number on the tab is the total of people online;
- **Search by name** filters the list by the name shown on the profile (the team can also find people by e-mail), and the rest loads as you scroll;
- only people who are available show up (*"Only people who turned on "Available to chat" show up."*), minus the people you blocked or who blocked you;
- only someone who is available too sees the list.

Team members have a ring in the community color around their photo and a chip with their role (**Owner**, **Admin**, **Moderator** or **Finance**), in **People**, in **Conversations** and on the tabs of the **Messages** bar (at the top of the chat window, only the ring). Unread messages show in a bubble on the right of each contact (up to **99+**), with the name in bold.

The list updates by itself: whoever closes the app turns offline within 2 minutes; whoever becomes unavailable disappears at once. Each row shows only the person and the status: **clicking the person opens the chat window** (the existing conversation or, with someone you haven't talked to, an empty window; the conversation is only created when you send the first message). Incoming connection requests are answered on the [bell](#notifications).

## Chatting

1. Click your photo at the top, open the **People** tab and tap the person (with **Add first**, once you are connected).
2. Type in **Write a message** and click **Send** (or Enter; Shift+Enter adds a line break).

A message is plain text of up to **4,000 characters**; above that, the field warns you and does not send. While the other person types, **typing…** shows. Older messages load as you scroll up.

The **Conversations** tab lists all your conversations, most recent first, with the person's photo and status, the last message, the time and the unread count. Opening a conversation marks it as read.

You can also start from someone's **profile card** (the one that opens when you click their name or photo): the **Send message** button shows **only when you can write to that person**: the chat is on in the community, they are **Available to chat**, the rule on who can start allows you, neither of you blocked the other and, with **Add first**, you are connected. In any other case the button simply does not show, with no reason given, so it never reveals whether the person is available. The green online dot on the card also shows only for people who are available.

> [!NOTE]
> Without the real-time connection (an unstable network, for example), the conversation says *"No real-time connection: new messages arrive every 30 seconds."* Nothing is lost: the message you sent arrives when the connection returns or at the next refresh.

## Add first: connections

The owner and the admin choose, under **To chat** (see [For the team](#for-the-team-on-off-and-who-starts)), whether people chat directly (**Open**, the default) or must **add each other first** (**Add first**), as in a contacts network. With **Add first**, the chat window with someone you are not connected to shows a banner at the top with the button for that moment, and the message box is locked: *"To write, you need to be connected."*

| Button | When | What happens |
|---|---|---|
| **Add** | You are not connected | Sends the request; the other person gets a notification on the bell and, if available, an e-mail |
| **Request sent** | You already asked | **Cancel request** undoes it |
| **Accept** / **Decline** | The person asked you (*"Wants to connect with you"*) | On the banner or the [bell](#notifications). Accepting connects you both; declining tells nobody |
| None | You are connected | The banner disappears and you write as usual |

- **Declining is silent**: the person who asked keeps seeing **Request sent**, without knowing it was declined, and asking again sends no notice or e-mail.
- **Crossed requests accept each other**: if you ask someone who had already asked you, the connection is accepted at once.
- Someone who cannot start conversations (the **Who can start** rule) cannot add either, and you can only add people who are **Available to chat**.
- **Blocking** ends the connection (or the request) and prevents a new request.
- **The team is always reachable**: anyone can write to a team member (owner, admin, moderator and finance) without a connection, within availability, blocks, the who-can-start rule and the limits. The team replies in an existing conversation without a connection, but still needs one to start a conversation with a member.
- **People in the same Networking chat without a connection**: two people active or paused in the same [Networking](/espacos/networking#chat-between-participants) space open a conversation and write without a request, with availability, blocks, the who-can-start rule and the limits still in force. When one leaves the program, with no other program in common nor an accepted connection, the conversation becomes read-only. In a mentoring program, whoever the team removes from the program also loses the no-connection chat with its mentors (read-only, with the history kept) and sees their page in the limited mode again, until a mentor accepts a connection; through the API, `403` `notParticipant`.

**Remove connection.** With **Add first**, the **⋯** menu of the chat window with a connected person has **Remove connection**. The confirmation asks *"Remove the connection with {name}?"* and explains: *"The conversation is kept, but in "Add first" mode it becomes read-only and neither of you sees the full profile any more. Nobody is told. To connect again, you need to wait 24 hours."* **Remove** confirms; **Cancel** backs out. Either of you can remove it.

**A conversation without a connection becomes read-only.** When switching from **Open** to **Add first**, existing conversations stay in the history, but people who are not connected see the connection banner at the top of the window and the message box locked. Switching back to **Open** frees everything at once.

**The profile depends on the connection.** With **Add first**, someone not connected to you sees only your **name**, **photo**, **profile tagline** and **job title**, with *"Connect to see the full profile."* and the **Add** button; the rest (e-mail, phone, custom fields, groups, tags, social links) shows only to accepted connections, in the app, the API and the AI assistant. **The team always sees the full profile**, connected or not. With **Open**, nothing changes on the profile.

Requests and connections are per community: the same person in another community starts with no connection.

## Notifications

The bell updates right away, without reloading the page, even with the chat off.

The **bell** in the header gathers the notifications of **this community**, with the unread count:

- *"{name} wants to connect with you"*, with **Accept** and **Decline** on the notification itself: this is where you answer incoming requests, and they disappear once answered;
- *"{name} accepted your connection request"*, which opens the conversation.

Opening a notification marks it as read, and **Mark all as read** clears the count. Notifications arrive instantly, without reloading the page. Another community does not see these notifications, and each person sees only their own.

## Read receipts

In the **Chat settings** gear, at the top of the photo panel, is **Read receipts**, off by default: *"People you chat with see when you've read. Turned off, you don't see theirs either."* The **Seen** under your message shows only when **both people** turned it on; with only one, nobody sees it.

## Sounds and conversations that open by themselves

- **Sounds.** A short sound plays when you send and when a message arrives, one per burst of messages, and not while you are already reading that conversation or while you are **Busy** or **Unavailable**. **Sounds** is in the **Chat settings** gear, on by default. Browsers only allow sound after your first click on the page.
- **Conversations that open by themselves (computer).** When a message arrives in a conversation that isn't open, its window opens without moving your cursor; a minimized one stays minimized and only its count grows, and a closed one reopens. While you are **Busy** or **Unavailable**, nothing opens by itself: the message only raises the count on your photo.
- **Cursor ready.** When a conversation opens, the cursor is already in the message box.
- In **Conversations**, each contact shows its unread count.

## Deleting a message

On your message, open **Message options** (on a computer, hover over it) and click **Delete message**. After you confirm, it becomes **Message deleted** for both of you; the rest of the conversation stays. There is no undo, and you can only delete your own messages, never the other person's. A sent message cannot be edited.

## Conversation menu and clearing the history

The **⋯** menu at the top of the chat window has **View profile** (the person's profile card), **Clear history**, **Remove connection** (only with **Add first**, see [Remove connection](#add-first-connections)) and **Block** or **Unblock** (see [Blocking](#blocking-and-unblocking)).

**Clear history** asks *"Clear the history?"* and explains: *"The messages so far disappear for you only. {name} still sees the whole conversation."* **Clear** confirms. Nothing is deleted: the messages up to then just stop showing for you (in the conversation, the preview and the unread count), new ones keep arriving, and the other person is not told. It works in any mode, even with a block.

## Blocking and unblocking

In the chat window, open the **⋯** menu (**Conversation options**) and click **Block**. With the block:

- neither of you can write to the other; the blocked person only sees *"You can't send messages to this person."*, with no reason;
- you disappear from each other's **People**, and the connection (or the request), if any, ends;
- **nobody is told**, neither the other person nor the team; the conversation is kept.

Blocking is personal, not a report: nobody reads anything. To undo it, **Unblock** in the conversation itself or under **Chat settings › Blocked people**.

## E-mail notice

Someone who is **Available to chat** and does not have the community open gets an e-mail when a message arrives: *"Maria sent you a message in <community>"*, with the unread count and the **Open conversation** button. The e-mail **never contains the message text**.

- It goes out **10 minutes** after the first unread message; if you read it before, it does not go out.
- At most **one per conversation every 6 hours**.

With **Add first**, a new connection request also sends an e-mail: *"Maria wants to connect with you on <community>"*, with the **View request** button, which opens the notifications bell in the app. At most **one per pair of people every 24 hours**; asking again after a decline sends nothing.

- Someone who is unavailable gets **no** chat e-mail at all. Someone who is **Busy** or **Away** gets it as usual.
- Both notices belong to the **Messages** category in [E-mails from this community](/notificacoes/emails-desta-comunidade), on by default. The footer link turns off only that category.

The message e-mail button opens the app straight on the conversation (`/_/chat/{id}`); without a login, it asks you to sign in first.

## Limits against spam

So nobody floods the community with requests, first contacts or repeated messages, each person has limits, counted per community and the same in the app and the AI assistant:

| What | Limit |
|---|---|
| Connection requests | **20 a day** and **100 a week** |
| Requests waiting for an answer at once | **200**; to ask more, cancel some |
| New conversations (the first message to someone you haven't talked to) | **10 an hour** and **30 a day**; conversations you already have never count |
| Messages | **30 a minute** |
| The same text to different people | **5 an hour** |

- Someone who joined the community **less than 24 hours ago** has **half** the connection-request and new-conversation limits.
- The **team** (owner, admin, moderator and finance) has **double** every limit.
- Over a limit, the message says which one and when it frees, in the community's time zone.

## For the team: on, off and who starts

The owner and the admin find the **Messages** card under **Settings › Features**:

| Field | What it does |
|---|---|
| **Chat on** | On by default. Off, the chat disappears for everyone (the photo opens only **My Account**, **Sign Out** and your role's items); conversations are kept and come back when you turn it on again |
| **Who can start a conversation** | **All members** (default), **Members with an active plan** (a subscription or purchase that grants access) or **Team only**. Replying to an existing conversation is always allowed |
| **To chat** | **Open** (default): anyone available can get a conversation. **Add first**: one person adds the other first; once accepted, both can chat and see the full profile (see [Add first](#add-first-connections)) |

With **Team only** or **Members with an active plan**, people who do not qualify see in **People** *"In this community, only the team starts conversations. You can reply to the ones you get."* (or the active-plan sentence). Moderators and members do not see this card.

There is no moderation queue in the chat: if someone is a bother, the person blocks them, and the community can turn the chat off or require a connection. Against spam, the [chat limits](#limits-against-spam) apply.

## Asking the team for access

In a padlocked section or space only the team can open (closed by group, or with nothing on sale), the exclusive access screen has the **Talk to the team** button (see [Visibility and access](/conceitos/visibilidade-e-acesso#the-talk-to-the-team-button)). It shows only with the chat on and someone on the team to answer, and it:

- opens a direct conversation with whoever answers: the first admin online, then the first moderator online; with nobody online, the owner. Always someone **Available to chat** and with no block either way; finance never answers;
- reuses the conversation you already have with someone on the team who can answer;
- leaves the draft *"I'd like access to Club"* in the box, unsent;
- ignores **Who can start a conversation** and counts toward the limit of **10 new conversations per hour** (only when the conversation is new).

## Privacy

- Messages are **private between the two people** in the conversation. Nobody on the community team, not even the owner, reads other people's conversations, through the app, the API or the [AI assistant](#ai-assistant).
- Message text does not go into e-mails, notifications, activity logs or reports.
- Showing as available is the default, and each person turns it off whenever they like; whoever turns it off shows to nobody.
- With **Add first**, only accepted connections (and the team) see the full profile.
- The same person in two communities has separate conversations, connections and notifications in each.

See [Terms of use › Personal data](/conceitos/termos-de-uso#personal-data).

## In the API

The routes are under `/api/chat` (preferences, people, who is online, conversations, messages, blocks, connections and the community settings) and `/api/notifications`, always with the `X-CommunityId`:

- `GET /api/chat/members` is the **People** panel: only for someone who is available (`403` otherwise), online first, with `q` (name) and `cursor`; the team comes first, and each person carries `online`, `lastSeenAt`, `canStart` and `isTeam`. `pagination` carries `teamTotal`, `membersTotal`, `teamOnline` and `membersOnline`.
- `GET /api/chat/me` and `PATCH /api/chat/me` carry `availabilityNoticeSeen`, for the first-time hint, and `chatStatus` (`AVAILABLE`, `BUSY` or `UNAVAILABLE`), the chosen status. `PATCH` accepts `chatStatus`; `AWAY` cannot be chosen (`400`), and a `chatAvailable` that contradicts `chatStatus` in the same call is also a `400`. `chatAvailable` stays: it is `false` only with `UNAVAILABLE`.
- Each person in `GET /api/chat/online` and `GET /api/chat/members` (only when online) and a conversation's `other` (only when online) carry `status`: `AVAILABLE`, `AWAY` or `BUSY`. Someone unavailable or blocked comes without a status. Someone out of the app carries `lastSeenAt` (rounded down to the minute) in `GET /api/chat/members`, in a conversation's `other` and in `presence.delta` with `online: false`, only when there is no block and both people keep `chatShowLastSeen` on (in `GET`/`PATCH /api/chat/me`, on by default); otherwise `null`. Unavailable reads as offline.
- `/api/chat/connections`: list, request (`POST` with `profileId`), `accept`, `decline` and `DELETE` (cancel the request or end the connection). Only the two people act on the connection.
- `POST /api/chat/conversations/{id}/clear` clears the history for the caller only (the two people in the conversation; `404` for anyone else), in any mode and even with a block.
- The community settings gain `startMode`: `FREE` (default) or `CONNECTION`. With `CONNECTION`, a new conversation or message without an accepted connection answers `403`.
- `/api/notifications`: list (with `cursor`), `unread-count`, get, mark as read (`PUT /{id}/read` and `PUT /read-all`) and delete. Each person sees only their own.
- The chat limits answer `429` with `errors[0].code` (`limitConnectionsDaily`, `limitConnectionsWeekly`, `limitPendingRequests`, `limitNewConversationsHourly`, `limitNewConversationsDaily`, `limitMessagesPerMinute` or `limitDuplicateMessage`), `errors[0].limit` and, when time frees it, `errors[0].retryAt` and the `Retry-After` header (see [Responses and errors › Chat limits](/api/respostas-e-erros#chat-limits)).
- `POST /api/chat/contact-team` (with `spaceId` or `sectionId`) is the **Talk to the team** button: it picks who answers and opens or reuses the direct conversation, without sending anything (see [Asking the team for access](#asking-the-team-for-access)). The refusal of a padlocked space or section carries `canContactTeam`.

Someone else's conversation answers `404` for every role; with the chat off, `403`. `GET /api/members/{id}` returns `chatAvailable`, which says whether you can write to that person now, and, with **Add first**, `limited: true` when you see only the card. See the [API reference](/api/introducao).

## AI assistant

Through [MCP](/mcp/o-que-e-o-mcp), the assistant reads and writes **only your own conversations**, with the [Messages tools](/mcp/ferramentas-membros#messages): your preferences and your status, the available people, who is online (and who is away or busy), conversations, sending (with confirmation), marking as read, deleting and clearing the history (with confirmation), blocking, connections (request, accept, decline and end, with confirmation), your notifications and the community settings for the owner and the admin. See [Tools › Members › Messages](/mcp/ferramentas-membros#messages). `contact_team` opens the conversation with the team about a padlocked area (see [recipe 97](/mcp/receitas#97-ask-for-access-to-a-padlocked-area)).

**Ask like this:** *"Do I have unread messages?"* · *"Write to Ana: I'll be at the meeting at 3 pm."* · *"Who asked to connect with me? Accept Bruno's request."* (see [recipe 88](/mcp/receitas#88-see-who-asked-to-connect-and-accept)).

## Related

- [E-mails from this community](/notificacoes/emails-desta-comunidade)
- [General settings](/configuracoes/configuracoes-gerais)
- [Roles and permissions](/conceitos/papeis-e-permissoes)
- [Moderation](/membros/moderacao)
