Architectural Overview
The ChatterSettings metadata type is the master control plane for Salesforce Chatter collaboration across internal Lightning Experience apps, Service Cloud Case Feeds, and Experience Cloud (Network) sites. Stored as Chatter.settings-meta.xml, it controls feed post mutability (enableFeedEdit), unlisted group privacy (enableUnlistedGroups), rich link metadata fetching (enableRichLinkPreviewsInFeed), and records sharing via Chatter groups (allowRecordsInChatterGroup).
From a security and compliance standpoint, ChatterSettings directly impacts data governance. For example, financial services and healthcare architects often disable enableFeedEdit or allowCustomerInvitations via Chatter.settings-meta.xml so that feed posts remain immutable for regulatory compliance and external guests cannot be invited ad-hoc outside governed Experience Cloud portals.
Directory Location and File Suffix
In Salesforce DX source format, ChatterSettings is stored in the settings directory as Chatter.settings-meta.xml.
| Property | Value |
|---|---|
| Directory Path (SFDX) | force-app/main/default/settings/ |
| File Name (SFDX) | Chatter.settings-meta.xml |
| Classic Metadata File | settings/Chatter.settings |
| Package.xml Type & Member | <name>Settings</name> with <members>Chatter</members> |
Key Metadata Fields
The following table highlights the primary configuration flags on ChatterSettings in API version 68.0 (Winter ’27):
| Field Name | Field Type | Architectural Description |
|---|---|---|
enableChatter |
boolean |
Master toggle that enables Chatter across the entire Salesforce organization. |
enableFeedEdit |
boolean |
Allows authors and record owners to edit published Chatter feed posts and comments. |
enableFeedPinning |
boolean |
Allows authorized users to pin up to three important posts to the top of group and topics feeds. |
enableUnlistedGroups |
boolean |
Enables hidden, invite-only Chatter groups (Unlisted) that do not appear in list views or search results for non-members. |
allowRecordsInChatterGroup |
boolean |
Enables associating records (such as Accounts or Opportunities) with Chatter groups via CollaborationGroupRecord. |
allowCustomerInvitations |
boolean |
Allows internal users to invite external customers into private Chatter groups as Chatter External users. |
allowChatterGroupArchiving |
boolean |
Allows group owners and managers to archive inactive Chatter groups manually or after 90 days of inactivity. |
enableOutOfOffice |
boolean |
Lets users schedule Out of Office messages next to their name in Chatter feeds and @mentions. |
enableRichLinkPreviewsInFeed |
boolean |
Automatically renders rich title, thumbnail, and summary previews for URLs shared in Chatter posts. |
enableTodayRecsInFeed |
boolean |
Displays Einstein/Today recommendations inside user feeds. |
Declarative Metadata Example
The following Chatter.settings-meta.xml configures enterprise-hardened Chatter settings: enabling feed pinning, unlisted groups, out-of-office status, and record associations in groups, while blocking ad-hoc external customer invitations (<allowCustomerInvitations>false</allowCustomerInvitations>).
<?xml version="1.0" encoding="UTF-8"?>
<ChatterSettings xmlns="http://soap.sforce.com/2006/04/metadata">
<allowChatterGroupArchiving>true</allowChatterGroupArchiving>
<allowCustomerInvitations>false</allowCustomerInvitations>
<allowRecordsInChatterGroup>true</allowRecordsInChatterGroup>
<enableApprovalRequest>true</enableApprovalRequest>
<enableChatter>true</enableChatter>
<enableChatterEmoticons>true</enableChatterEmoticons>
<enableFeedEdit>true</enableFeedEdit>
<enableFeedPinning>true</enableFeedPinning>
<enableInviteCsnUsers>false</enableInviteCsnUsers>
<enableOutOfOffice>true</enableOutOfOffice>
<enableRichLinkPreviewsInFeed>true</enableRichLinkPreviewsInFeed>
<enableTodayRecsInFeed>false</enableTodayRecsInFeed>
<enableUnlistedGroups>true</enableUnlistedGroups>
</ChatterSettings>Package Manifest (package.xml)
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>Chatter</members>
<name>Settings</name>
</types>
<version>68.0</version>
</Package>SFDX CLI Retrieval and Deployment
Retrieve and deploy ChatterSettings using the Salesforce CLI (sf):
# Retrieve ChatterSettings into force-app/main/default/settings/Chatter.settings-meta.xml
sf project retrieve start --metadata Settings:Chatter
# Deploy ChatterSettings to the target org
sf project deploy start --metadata Settings:ChatterArchitect Best Practices and Gotchas
Tip
Include Settings:Chatter in your baseline scratch org definition or initial pipeline pre-deployment stage before deploying CustomObject files that set <allowInChatterGroups>true</allowInChatterGroups> or <enableFeeds>true</enableFeeds>.
- Dependency with
allowInChatterGroups: If a CustomObject specifies<allowInChatterGroups>true</allowInChatterGroups>,allowRecordsInChatterGroupinChatterSettingsmust betruein the target org. - Compliance & eDiscovery Immutability: In FINRA or SEC-regulated environments where communications cannot be altered after publication without an audit log, either set
<enableFeedEdit>false</enableFeedEdit>or ensure your compliance archiving tool queries theFeedRevisionobject via SOAP/REST API.
Frequently asked questions
How is ChatterSettings referenced in package.xml and SFDX source format?
In package.xml, specify Settings as the type and Chatter as the member. In SFDX source format, the file is stored at force-app/main/default/settings/Chatter.settings-meta.xml.
Why should architects disable allowChatterGroupArchiving in certain compliance orgs?
In regulated orgs that run automated legal hold or eDiscovery jobs against CollaborationGroupfeeds, controlling group archiving ensures active audit processes behave predictably.
What is the security risk of enabling allowCustomerInvitations in ChatterSettings?
Enabling allowCustomerInvitations lets users invite external users with email domains outside your company into private Chatter groups, which should be disabled if external collaboration is strictly governed through Experience Cloud.
What happens if enableChatter is set to false in an org with Experience Cloud or Case Feed?
Salesforce blocks disabling Chatter if features that depend on it, such as Experience Cloud sites, Case Feed, or Feed Tracking on objects, are active in the target org.
Comments
Questions, corrections and tips are welcome. Comments are GitHub Discussions, so you sign in with GitHub.