Salesforce Opportunity Assignment Rules: Round Robin Opportunity Assignment, Territory Assignment, and Queue Workarounds
Salesforce gives you assignment rules for leads and cases and nothing for opportunities. There is no Opportunity Assignment Rules page in Setup, a queue cannot own an opportunity, and Sales Territories sets a territory on the record without ever touching the owner. So every team that needs new or handed-off opportunities to land on the right rep ends up with a Flow, an Apex class, a territory filter, or a spreadsheet. This page covers what each path really does, where each one leaks, and where a routing engine fits beside it.
In short
Salesforce has no native assignment rules for opportunities. Assignment rules exist only for leads and cases, and opportunities cannot be owned by a queue. Teams assign opportunities in one of four ways: by lead conversion, where the new opportunity takes the owner chosen at conversion; with a record-triggered Flow or Apex that sets OwnerId, which is where round robin gets built; with Sales Territories, whose filter-based opportunity territory assignment sets the Territory field but never changes the owner; or by manual and mass transfer. Assigner routes opportunities, leads and cases through one rules engine beside Salesforce by round robin, weighted rotation, workload and availability, at $12 per user per month billed yearly, and records the reason for every assignment.
Why it fits
This page is for a Salesforce admin or RevOps lead whose opportunities need to reach the right account executive when they are created, handed off from an SDR, or reassigned after a territory change, and who is tired of maintaining a Flow counter or explaining to reps why one of them got three enterprise deals in a row.
There is no rule engine to configure
Setup has Lead Assignment Rules and Case Assignment Rules. It has no equivalent for opportunities, and the requests for one have sat on the Salesforce IdeaExchange for years. Whatever assigns your opportunities today is custom automation somebody built and somebody has to maintain.
A queue cannot hold an opportunity
Queues support cases, leads, tasks, orders, service contracts, contact requests, knowledge and custom objects. Opportunities and accounts are not on the list, so the usual pattern of parking work on a queue until a rep claims it simply does not exist for deals.
Territory assignment does not assign an owner
Filter-based opportunity territory assignment writes Territory2Id. The OwnerId field is untouched, so an opportunity can sit in the right territory and still belong to the wrong rep, or to the admin who converted it.
Ties leave the territory empty
The sample Apex class Salesforce provides picks the account territory with the highest priority, and if two territories share the top priority it sets no territory at all. Accounts covered by two overlapping territories quietly produce opportunities with a blank Territory field.
Round robin is a counter someone wrote
Every native opportunity round robin is a Flow or Apex that stores who got the last one. Two opportunities created in the same transaction can read the same counter, a deactivated rep can stay in the list, and nobody can see why a given rep got a given deal.
Lead conversion decides more than you think
Most opportunities are born at lead conversion, and they inherit the owner picked on the convert screen. A lead still owned by a queue forces the converting user to choose an owner, and inside triggers the converting user can appear as the lead owner, so automation keyed on the owner fires for the wrong person.
Side by side
Every native way to assign a Salesforce opportunity, and where each one leaks
| Method | What it sets | Edition or setup | Breaks or leaks when | What reps see |
|---|---|---|---|---|
| Lead conversion | Opportunity owner from the convert screen, defaulting to the lead owner | All editions with leads | The lead is owned by a queue, or the converting user is not the intended owner | An SDR or admin owning a deal they never meant to keep |
| Record-triggered Flow | OwnerId from your own logic, often a round robin counter on a custom object or setting | Flow Builder, any edition with Flow | Bulk loads and simultaneous inserts read the same counter; inactive users stay in the pool | Uneven counts and occasional back-to-back deals |
| Apex trigger or class | OwnerId from code, usually with a lock on the counter record | Developer time and test coverage | The developer leaves, the pool changes, or a new record type is added | Assignment that nobody on the ops team can change |
| Filter-based opportunity territory assignment | Territory2Id only, from an Apex class implementing OpportunityTerritory2AssignmentFilter | Sales Territories: Enterprise, Unlimited and Performance; Core, Advanced and Max in the current lineup | Two account territories share the top priority, or the opportunity is excluded from the filter | Right territory, unchanged owner |
| Manual territory assignment | Territory field set by the owner or an admin | Sales Territories enabled | The opportunity owner lacks access to the account | Edit access for territory users only; parent territories get read-only |
| Mass Transfer Records (accounts) | Moves open opportunities, and optionally closed ones, with the account | Setup, Mass Transfer Records | Closed opportunities owned by other users are never moved | Stale ownership on old closed deals |
| Manual Change Owner | OwnerId on one record | Transfer Record permission | Nobody is watching the new opportunity list | Deals waiting for a manager to hand them out |
Sales Territories allocations per Salesforce Help: Enterprise Edition gets 2 territory models and Unlimited and Performance get 4; each model allows 1,000 territories (99,999 on Performance, with requests above 20,000 subject to approval), 15 assignment rules per territory and 1,950 assigned users per territory, with 300 recommended. The Salesforce pricing page lists Sales Territories on Core ($195), Advanced ($395) and Max ($550) per user per month billed annually, and not on Starter Suite or Pro Suite, while Lead Assignment and Routing is listed on every edition.
In detail
What Salesforce documentation says about assigning opportunities, and what admins end up building
Why Salesforce has no opportunity assignment rules
The Salesforce help page on assignment rules covers exactly two objects, leads and cases. There is no third tab for opportunities, and ideas asking for one, titled plainly Opportunity Assignment Rules and Assignment Rule for Opportunity Object, are still open on the IdeaExchange. The design reason is easy to guess: an opportunity is usually born from a converted lead or created by the account owner, so Salesforce assumes the owner is already known.
That assumption breaks in three common situations. Inbound deals created by a web form, a product signup or an integration arrive with the integration user as owner. SDR teams that create opportunities for account executives need a handoff rule, not a guess. And territory or segment changes leave hundreds of open opportunities owned by people who no longer cover the account. None of these has a declarative answer, so each org builds its own.
How to round robin opportunity assignment in Salesforce with Flow
The standard build is a record-triggered Flow on Opportunity, before save or after save, that reads a counter, picks the next rep from a list, writes OwnerId and increments the counter. The list lives on a custom object, a custom metadata type or a custom setting, and the counter is either a number on that record or an auto-number with a modulo formula, the same trick admins use for lead round robin.
It works, with three caveats worth planning for. Concurrency: a bulk import or two web signups in the same second can read the same counter value and hand two deals to one rep. Pool maintenance: a rep who goes on leave stays in the rotation until someone edits the list, and a deactivated user throws an error on save. No reason on the record: the Flow sets the owner and moves on, so when a rep asks why they received a deal, the answer lives in a debug log. Weighted rotation, where a ramping rep takes half a share, means another field and another branch per rule. If the rotation also needs to respect working hours or current open pipeline, the Flow becomes a small application.
Salesforce opportunity territory assignment: what the filter does and does not do
Sales Territories, formerly Enterprise Territory Management, assigns accounts to territories with up to 15 rules per territory. Opportunities get their territory separately, through filter-based opportunity territory assignment. You enable it in Territory Settings and name an Apex class; Salesforce publishes a sample class, OppTerrAssignDefaultLogicFilter, that you create yourself first. You can choose to run the job when opportunities are created, or run it from the active model hierarchy with Run Opportunity Filter, which emails you when the job completes.
The class receives up to 1,000 opportunity IDs whose Exclude from territory assignment filter logic box is not ticked, and returns a territory for each. The sample picks the territory of the parent account with the highest priority, and its own comment is explicit about the edge case: if multiple territories share the highest priority, the territory is set to null. Two points matter for assignment. The job writes Territory2Id, not OwnerId, so the rep who owns the deal does not change. And when you assign a territory by hand, only users assigned to that territory get edit access while parent territories get read-only. Territory assignment answers which patch a deal belongs to. It does not answer which rep inside that patch works it.
Round robin inside a territory: combining territory and rotation
The design most sales orgs actually want is two steps: first decide the patch, then rotate inside it. Salesforce can do the first step natively and none of the second. The territory users live in the UserTerritory2Association object, so a Flow or Apex class can read the Territory2Id the filter wrote, query the users assigned to that territory, filter them by role in territory, and pick the next one from a counter kept per territory.
Three details decide whether this holds up. Keep a separate counter for each territory, or a single global counter will skew every patch toward whoever sits early in the list. Decide what happens when the filter leaves the territory blank on a tie, because that record will otherwise fall through to the integration user. And exclude people by role in territory, since overlay specialists and managers are often assigned to the same territory as the account executives. The filter runs as a job, so if your Flow runs on create it can fire before the territory is set; many teams run the owner step on the territory change instead.
Can you assign an opportunity to a queue in Salesforce?
No. The objects that support queues are cases, leads, tasks, contact requests, orders, service contracts, knowledge article versions and custom objects. Opportunities and accounts cannot be queue owned, which is also why converting a queue owned lead forces you to pick a user as the owner of the account, contact and opportunity it creates.
Admins work around it in two ways. One is a placeholder user, often named something like Unassigned Opportunities, who owns new deals until a manager reassigns them, which recreates a queue with worse visibility. The other is a task or custom object that sits in a real queue and points at the opportunity, which gives you claiming behavior but splits the work across two records. Both patterns depend on a person pulling work out of a pile, which is the exact step round robin was meant to replace.
Changing opportunity owners in bulk after a territory or segment change
When coverage changes, most teams move opportunities with the account. Mass Transfer Records in Setup moves accounts and offers two options that decide what happens to deals: transfer open opportunities not owned by the existing account owner, and transfer closed opportunities. The help text limits the second one to closed opportunities owned by the account owner; closed deals owned by other users are not changed. Anything more selective, such as moving only open pipeline above a stage or rebalancing by count, means a Data Loader export, a spreadsheet and an update file.
That is also the moment fairness goes wrong. A bulk reassignment done by hand tends to give the rep with the fewest open deals everything that was orphaned, with no record of why, and the next complaint arrives three weeks later. Whatever tool you use, keep the rule and the reason for each reassignment somewhere a rep can read.
Where Assigner fits beside Salesforce opportunity assignment, and where it does not
If your opportunities are always created by the account owner and your territories map one account to one rep, you probably do not need anything beyond Sales Territories and a conversion rule. Keep it.
Assigner is for the teams that do. It decides the owner of each new or reassigned opportunity by round robin, weighted rotation, current open workload, skills or segment, and live availability, skipping people who are out, and it writes the rule and the reason on every assignment so a disputed deal is explained in one line. The same rules also cover leads, support cases and ops tasks, so the definition of fair is the same across the funnel. It works beside Salesforce rather than inside it, it is a companion rather than a live two-way sync, and it costs $12 per user per month billed yearly ($15 billed monthly). Salesforce native alternatives such as Kubaru, Distribution Engine and Gradient Works also route opportunities; the Kubaru alternative and Gradient Works alternative pages compare their pricing honestly.
Questions buyers ask
Frequently asked questions
Does Salesforce have opportunity assignment rules?
No. Salesforce provides assignment rules for leads and cases only. Opportunities are assigned at lead conversion, by manual or mass ownership transfer, or by custom automation such as a record-triggered Flow or an Apex trigger. Requests for native opportunity assignment rules remain open ideas on the Salesforce IdeaExchange.
How do I round robin opportunities in Salesforce?
Build a record-triggered Flow or Apex class that keeps a counter and a list of eligible reps, picks the next rep and sets OwnerId. Plan for simultaneous inserts reading the same counter, inactive users left in the list, and weighted shares. AppExchange apps and external routers such as Assigner keep the rotation state for you.
Can you assign an opportunity to a queue in Salesforce?
No. Queues support cases, leads, tasks, contact requests, orders, service contracts, knowledge article versions and custom objects, but not opportunities or accounts. Teams use a placeholder user or a related task in a real queue instead, and both still rely on someone claiming the work.
Does territory assignment change the opportunity owner?
No. Filter-based opportunity territory assignment sets the Territory2Id field through an Apex class. The owner stays whoever it was. If you want the territory to decide the rep, you still need a Flow, Apex or a routing tool that reads the territory and sets OwnerId.
What is filter-based opportunity territory assignment?
It is a Sales Territories feature that assigns one territory to each opportunity using an Apex class that implements OpportunityTerritory2AssignmentFilter. Salesforce supplies a sample class, OppTerrAssignDefaultLogicFilter, that picks the parent account territory with the highest priority. It can run when opportunities are created or on demand from the model hierarchy.
Why is the Territory field empty on my opportunities?
The most common reason with the sample class is a tie: the account belongs to two territories with the same highest priority, and the sample sets no territory in that case. Other causes are the exclude from filter checkbox being ticked, the filter not set to run on create, or the account having no territory.
Which Salesforce editions include Sales Territories?
Salesforce Help lists Sales Territories for Enterprise and Unlimited Editions with Sales Cloud, Performance and Developer. On the current pricing page it appears on Core at $195, Advanced at $395 and Max at $550 per user per month billed annually, and not on Starter Suite or Pro Suite.
How do I change the opportunity owner in bulk?
Transfer the accounts with Mass Transfer Records and choose whether to move open opportunities owned by others and closed opportunities, or export the opportunities with Data Loader, change OwnerId and update. Closed opportunities owned by users other than the account owner are not moved by the account transfer.
Who owns the opportunity when a lead is converted?
The owner selected on the convert screen, which defaults to the lead owner. If the lead is owned by a queue you must pick a user, because accounts, contacts and opportunities cannot be queue owned. Inside triggers the converting user can appear as the lead owner, which trips owner-based automation.
Can Salesforce assign opportunities based on workload?
Not natively. Neither lead conversion, Sales Territories nor Mass Transfer looks at how many open opportunities a rep already owns. Workload-based assignment needs custom code that counts open pipeline per rep, an AppExchange routing app, or an external engine such as Assigner that tracks workload and availability.
How do I assign opportunities from SDRs to account executives?
Most teams trigger on a stage or a handoff field and set the owner to an account executive chosen by territory, segment or rotation. Record who set it and why on the opportunity, because handoff disputes are the most common routing complaint between SDR and AE teams.
What does opportunity routing software cost?
Salesforce native routing apps are priced per user or as a platform fee: Kubaru is about $20 per user per month, and Gradient Works Growth is $799 per month billed yearly for 10 reps. Assigner is $12 per user per month billed yearly ($15 monthly) and covers leads, cases and tasks with the same rules.
Keep reading
Related Salesforce routing pages worth reading next:
- Salesforce round robin - Lead and case rotation and why native rules keep no memory.
- Salesforce queue assignment - Which objects support queues and how work leaves them.
- Salesforce lead routing - Where most opportunities start: getting the lead to the right rep.
- Salesforce lead assignment rules - The limits of the only native rule engine for sales records.
- Salesforce territory management license - Which editions include Sales Territories and what it costs.
- Kubaru alternative - A Salesforce native assignment app compared on price and scope.
Stop hand-sorting your incoming work
Let Assigner route it to the right available person by skill, workload, and availability, using rules you control. Nothing sits unassigned and no one gets cherry-picked. Every assignment shows why.