How to Build a Round Robin in Salesforce

This post was last updated on 4/26/21.

What is a round robin in Salesforce?

Speed-to-contact is a key metric companies use to track inbound leads. If your organization has a high volume of inbounds, you need a way to route leads among your available reps in order to reduce the lag time between submitting a contact form and the prospect being touched.

According to, the odds of connecting with a lead drops by a factor of 100 if you touch them in 30 minutes vs 5 minutes. The drop-off rate on qualification is 21x if you touch a lead in 30 minutes vs 5 minutes.

It’s no surprise that hot leads are more likely to convert than cold leads, but getting leads connected with reps as soon as possible is key.

To accomplish this, we recommend putting a round robin in place. This is a common solution for good reason — a round robin will evenly distribute leads among your team, ideally taking into consideration which reps are out of office, as well as any territory or account ownership.

Why should I use a round robin?

Besides reducing the time it takes for a sales rep to touch an inbound prospect, a round robin helps avoid a problem almost every sales team faces: cherry-picking reps.

When companies dump all inbound leads into a queue and let sales reps select the leads they want to target, cherry picking is almost inevitable. On one hand, this allows reps to focus on the leads that make the most sense to them. On the other, though, this practice may mean that some leads are never touched, and a lead you don’t touch will never become a customer.

Another great reason to create a round robin is to create a level playing field among your reps. We’ve seen situations where certain SDRs stand out because they monitor the inbound lead queue, fishing for new inbounds, rather than focusing on their key role of outbound prospecting.

Furthermore, in the absence of a round robin, your team can become hugely distracted, and frustrated, by reps arguing over who should own a new inbound.

Who should use a round robin?

Companies with a high volume of inbound leads need some sort of routing system in place, and a round robin will make sure those leads are evenly distributed. At a minimum, you want to make sure leads are routed to the reps in the appropriate territory and vertical. Dumping leads into a single, free-for-all queue with no regard to territory or vertical will lead to lower conversion rates and unhappy prospects.

In an ideal scenario, a basic round robin does the following:

  • Routes leads randomly among your team members
  • Pauses routing to reps who are out of office

Who should not use a round robin?

Some Kicksaw customers ask for a round robin when there isn’t a clear need for one. Leadership hears that a round robin will reduce friction among their sales team and improve speed-to-contact and decides they definitely need one, but that’s not necessarily the case. A round robin is not a silver bullet.

If your sales efforts are targeted at enterprise companies and you have few inbounds, the costs of building and maintaining a round robin will likely outweigh the benefits, at least in the short term.

Here’s a simple test to determine if a round robin makes sense for your company: have you ever heard two, or more, reps arguing over ownership of an inbound?

If the answer is yes, you probably need a round robin as soon as possible (and maybe less testy reps). If you haven’t, though, you probably don’t need one.

How does a round robin work?

When a lead submits a contact form on your website and you have a round robin in place, the following will occur:

  • The lead is created in Salesforce
  • The sales rep who is next in line is assigned as the owner
  • If no contact is made within X minutes, the lead is rerouted

What out-of-the-box tools work for creating a round robin?

There are many tools out there that can help route leads among your team. The most commonly used product we see for lead routing is LeanData. LeanData can be great if you need extra features like attribution, but for 95% of our customers, a custom-built lead routing process works best.

Many businesses want flexibility to make changes to how leads are routed, but also wanted to avoid recurring costs. They find that many of the most popular round-robin tools have features that don’t apply to them.

For example, multi-touch marketing attribution is something lead routing tools offer that really doesn’t make sense for most businesses. We tend to recommend a crawl > walk > run approach to administration and development in Salesforce, and a multi-touch attribution tool is the equivalent of sprinting for most companies.

What skills do I need to build a round robin in Salesforce?

Unfortunately, we haven’t found many vendors who have built really solid, scalable round robin tools that natively work in Salesforce. The things we expect a quality round robin to do (but that we rarely see) are:

  • Route the lead to an account owner if a matching account already exists in Salesforce
  • Re-route the lead if it is not accepted within the SLA
  • Route the lead to the appropriate territory
  • Notify leadership if leads are being missed

An ideal round robin covers all of those scenarios and more. Unfortunately, this means you’ll almost certainly need to build a round robin from scratch. Luckily, the process is doable, even for junior admins.

At a minimum, you’ll need to know how to do the following in Salesforce:

  • Create an record-triggered flow
  • Create custom objects
  • Create custom fields
  • Create lead assignment rules
  • Create lead queues

Step 1: Object Design

Custom Object: Round_Robin__c

A round robin is an object we use to store a grouping of assignees. For example, maybe you have one round robin for North America, one for APAC, and another for EU/UK.

  • Fields:
  • Name
  • (Text)
  • Is_Active__c
  • (Checkbox)

Custom Object: Round_Robin_Assignee__c

Within each round robin, you’ll have assignees. A given sales rep could be tied to multiple round robins, and a single round robin can have many assignees.

  • Fields
  • Name
  • (Text)
  • User__c
  • (Lookup, User) – [Required]
  • Is_Active__c
  • (Checkbox)
  • Last_Assigned__c
  • (DateTime)
  • Round_Robin__c
  • (Master-Detail, Round_Robin__c)

Step 2: Round Robin Lead Queue

For each round robin, create a lead queue in Salesforce with the exact same name as the round robin record that will be created. Use this to look up the appropriate round robin assignee.

Step 3: Lead Assignment Rule

Lead assignment rules are invoked when a new lead is created. Add filter criteria that fit your team’s structure. In this example, you need a lead assignment rule for North America, APAC, and EU/UK.

North America: Lead.Country = [‘United States’, ‘Canada’, ‘Mexico’]
APAC: Lead.Country = [‘Japan’, ‘China’, ‘Singapore’, …]
EU/UK: Lead.Country = [‘United Kingdom’, ‘France’, ‘Germany’, …]

The assignee for each should be each of the lead queues you created in the previous step.

Activate your assignment rule. Note that in the screenshot below, we only show the North America assignment.

Step 4: Email Template

Create the email template that will be used to email the lead’s owner.

Step 5: Workflow Email Alert

Create an email alert, as shown below, that is populated with the email template created in Step 4. Ensure that it is also populated with the lead object and that the recipient is the lead owner.

Step 6: Round Robin Flow

The following example shows an abridged way to create your round robin flow using declarative development.

Create your round robin flow in the Flow Builder. When finished, your flow should look similar to the following image:

Create Variables

Before creating any flow elements, create your flow resource variables.

RecordId – This variable will be populated with the ID of the lead that launched the round robin flow. Be sure to make this variable available for input so that the record-triggered flow (which you will create later) can populate it.

RR Name – This variable will be populated with the developer name of the queue that was assigned through the Lead Assignment rule. Be sure to make this variable available for input so that the record-triggered flow (which you will create later) can populate it.

NOW_Formula – This formula resource will contain the NOW() function so that the round robin assignee’s datetime field can be populated.

Create Flow Elements

Now let’s dive into each of those flow elements you need to create.

Get Round Robin Record – This element searches for an active round robin record whose name matches the RRName (populated with the developer name of the queue the lead is currently assigned to).

Round Robin Record Found? – This important step ensures that a round robin record meeting the search criteria from the first element was successfully found. It does this by checking if the Get Round Robin Record element is not NULL. If the element is not NULL, then the flow will continue to the next element. If it is NULL, the flow will stop at this point and no further flow elements will be evaluated. Without this step, the flow may throw exception errors when no round robin record is found.

Get Round Robin Assignee – This element will retrieve an active round robin assignee record whose Round Robin lookup field (which contains the round robin’s ID value) matches the ID of the round robin record that was found at the start of the flow.

This element is used to choose the round robin assignee that has not received a lead recently, ensuring fair lead distribution.

Round Robin Assignee Record Found? – This element, similar to the one from Step 2, ensures that the flow will only continue to run if a round robin assignee record was found. If found, the flow proceeds. If not found, the flow will stop at this point. Again, this is to avoid any exception errors.

Update Lead Owner – This element is where the lead’s owner will be updated to the round robin assignee. The element first queries a lead whose ID is the same as the ID of the lead that is moving through this flow (which is contained in the RecordId flow resource that you will populate later with a record-triggered flow). Set the OwnerId of the lead to the User field of the round robin assignee record.

Update Round Robin Assignee Date Assigned – This element updates the Last Assigned datetime field on the round robin assignee record with the current date and time. It first retrieves the assignee record whose ID field matches the ID of the assignee we found earlier in the flow, then it sets the Last Assigned field to the NOW_Formula resource you created earlier.

Email New Lead Owner – This “action” element is where the new lead owner will be emailed with the email template you created earlier, and is populated with the name of the workflow email alert that you created earlier. Populate this with the RecordId variable.

Once you have completed this step, you are ready to save and active your flow!

To summarize, this is what your shiny new flow does:

  • Look up the round robin whose name matches the developer name of the queue the lead is assigned to
  • Look up the least-recently assigned round robin assignee
  • Assign lead to assignee
  • Set the round robin assignee’s Last Assigned Date to NOW()
  • Notify assignee via email

Step 7: Record-triggered Flow

Now you will trigger your invokable flow using a record-triggered flow. This type of flow listens for when a new lead is assigned to a queue in order to invoke your round robin flow.

When finished, the record triggered flow will look similar to what you see in the screenshot below:

First, create a record-triggered flow and configure it on the lead object.

Next, set the Entry Conditions to Lead Owned by Queue. You can do this by setting the criteria to "OwnerId Starts With ‘00G’."

Since all queues have an ID value that starts with “00G,” this formula ensures that the record-triggered flow will only trigger if the lead owner ID starts with those three characters.

Drag a subflow element onto the flow canvas to invoke the round robin flow that you created.

Now configure the subflow element to call your round robin flow setting using the following parameters:

  • Referenced Flow: Round Robin Flow
  • Label: Round Robin Flow
  • API Name: Autopopulated
  • RecordId: Hit the toggle to include this and set the Lead Id by using the $Record variable
  • RRName: Hit the toggle to include this and set the RRName using the queue’s developer name (which is accessible through the $record variable)

Referenced Flow – Round Robin Flow

Label – Round Robin Flow (using the same label as the flow name is not required, but it makes your flow easier to read and troubleshoot)

API Name – Auto-populated when you enter the label

RecordId – Hit the toggle to include this and set the Lead Id by using the $record variable.

RRName – Hit the toggle to include this and set the RRName using the queue’s developer name (which is accessible through the $record variable). This variable is populated with the developer name of the queue that currently owns the lead. This will be used later to match the round robin records.

Now draw a line from the start box to your subflow element.

Now save your flow and name it "Before Save | On Create | Lead - Round Robin."

Once done, you can activate your flow!

Step 8: Test

Create a round robin record with Active marked as True, and name it North_America. (Make sure you keep that underscore in there.

Create a round robin assignee record with Active marked as True, the User field populated, and the Round Robin field populated with the North_America round robin record.

Create a lead with a Country value of “United States” and ensure that the Assign using active assignment rule box at the bottom of the Edit window is checked.

Review lead history. Was the owner changed?

Look up round robin assignee. Does Last_Assigned__c = NOW()?

Step 9: Deploy

  • Create change set
  • Change set components
  • Object:
  • Round Robin + related fields
  • Round Robin assignee + related fields
  • Round Robin Flow
  • Before Save | After Create | Lead - Round Robin
  • Lead Process
  • Email Template
  • New Lead Assigned
  • Email Alert
  • New Lead Assigned
  • Push/Validate/Deploy change set
  • Insert round robin records
  • Insert round robin assignee records
  • Activate Round Robin Flow
  • Activate Before Save | After Create | Lead - Round Robin Flow

Step 10: Test Again

  • Insert lead
  • Confirm lead assignment changed
  • Confirm Round_Robin_Assignee__r.Last_Assigned__c is set

Common Round Robin Questions

Can I reroute a lead if it isn’t accepted?

If a user sets the lead status to Unqualified or Rejected within 30 minutes, ideally, the user should be moved to the top of the round robin.

To do this, create a process for Leads which is invoked if the status is set to Unqualified or Rejected. When that happens, launch a flow to look up Round_Robin_Assignee__c where id = User.Id.

That flow needs to set Last_Assigned__c to NULL, which would effectively put the user at the top of the list for the next lead.

We also recommend adding alerts for Sales Ops to review any rejected leads and make changes where appropriate.

Can we integrate a round robin with Slack?

There are a few ways to achieve this. Reference the following sources:

What if the email address for the lead bounces?

New leads in the system aren’t always fully qualified (or real), and sometimes you need to route an additional lead to a rep. Just as for disqualified leads, you can create a process that dictates that if an email bounces, you invoke the same process as you do for rejected leads by setting the lead status to Bounced.

How Can Kicksaw Help?

We’re well versed in building round robins of all shapes and sizes. If you’re looking for expert guidance, or you need help with other Salesforce tools, please email us at or fill out the form at the bottom of this page! We’d love to hear from you.

Kicksaw Helps Leading Sales Teams Perform Their Best

Optimize your business software suite with help from our team of experts. When you work with Kicksaw, you work with a highly engaged group of creative engineers, architects, and project managers to create the best strategy for your business' unique needs.

Contact Us

Want to learn more about our Fractional Operations business model? Wondering if our experience is a good match for your business needs? Drop us a line and we'll be in touch!

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.