While there’s already an official help article titled “Make Files on Records Visible to Customers,” it lacks comprehensive coverage, prompting me to write this more in-depth article on the subject.
For Community Users to access attached files on records, all the following conditions must be met:
- Digital Experiences must be enabled
- Customer Access must be enabled
- If Customer Access is “Set by Record”, the Community User must have access to the record to which the file is attached.
- If profile-based Chatter rollout is enabled in the organization, the “Enable Chatter” permission must be granted to the user by a profile or permission set.
If a Community User has access to the record and Customer Access is enabled for the file, but the file is still not visible to the Community User, the lack of the “Enable Chatter” permission should be the first thing to check.
About Customer Access
To provide Community Users access to the files attached to the records, enable Customer Access for each file from the record’s “Files” or “Notes & Attachments”related list. At that time, select one of the following options:
- Viewer: Grants view access to the file
- Set by Record: Access to the file is granted in conjunction with access to the record
Automating Customer Access Activation
Inside Salesforce, enabling Customer Access means updating the Visibility field value of a ContentDocumentLink record (with ShareType=V) from “InternalUsers” to “AllUsers.” Therefore, by using an Apex Trigger related to ContentDocumentLink, you can automate the activation of Customer Access.
Understanding the “Enable Chatter” Permission
Although Chatter is not inherently related to Files, if profile-based Chatter rollout is enabled in the organization, access to Chatter is required to grant access to files. Without access to Chatter, users won’t even see the file-related list. While I don’t have a solid understanding of why this specification is in place, my guess is that it has something to do with the fact that Salesforce files are actually stored on AWS S3, and this implementation was first introduced for Chatter’s attached files.