chatter-notification-tuning

Use when admins are reducing Chatter signal-to-noise across an org — covers org-level Chatter Email Settings, per-user Email Settings preferences, group-level email digest frequency (Daily / Weekly / Limited / Never), bell-icon Custom Notifications vs Chatter feed-post tradeoffs, automated-feed suppression on record types via Feed Tracking config, and the Chatter Settings org defaults that control whether new users start with everything-on. Triggers: 'chatter feed full of automated posts nobody reads', 'users complain about chatter email volume', 'turn off chatter notifications for a specific group', 'change default chatter digest frequency', 'stop process builder posts from filling the feed'. NOT for Custom Notifications API design (use apex/apex-custom-notifications-from-apex), NOT for Connect API / Chatter REST API integration patterns (use apex/apex-connect-api-chatter), NOT for Chatter group lifecycle and governance (use admin/chatter-group-governance once authored).

Best use case

chatter-notification-tuning is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Use when admins are reducing Chatter signal-to-noise across an org — covers org-level Chatter Email Settings, per-user Email Settings preferences, group-level email digest frequency (Daily / Weekly / Limited / Never), bell-icon Custom Notifications vs Chatter feed-post tradeoffs, automated-feed suppression on record types via Feed Tracking config, and the Chatter Settings org defaults that control whether new users start with everything-on. Triggers: 'chatter feed full of automated posts nobody reads', 'users complain about chatter email volume', 'turn off chatter notifications for a specific group', 'change default chatter digest frequency', 'stop process builder posts from filling the feed'. NOT for Custom Notifications API design (use apex/apex-custom-notifications-from-apex), NOT for Connect API / Chatter REST API integration patterns (use apex/apex-connect-api-chatter), NOT for Chatter group lifecycle and governance (use admin/chatter-group-governance once authored).

Teams using chatter-notification-tuning should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/chatter-notification-tuning/SKILL.md --create-dirs "https://raw.githubusercontent.com/PranavNagrecha/AwesomeSalesforceSkills/main/skills/admin/chatter-notification-tuning/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/chatter-notification-tuning/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How chatter-notification-tuning Compares

Feature / Agentchatter-notification-tuningStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Use when admins are reducing Chatter signal-to-noise across an org — covers org-level Chatter Email Settings, per-user Email Settings preferences, group-level email digest frequency (Daily / Weekly / Limited / Never), bell-icon Custom Notifications vs Chatter feed-post tradeoffs, automated-feed suppression on record types via Feed Tracking config, and the Chatter Settings org defaults that control whether new users start with everything-on. Triggers: 'chatter feed full of automated posts nobody reads', 'users complain about chatter email volume', 'turn off chatter notifications for a specific group', 'change default chatter digest frequency', 'stop process builder posts from filling the feed'. NOT for Custom Notifications API design (use apex/apex-custom-notifications-from-apex), NOT for Connect API / Chatter REST API integration patterns (use apex/apex-connect-api-chatter), NOT for Chatter group lifecycle and governance (use admin/chatter-group-governance once authored).

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Chatter Notification Tuning

Activate this skill when an admin needs to reduce Chatter feed noise, lower email volume, or rebalance the notification surface across Chatter feed posts, Custom Notifications (bell), and email alerts. The skill is about *governance* of the notification channel — not authoring new automation.

---

## Before Starting

Gather this context before proposing changes:

- **Where the noise comes from.** Three sources, three different fixes:
  - **Automated feed posts** — Flow `Post to Chatter` actions, Process Builder posts, Apex `FeedItem` inserts, automated `@mentions` in feed. Look in Setup → Object Manager → relevant object → Feed Tracking, plus search Flows for "Post to Chatter" actions and Apex for `FeedItem` inserts.
  - **Group activity emails** — Member-driven posts in Chatter groups. Per-group `Email Frequency` controls digest vs per-post.
  - **Follower / record-followed emails** — Triggered when a user follows a record (manual or auto-follow), tied to Feed Tracking changes.
- **Who's complaining.** A single noisy executive often drives a full-org tuning project; a quieter pattern is "everyone deletes the digest unread." Both need different responses.
- **Do you have Custom Notifications (Notification Builder)?** Available since Summer '20. The bell-icon channel is generally a better fit than feed posts for *targeted, transient* notifications. If the answer is "we never used it," the most-leveraged tuning is migrating high-volume automated feed posts to Custom Notifications.
- **License constraints.** Chatter Free / Chatter External users have a smaller subset of email-notification controls. Customer Community + Customer Community Plus follow Experience Cloud notification mechanics, not the standard Chatter set.

---

## Core Concepts

### Concept 1 — Three control surfaces, layered

Chatter notifications layer like a CSS cascade. Each surface can override the layer above it:

1. **Org-level Chatter Settings** (Setup → Chatter Settings + Setup → Email Settings → Chatter Email Settings).
   - `EnableChatter`, `EnableEmailNotifications`, `EnableMyChatterMessages`.
   - Sets the *default* on for new users and the global ceiling — disabling at this level overrides everything below.
2. **Group-level Email Frequency** on each `CollaborationGroup` record.
   - Values: `Daily`, `Weekly`, `Each post`, `Limited`, `Never`. `Limited` sends emails only for posts that @mention the user or are in the user's first-degree-followed records.
   - Group owners and admins can change this; non-owner users can only change *their own* per-group preference under My Settings.
3. **User-level Email Settings** (My Settings → Email → Email Notifications).
   - Per-user opt-out of bookmark replies, comments on followed posts, group digest choices. The user's settings always override the org default once they touch the page.

The cascade explains why an org-level "turn off chatter emails" doesn't always work — existing users who once saved their Email Notifications page now have a per-user record that pins them on.

### Concept 2 — Feed Tracking is what makes records noisy, not Chatter

Feed Tracking on an object/field generates a `FeedItem` every time a tracked field changes on a record that someone follows. Two failure modes:

1. **Tracking too many fields.** Tracking `LastModifiedDate` on `Account` will generate a `FeedItem` on every save — usually unwanted. Recommended: track only fields tied to *qualitative state* (Stage, Owner, Status), never timestamps or rollup fields.
2. **Auto-follow is on.** Setup → Chatter Settings → "Allow Coworker Invitations" + per-object Auto-Follow rules cause users to silently accumulate followed records. The user later sees floods of automated activity in their feed and has no idea where the follows came from. Audit auto-follow rules early.

To kill noise at the source: prune Feed Tracking to ≤5 fields per object, and disable auto-follow on objects that are mass-edited (Lead, Case).

### Concept 3 — Custom Notifications (bell) vs Chatter feed posts

Decision tree for "I want to tell users something happened":

| Goal | Use |
|---|---|
| Targeted, transient alert ("your case was reassigned") | Custom Notification (bell). Disappears when read. Optional desktop / mobile push. |
| Durable record of an event ("approval rejected on Opp #4567") | Chatter `FeedItem` with `Visibility = InternalUsers`. Preserves audit trail. |
| Broadcast announcement ("system maintenance Sunday") | Custom Notification with broad recipient list, NOT a feed post on user records. |
| Process telemetry ("flow completed successfully") | NEITHER. Use Email Alert or a dashboard. Chatter is not a logging channel. |

The most-leveraged tuning move in a noisy org is auditing Flow / Apex `FeedItem` inserts and migrating the transient-alert ones to Custom Notifications. A single Flow that posts a "Stage moved to Closed Won" feed item on every opportunity may produce thousands of `FeedItem` rows per day; Custom Notifications target the same recipients without the storage and feed-pollution cost.

### Concept 4 — `Limited` digest is underused

Most orgs default group email frequency to `Each post` or `Daily`. The `Limited` setting is the smartest default for collaboration groups:

- Sends emails only for posts that @mention the recipient OR posts that comment on a thread the recipient already participated in.
- Cuts email volume by 80–95% in active groups while preserving the "this involves me" signal.

For broadcast groups (announcements, all-hands), `Daily` digest is appropriate. For project-specific or interest groups, `Limited` is almost always the right default.

---

## Recommended Workflow

1. **Inventory the noise sources.** Run the bundled `scripts/check_chatter_notification_tuning.py` against your retrieved metadata to enumerate Flows that post to Chatter, Apex classes that insert `FeedItem`, and objects with Feed Tracking on more than 5 fields.
2. **Audit Feed Tracking per object.** For each object reported by the checker, open Setup → Object Manager → Feed Tracking. Remove timestamp / rollup / formula fields from the tracking list. Aim for ≤5 qualitative fields per object.
3. **Migrate transient automated feed posts to Custom Notifications.** Replace each `FeedItem`-inserting Flow / Apex with a Custom Notification action. Delete or deactivate the original after a 2-week parallel-run window.
4. **Set group email frequency defaults.** For each `CollaborationGroup`, decide between `Daily`, `Limited`, and `Never` based on group purpose. Communicate the change to group owners with the rationale.
5. **Audit auto-follow rules.** Setup → Chatter Settings → User Auto-Follow defaults + any per-object follow automation. Disable auto-follow on mass-edited objects. Existing follows can be cleaned with a one-time `EntitySubscription` purge.
6. **Reset user-level Email Notifications stuck-on state.** For users who saved their settings before the org-level change, only they can re-save their Email Notifications page. Communicate the action with a step-by-step screenshot in the change announcement.
7. **Re-measure.** Two weeks after the change, re-run the checker and pull `FeedItem` count + `EntitySubscription` count by date to confirm the curve.

---

## Related Skills

- `apex/apex-custom-notifications-from-apex` — Custom Notification API patterns, recipient targeting, target page navigation
- `apex/apex-connect-api-chatter` — programmatic feed manipulation via Connect API
- `admin/email-deliverability-strategy` — broader email volume management beyond Chatter

Related Skills

lwc-toast-and-notifications

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when implementing or reviewing user feedback patterns in Lightning Web Components — specifically toast messages, lightning-alert, lightning-confirm, lightning-prompt, and platform notifications. Trigger keywords: 'ShowToastEvent', 'toast in lwc', 'lightning-alert lwc', 'lightning-confirm promise', 'Experience Cloud notification'. NOT for modal overlays (use lwc-modal-and-overlay).

flow-email-and-notifications

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when sending emails, in-app bell notifications, SMS, or Slack messages from Salesforce Flow. Trigger keywords: 'send email action', 'custom notification', 'bell icon', 'Send Custom Notification', 'SMS from flow', 'Slack notification flow'. NOT for designing or managing email templates from Setup (use admin/email-templates-and-alerts), and NOT for Email Alerts defined in workflow rules.

apex-connect-api-chatter

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when posting to a Chatter feed, creating feed comments, @mentioning users or groups, or rendering rich-text posts from Apex via the ConnectApi namespace. Trigger keywords: ConnectApi, FeedItem, Chatter post, @mention, rich text post, FeedElementCapabilities, link post. NOT for: email notifications (see apex-email-messaging), custom bell notifications (see apex-custom-notifications-from-apex), or Experience Cloud feed embeds (see community-feed-components).

report-performance-tuning

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when a report or dashboard is slow, timing out, hitting row limits, or consuming excessive system resources on large-volume objects — covers selective filter strategy, custom report type optimization, async report execution via Analytics API, dashboard refresh scheduling, and grouping/aggregation tuning. Triggers: 'report times out', 'report is slow', 'dashboard not refreshing', 'report row limit hit', 'too many report results'. NOT for CRM Analytics / Tableau CRM performance (separate skill). NOT for sharing-model or visibility issues causing missing rows (use admin/sharing-and-visibility). NOT for building or designing reports from scratch (use admin/reports-and-dashboards-fundamentals).

lightning-page-performance-tuning

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when a Lightning record page, home page, or app page is slow to load or render — covers Experienced Page Time (EPT) analysis, component count reduction, progressive disclosure via tabs and conditional rendering, Lightning Experience Insights diagnostics, and DOM/XHR minimization strategies. Triggers: 'Lightning page is slow', 'EPT is high', 'record page takes too long to load', 'too many components on page', 'Lightning Experience Insights shows slow page', 'how to optimize Lightning page performance'. NOT for Visualforce page performance (separate concern). NOT for Apex or SOQL query optimization (use apex/apex-cpu-and-heap-optimization or data/soql-query-optimization). NOT for report or dashboard performance (use admin/report-performance-tuning).

custom-notification-types

8
from PranavNagrecha/AwesomeSalesforceSkills

Custom Notification Types for desktop/mobile push alerts from Flow or Apex: type creation, target channels, Messaging.CustomNotification invocation, recipient limits, bulk notification patterns. NOT for email alerts (use email-templates-and-alerts). NOT for in-app bell notifications alone (use chatter-feed-customization).

custom-notification-type-design

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when designing Custom Notification Types that fire via Flow, Apex, or Process Builder to Lightning bell, desktop, mobile (push), and Slack. Covers channel enablement, targeting, deliverability, consent, and anti-spam discipline. Does NOT cover email templates (see modernize-email-templates) or Salesforce Notifications API general reference.

chatter-group-governance

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when admins are governing the Chatter group lifecycle — creation policy, public/private/unlisted visibility decisions, group ownership transfer when owners leave, archived vs inactive vs deleted state changes, auto-archive behavior, naming conventions, group templates (Information Templates), and orphan-group cleanup after user terminations. Triggers: 'we have 800 dead chatter groups', 'group owner left the company who owns it now', 'should this group be public private or unlisted', 'when does a chatter group auto-archive', 'how do I delete vs archive a chatter group', 'we need a chatter group naming convention'. NOT for Chatter notification / digest / feed-noise tuning (use admin/chatter-notification-tuning), NOT for Chatter REST API integration patterns (use apex/apex-connect-api-chatter), NOT for Custom Notifications API (use apex/apex-custom-notifications-from-apex), NOT for Experience Cloud / Customer Community group access (different sharing model).

xss-and-injection-prevention

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when writing or reviewing Visualforce pages, Apex controllers, or LWC components that output user-supplied data, build dynamic queries, or construct HTTP responses. Triggers: 'XSS in Visualforce', 'SOQL injection vulnerability', 'how to encode output in Apex', 'JSENCODE Visualforce', 'open redirect prevention'. NOT for Apex CRUD/FLS enforcement (use soql-security or apex-crud-and-fls), NOT for Shield encryption (use shield-encryption-key-management), NOT for AppExchange security review process (use secure-coding-review-checklist).

visualforce-security-and-modernization

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when hardening or modernizing legacy Visualforce pages — covers the platform CSRF token model and when disabling it is a security regression, view state encryption guarantees and the 170 KB ceiling, FLS/CRUD enforcement gaps on `<apex:outputField>` and on getters that return sObjects, `<apex:includeScript>` interaction with the org Content Security Policy, hosting LWC inside a VF page via `lightning:container` / `lightning-out`, and the retire-vs-harden-vs-leave-alone decision for an inventory of legacy pages. Triggers: 'should I rewrite this Visualforce page in LWC', 'CSRF protection disabled on Visualforce page is that safe', 'community user sees a field they should not on a Visualforce page', 'view state encryption is that enough for sensitive data', 'how do I host an LWC inside a Visualforce page', 'apex:dynamicComponent and apex:actionFunction safe to keep'. NOT for greenfield Visualforce architecture (use apex/visualforce-fundamentals — controller types, view state pattern selection, PDF rendering); NOT for Visualforce email template authoring (use apex/visualforce-email-templates if/when that skill is authored); NOT for general Apex security review across triggers and async (use apex/soql-security and security/secure-coding-review-checklist).

transaction-security-policies

8
from PranavNagrecha/AwesomeSalesforceSkills

Transaction Security policy creation and configuration: condition builder, enhanced policies, enforcement actions (block, MFA, notification, end session), real-time monitoring mode, and policy troubleshooting. NOT for Event Monitoring log analysis or Shield Event Monitoring setup (use event-monitoring). NOT for Apex testing or debug-log analysis.

sso-saml-troubleshooting

8
from PranavNagrecha/AwesomeSalesforceSkills

Diagnosing broken SAML SSO into Salesforce — IdP-initiated vs SP-initiated flows, signing-certificate validity / expiry, NameID format mismatches, RelayState handling, audience / entityId / issuer mismatches, clock skew, the SAML Assertion Validator in Setup, the Login History debug log, and the My Domain prerequisite for SSO. Covers the standard diagnostic loop: read the SAML response, identify which check failed, fix at the IdP or SP. NOT for OAuth / OpenID Connect SSO (see security/oauth-openid-troubleshooting), NOT for setting up SSO from scratch (see security/sso-saml-setup).