Do you remember doing round robin reading in school? I do, and I liked how we all took turns, so everyone got a chance to read aloud. It was fair, orderly, and no one got left out. I think the round robin concept is great and can be applied to so much more than just reading aloud.
In Salesforce, round robin assignment is a method used to distribute leads or cases evenly across a team. It ensures that each rep gets their fair share of records, helping to balance workloads and maintain fast response times. Salesforce doesn’t offer a direct built-in round robin feature, but there are several ways to implement it.
In this guide, we’ll explore what round robin assignment is and why it’s useful, how you can set it up in different ways, and what Salesforce capabilities (and limitations) exist for each method.
What Is Round Robin Assignment in Salesforce?
Round robin assignment distributes records (usually leads or cases) sequentially among a list of users or queues. It ensures that each team member gets a fair share of the workload over time.
For example, if you have three sales reps – Mira, John, and Clara – a round robin assignment model would distribute new leads in an orderly fashion, like this:
- Lead 1 → Mira
- Lead 2 → John
- Lead 3 → Clara
- Lead 4 → Mira (and so on)
This method avoids overloading specific reps and, therefore, supports faster response times, but Salesforce doesn’t have a built-in “round robin” function out of the box. However, with the wide variety of tools that the platform offers, it does provide everything you need to build one.
Round Robin Assignment (the Traditional Way)
This was actually the very first method I was taught for creating round robin assignments back when I was studying for the admin exam. It involves creating two fields: an auto-number field and a formula field, and using them alongside your Lead (or Case) Assignment Rule.
Creating the Auto-Number Field
- Go to Setup → Object Manager → Lead or Case → Fields & Relationships → New.
- Select Auto Number and name it Lead Number or Case Number.
- Set the Display Format to {0} and the Starting Number to 1.
- Tick the boxes for Generate Auto Number for existing records and Set this field as the unique record identifier from an external system, then hit Next.
- Give user permission to the right people, then click Next.
- Hide it from all page layouts and click Save & New.
Creating the Formula Field
- Select Formula and name it Round Robin.
- Choose Formula Return Type as Number, and set decimal places to 0, then click Next.
- Make sure you’re in the Advanced Formula tab, and paste the following formula into the editor (change Case to Lead if you’re working with the Lead object):
MOD(VALUE({!Case_Number__c}),3)+1
- Hit Next and give user permission to the right people.
- Click Next again, hide it from all page layouts, and click Save.
Okay, let’s take a step back and look at what we have so far.
The Auto Number field we created is meant to assign a number to each record in chronological order, starting from 1. If you already have Lead or Case records in your org, it’s meant to count those and assign numbers as well.
The formula we made gets the numerical value of the number assigned by the Auto Number field and then divides it by 3. So, if the Lead or Case Number is set to 5 for a certain record, divide that by 3.
Since we set the decimal places to 0, the result will not be a decimal but a whole number with a remainder. In this case, it’s 1 remainder 2. That remainder is then taken and added to 1.
So, for example, if we have four Cases numbered by the Auto Number field as {7}, {8}, {9}, and {10}, the value of the formula field is as follows:
- First Case: 7 divided by 3 = 2, remainder 1 + 1 = 2
- Second Case: 8 divided by 3 = 2, remainder 2 + 1 = 3
- Third Case: 9 divided by 3 = 3, remainder 0 + 1 = 1
- Fourth Case: 10 divided by 3 = 3, remainder 1 + 1 = 2
Notice how the results are numbered orderly as 1, 2, 3, 1, 2, 3, 1, 2, and so on.
Creating the Assignment Rule
- Go to Setup → Lead or Case Assignment Rules.
- Click New and name your rule Round Robin Assignment.
- Open the rule and click New under Rule Entries.
- Set the Sort Order to 1, and set the rule criteria.
- Select your Round Robin field with operator Equals and value 1.
- Select your first round robin member under user or queue to assign the case to.
- From here, you can also select the email template to be sent to that user so they’re informed that the record has been assigned to them.

- Click Save & New, then repeat steps 5 to 8, each time adding 1 to the Sort Order and to the Round Robin field’s value as well. For this example, we can only add three members (I’ll explain why later). Your rule should look like this so far:

- If you’re satisfied, set the rule to Active.
This setup should work for your records (Leads or Cases). If you’d like to allow assignment for manually created records, make sure to go to your object’s page layout and check the box for Show on edit page under Layout Properties → Case (or Lead) Assignment Checkbox.

The Catch
While this traditional method is simple, clever, and a completely native way to set up a round robin assignment using only out-of-the-box functionality, it does come with some drawbacks.
First, if you ever need to add new members to your round robin group, you’ll have to manually update your formula. For example, if your current formula is based on three members (as in our example above) and you hire two new team members, you’ll need to adjust it to MOD(VALUE({!Case_Number__c}),5)+1
. Not only that, but your assignment rule will also need to be updated to reflect the new group members, with additional rule entries.

The same applies if someone in the team goes on leave or is temporarily unavailable. You’ll need to revise both the formula and the assignment rule again to prevent routing records to someone who’s out of office.
If your team changes frequently or if you need a setup that dynamically adapts to availability, this method is definitely not the way to go. That said, if your group is fairly stable or if you don’t mind records landing with someone who’s OOO, then this method is a great option. It requires no installation, no new licenses, and no extra cost.
Round Robin Assignment Using Flow
If you’re looking for a more scalable and flexible way to handle round robin assignments without relying on manual updates whenever team members change, Flow is your next best friend. With Flow, you can build a logic-based assignment system that’s easier to maintain and more dynamic. Plus, you’re limited to Leads and Cases – you can also set up round robin assignments for custom objects.
There are many ways to set this up with Flow, as Flow Builder is very highly customizable depending on your business needs. In this article, we’ll look into one of the basic approaches to building this.
Creating Your Custom Objects
This method involves creating a custom object that represents your team and its members. In this article, we’ll name the object Team and its child Team Member, where Team Member is the detail in a Master-Detail relationship with Team.

In the Team Member object, add a lookup field to the User object, plus another field that signifies whether the referenced user is active or not. In this case, I used a checkbox.

Also, add a Date/Time field named Last Assignment, which will be continuously updated by the Flow so it knows who the most recent assignee was.

Now that you have your custom objects ready, proceed to create your teams and their team members. You can have multiple teams for various purposes – for example, an APAC Team for APAC Lead assignments and an EMEA Team for EMEA Lead assignments. In this example, I have set up three members for Team XRAY.

Creating the Flow
On to Flow Builder! Create a new Record-Triggered Flow and select the object you’d like to use for the round robin assignment. I will be using Cases for this and keeping the trigger set to A record is created with no entry conditions for now. This is an After-Save Flow.

Click the plus sign below the start node and add a Get Records element. Its purpose is to get the Team, which in this case is Team XRAY. This is especially useful if you have multiple teams. Filter it according to Team Name.

Click the plus sign before your Get Records element to add another Get Records element. This one is to get your Team’s assigned Team Members.

The key to ensuring a round robin assignment here is the Sort Order for this element. Set it to Ascending and sort it by the Last Assignment Date/Time field we created earlier. This element gets the Team’s members and arranges them so that the last on the list is the most recent assignee, while the first is the member who hasn’t been assigned a record for the longest time.

Next, add another element, but this time use Update Triggering Record. This should update the Owner of the Case record that triggered this Flow. Set the Owner ID to the user from the second Get Records element we did for the Team Member object.

This is all good so far for updating the Owner according to the members of the team, but how will the next new record know who to assign it to next? This is where the Last Assignment field comes into play. After updating the Owner, the Flow should update the Last Assignment field of the Team Member record to the current date and time, so that the Flow knows an assignment has just been done for that member.
We can do this by creating a second Update Records element. This time, select Specify conditions to identify records, and set fields individually, and choose Team Member as the object. Filter the Team Member records so that the Id equals the Id of the Team Member record we got in our second Get Records element. For the field values, set the Last Assignment field to current date and time by selecting $Flow → CurrentDateTime.
You can do a multitude of things with this simple Flow – for example, adding a Decision element after the start node to split into multiple paths for other teams and their members. You can also add more criteria to the elements, as in this scenario, we only used an Active checkbox. You can even use it on other objects, including custom ones. Or maybe you’d want to set it up for a different field aside from the Owner field.
There’s no problem with adding members here, as that would only involve creating a new Team Member record for them. There are countless possibilities, and this solution addresses the drawbacks we had with the traditional method.
The Catch
While using this is definitely a much more scalable and maintainable approach, it’s not without its quirks.
First, it does require the creation and ongoing maintenance of custom objects – Team and Team Member in our example. It’s outside of Setup, but that’s still additional configuration you’ll need to manage, especially if you plan to have multiple teams or change team structures frequently.
Another thing is that this approach assumes that your team members will always have records in the Team Member object, complete with the necessary fields you use for criteria like the Active checkbox. You should always keep this in mind when setting up users, because if someone forgets to update these, or a record gets deleted, your Flow will not include that member in the assignment.
One more to consider is Flow limits. Although this example is lightweight, using Get Records and Update Records over and over – especially when configured across multiple branches – can start to hit limits if you’re processing a high volume of records, like in bulk insert scenarios, for example. And while this approach is also considered an out-of-the-box and no-code solution, it still requires a bit of Flow familiarity and isn’t exactly plug-and-play.
Round Robin Assignment Apps
If you’re strapped for time, this is the fastest way you can set up round robin assignments in your org without building it yourself in Flow or Assignment Rules. The AppExchange offers purpose-built apps designed specifically for this use case, helping save time and reduce the need for ongoing maintenance – especially if your assignment logic is expected to evolve as your team grows. Consider the following:
Dispatcher: Round Robin Leads Routing and Case Assignment
If you’ve ever had experience using the Dispatcher Console in Field Service, this app feels just as well-made and gives you a similar level of control and visibility as a true dispatcher. It’s also one of the easiest ones to use and set up. Supporting standard objects like Leads, Cases, Tasks, and Opportunities, it gives you full control over routing algorithms.
Beyond round robin assignments, you can even set schedules and availability windows for each team member – all within a clean, friendly UI that even displays logs of the records passing through the dispatcher.

Round Robin Assigner
This app from Salesforce Labs is an awesome solution for evenly distributing any object sequentially. The main thing to set up here is a public group, which determines the people who will be part of your round robin rotation. It does not appear on the App Launcher, but it’s designed to be used in automations made with Flow or Process Builder.
Basically, the idea is to add an Apex action called Assign objects and simply add the public group and object. The default behavior assigns the user to the Owner field, but you also have the flexibility to set a different field instead, depending on your use case.

Round Robin Lead Assignment (RRLA 2.0)
While this one’s exclusively available for Leads only, it offers a powerful yet easy-to-configure solution for fairly distributing them across multiple user groups based on custom criteria, no matter where the Leads come from – Web-to-Lead, marketing integrations, the Salesforce UI, or even mass imports. Since it also supports matching logic using custom fields, admins have full control over how and to whom Leads are routed.
What if you’d like to rebalance workloads by reassigning existing leads? This app supports that too, with the simple click of a button for manual reassignment.

Each of these apps offers a unique approach to round robin and advanced assignment logic. Best of all, they’re completely free to install and use, so go and try them out to see which best suits your unique business needs. That said, if your business has more specific or large-scale requirements, you can also search for “round robin” on the AppExchange, where a range of paid solutions offer additional features and enterprise-level customization.
Summary
Round robin assignment in general offers a fair and structured way to distribute records across a team. With benefits like helping avoid agent overload and supporting faster responses, it ensures no one – whether agent or customer – gets left behind. Your business may be comfortable with the traditional formula-based approach using Auto Number and Assignment Rules, or need a more dynamic, scalable solution using Flow and custom objects. When all else fails, the AppExchange is there to offer round robin solutions that are easy to install and configure.
Either way, whichever method you choose, round robin assignment can be a powerful tool to keep your team in the loop – literally. What is your favorite way to implement round robin assignments? Leave your answers in the comments!