Message, Chatter
A Chatter Message is a private message sent inside Chatter, Salesforce's built-in collaboration tool.
Definition
A Chatter Message is a private message sent inside Chatter, Salesforce's built-in collaboration tool. It lets users hold one-on-one or small-group conversations that stay off the public feed. Each message is stored on the ChatterMessage standard object, available since API version 23.0, and grouped into a thread through the related ChatterConversation object.
Chatter Messages run alongside the public feed but use a different visibility model. Public posts and comments live on FeedItem and FeedComment and respect record sharing and group membership. Private messages are visible only to the people on the conversation. The feature is still current and shipping, though Salesforce now points most active collaboration toward Slack. Many orgs keep Chatter Messages for quick internal notes and for Experience Cloud sites where Slack is not in play.
How Chatter Messages work under the hood
The ChatterMessage and ChatterConversation objects
ChatterMessage is the standard object that stores each private message. It became available in API version 23.0. Useful fields include Body (the message text), SenderId (the author), ConversationId (the thread the message belongs to), and SentDate (when it was sent). A single back-and-forth between two people is one conversation made up of many ChatterMessage records that share a ConversationId. ChatterConversation is the companion object that represents the thread itself. It tracks the set of participants and the read state for the running user. You can query both objects with SOQL, for example SELECT Id, Body, ConversationId, SenderId, SentDate FROM ChatterMessage, but by default a user only sees rows from conversations they take part in. Direct object access is the exception, not the norm. Most people read and send messages through the Chatter Messages interface rather than touching the objects, which keeps the privacy rules intact and avoids surprising support agents with raw record views.
One-on-one and small-group threads
A Chatter Message conversation can be between two people or a small group. The participant list is fixed when the conversation starts. You cannot add a new person to an existing thread, so bringing in another colleague means starting a fresh conversation with everyone you want included. That single rule trips people up more than any other part of the feature, because the natural instinct is to expand a thread the way you would in a modern chat app. Group messages are meant for tight, focused discussions, not broad collaboration. Once a conversation grows past a handful of participants, a Chatter Group or a Slack channel is the better home. Groups give you membership management, file posts, and a searchable feed. Messages stay deliberately lightweight. Think of them as the quiet side channel for a short exchange that should not sit in a public feed, like confirming a detail on a deal or asking a teammate a sensitive question before you post anything wider.
The privacy and visibility model
The whole point of a Chatter Message is privacy. A message is visible only to the people on its conversation. This is a different model from feed posts, which inherit record sharing and group membership. A feed item on an Opportunity can be seen by anyone with access to that record. A message is seen by its participants and no one else, regardless of who can view related records. That privacy extends to administrators. An admin browsing the org cannot read other users' messages through the standard interface just because they hold the keys. Reading another person's messages requires elevated data access such as View All Data, and even then the path runs through SOQL or tooling rather than a friendly inbox view. This matters for trust and for compliance. People treat messages as genuinely private, so any content they would not want a wider audience to see can end up there. Plan for that reality rather than assuming messages are casual throwaways.
Sending and reading messages with code
Developers reach Chatter Messages through Connect in Apex and the Connect REST API. The ConnectApi.ChatterMessages class can send, get, search, and reply to private messages, fetch and search conversations, mark a conversation as read, and return a count of unread messages. The simplest call sends a message to one user, for example ConnectApi.ChatterMessages.sendMessage('Quick heads up on the renewal', someUserId). The method returns a ChatterMessage representation you can inspect. This is the supported way to automate a private note from a process. A common pattern is to message a record owner when something needs their quiet attention, rather than posting to the record feed where everyone with access would see it. The Connect REST API exposes the same actions over HTTP for integrations outside Apex. One caution worth repeating from the docs: if you want something private, use the messages methods. Posting a feed element instead puts the content on a feed that other users can read, which defeats the purpose.
Moderation, archival, and compliance
Because messages can carry sensitive content, Salesforce lets you put guardrails around them. You can write Apex triggers on ChatterMessage to moderate private messages, which gives a place to scan or block content before or as it is stored. Regulated industries such as financial services and healthcare often need to capture and supervise every employee communication, and messages are no exception. Out of the box, a message lives only in the ChatterMessage table. There is no automatic supervision archive the way a dedicated compliance tool provides. Orgs that must retain and review communications usually pair messages with Salesforce Shield Event Monitoring or a third-party archival product. The goal is a defensible record of who said what and when, stored outside the live data where reviewers can search it. If your industry has retention rules, treat messaging as in scope from day one. Retrofitting capture after a conversation has happened does not recover what was never recorded.
Where Slack fits and when to choose it
Salesforce's stated direction for real-time collaboration is Slack. After the acquisition, new investment went into Slack channels, direct messages, and deep ties between Slack and Salesforce records. Flow ships a Send Slack Message action, and the Slack integration can surface conversations on records and push alerts based on Salesforce data. For an org running active day-to-day collaboration, Slack is usually the better home for private chat. Chatter Messages have not been removed, though. They remain a current feature and a sensible choice for orgs that have not adopted Slack, for quick internal notes, and for some Experience Cloud sites where external members collaborate without Slack access. The practical guidance is to decide deliberately. Document when people should use a Chatter Message, a Chatter Group, or a Slack DM, so sensitive content lands on the surface you actually govern and monitor. Mixed signals lead to private content scattered across tools, which is exactly what compliance teams dread.
Enable and govern Chatter Messages
Chatter Messages ride along with Chatter itself. To make private messaging available and safe to use, an admin enables Chatter, confirms messages are turned on, and then adds governance for content that needs supervision. These steps happen in Setup under Chatter Settings.
- Enable Chatter
In Setup, go to Feature Settings, then Chatter, then Chatter Settings. Confirm Chatter is enabled for the org. Private messages depend on Chatter being on, so this is the foundation everything else sits on.
- Confirm private messages are available
In Chatter Settings, check that messaging is allowed. Internal users get Chatter Messages with Chatter. For Experience Cloud, verify the site's settings and the relevant user profiles permit messaging so members can actually start conversations.
- Add moderation if you need it
Write an Apex trigger on the ChatterMessage object to scan or block content as messages are created. Use this when policy requires keyword filtering or other checks before private content is stored.
- Plan capture and retention
For regulated orgs, pair messaging with Salesforce Shield Event Monitoring or a third-party archival tool. Decide retention rules before users start messaging so you have a reviewable record from the first conversation.
The Setup page that turns Chatter on and exposes feed and messaging behavior for the org.
Site and profile controls that decide whether external members can send private messages.
Apex triggers on the ChatterMessage object for moderating or filtering private content.
The add-on that helps capture activity for compliance review and retention.
- The participant list is locked at creation. Adding someone later means starting a brand new conversation, not editing the existing one.
- Admins cannot read users' messages in the standard interface without elevated access such as View All Data, so do not assume you can audit content casually.
- Default storage is not a compliance archive. If you must supervise communications, configure capture before users begin, because nothing is retained retroactively.
Prefer this walkthrough as its own page? How to Message, Chatter in Salesforce, step by step
Trust & references
Cross-checked against the following references.
Straight from the source - Salesforce's reference material on Message, Chatter.
Hands-on resources to go deeper on Message, Chatter.
About the Author
Dipojjal Chakrabarti is a B2C Solution Architect with 29 Salesforce certifications and over 13 years in the Salesforce ecosystem. He runs salesforcedictionary.com to help admins, developers, architects, and cert/interview candidates sharpen their fundamentals. More about Dipojjal.
Test your knowledge
Q1. What distinguishes a Chatter Message from a normal post in the Chatter feed?
Q2. On which standard object are Chatter Messages stored?
Q3. What happens when you want to add a new participant to an existing Chatter Message conversation?
Discussion
Loading discussion…