You can absolutely use Salesforce Flow to share records in a clean, repeatable way, without relying on users to click “Sharing” or on developers to write Apex.
I work as a system administrator in a company that uses Salesforce to manage its business. Recently, we conducted a campaign and got many new leads.
These leads were assigned to the marketing team for follow-up. However, the sales team also required access to some of these leads to contact the high-potential leads.
Now, instead of sharing or assigning high-potential leads one by one to the sales team, I created a Flow that automatically shares the records based on set criteria.
In this article, we will learn about how to share records using Salesforce Flow. So that we don’t need to share each record manually, and can give access to users automatically based on rules.
What “sharing records using Flow” really means
Before we jump into Flow, it helps to be clear on what we’re actually doing when we “share” a record.
In Salesforce, record access comes mainly from:
- Organization‑Wide Defaults (OWD)
- Role hierarchy
- Sharing rules
- Teams (Account Teams, Opportunity Teams, etc.)
- Manual sharing (via the Sharing button)
- Apex‑managed sharing
Flow comes into play when you want to automate what manual sharing or Apex would otherwise do, usually by creating a row in the object’s Share table (for example, AccountShare, CaseShare, CustomObject__Share).
Typical use cases I see:
- Share a record automatically with someone (a manager, a specific user, a queue, or a role) whenever it’s created or updated.
- Share a record with a group of people based on business rules (for example, all members of a “Deal Desk” public group).
- Re-apply the sharing logic after ownership changes.
- Clean up sharing records when certain conditions are no longer true.
Different Ways to Share Records In Salesforce
In Salesforce, there are three types of sharing rules to share records.
- Owner-Based Sharing: In this type, we can share records owned by a specific user and determine the access level.
- Criteria-Based Sharing: In this sharing, we can set criteria, and when the records meet those criteria, they will be shared with another user.
- Manual Sharing: We can share records manually in public groups, roles, and individual users. While sharing the records manually, we can grant read-only or read/write access to whom we want.
Now, let’s take an example of sharing case records with the Salesforce Queue. The company currently operates in California, Florida, and Georgia.
Here, cases raised from any of these regions will be assigned to the queue specifically created to handle cases from that region. The following prerequisites are required to create an auto-launched flow in Salesforce:
Then we need three different Queues to assign cases, named California Queue, Florida Queue, and Georgia Queue.
We need a Custom Picklist Field “Region” on the Standard Case Object with the following values: California, Florida, and Georgia.
Share Records Using Salesforce Flows
Below, I will explain, step by step, how to create a Flow to automatically share records in Salesforce.
Click on the Setup. -> Home Page-> In the Quick Find box, search for Flows. You will see an option under Process Automation. -> Click on Flows.

Click on the New Flow button to create a new flow.

We want to create a flow for creating the records, so we have to select the Record-Trigger flow. Then, click on the Create button.

In the Object field, select the object for which we want to create a flow. In our scenario, we need to create a flow on the Case Object.
In the Configure Trigger option, we need to select when we want to invoke this flow.

When we select the Case Region value, the Case raised from any of these regions will be assigned to the queue specifically created to handle that region’s cases.
So we have to select Fast Field Update, which is used to execute the flow before the record is saved to the database.

First, we need to get the queue details in the flow. For that, we use the Get Records element; when we click it, we need to enter the following details.
- Label: This label will display on the canvas where the Get Records element is. Here, I have entered the Get Queue Details displayed on the Get Records element.
- API Name: It will automatically populate as we click the text box.
- Description: Description is optional; we can enter a short intro about our flow.
- Object: We need to select an object to fetch records from. In this field, we must choose either the Queue object or the Group object, depending on whether we’re referring to the Queue object in Salesforce or the underlying queue.

Now, to assign a record, we have DeveloperName from the group object to relate to the Region from the Case Object.
That means whenever we select a region from the case object, it will find a queue by using DeveloperName.

Now, we need to assign a case owner to the queue based on the value selected in the region.

After setting up all labels and conditions, click the Save button to save the flow. For that, we need to enter the Flow Label; here, I have entered “Share Records using Salesforce Flow”.
The API Name will automatically populate as we click the text box. The Description is optional; we can enter a short intro about our flow. Then click on the Save button.

It is best practice in the flow to debug it before activating it, and then, if no errors occur, activate it.

To check whether the flow is working properly, go to the object on which you have created a flow. If you have selected trigger flow when the record is created, then create the record.
As per our scenario, the company currently operates in California, Florida, and Georgia. A case raised from any of these regions will be assigned to the queue specifically created to handle cases from that region.

On the Details Page, you can see that the Case Owner has changed to vale and queue based on the Region field.

This is how we can use Flow to automatically share records in Salesforce.
Handle Error Conditions When Sharing Fails in Salesforce Flow
Sharing can fail if:
- The UserOrGroupId is invalid or inactive.
- You try to set an AccessLevel that’s not allowed.
- You try to create a duplicate share, and you have unique constraints.
Simple approaches:
- Add checks for IsActive on User when you query them.
- Use a Decision to skip creating a share if a matching Share record already exists.
- Consider a simple Fault path in your Create Records element that logs an error to a custom object or sends an alert.
Keep the logic in one place
Try not to scatter record‑sharing logic across:
- Multiple Flows
- Workflow Rules
- Process Builder
- Apex triggers
Pick Flow as your main automation tool and consolidate your sharing logic there, so you and future admins can find and update it easily.
Name your RowCause clearly
If you use Apex‑managed sharing reasons (custom RowCause values), give them labels that make sense to admins and users, such as:
- “Shared with Owner’s Manager”
- “Shared with Deal Desk Group”
- “Shared via Access Request”
This makes it much easier to troubleshoot from the record’s Sharing detail page.
Conclusion
I hope you have an idea of how to share records in Salesforce using a flow. We have seen what sharing records means, their types, and when we can use them.
Additionally, we have also seen how to create sharing records in Salesforce Flow with a scenario and explanation.
You may like to read:
- How to Launch Flow From Button in Salesforce
- How to Clone a Record with Flow in Salesforce
- How to Create an Email Template In Salesforce Flow

Shubham is a Certified Salesforce Developer with technical skills for Building applications using custom objects, approval processes, validation rule salesforce flows, and UI customization. He is proficient in writing Apex classes, triggers, controllers, Apex Batches, and bulk load APIs. I am also familiar with Visualforce Pages and Lighting Web Components. Read more | LinkedIn Profile