Getting Started
Installation
Permissions
Widget & Inline Page
Classic - Distribution Engine Inline Page
Lightning - Distribution Engine Record Detail
Widget - Introduction
Adding Widget to a Lightning App
Adding Widget to a Lightning Page
Adding Widget to Salesforce Mobile
Adding Widget to a Classic Console
Adding Widget to Classic Homepage
Changing the Widget logout reason list
Distributor Test Tool (Legacy)
Before you Begin
Installation Overview
Whats in the Package
Triggers
Installation Process
Managed Package Licences
Page Layouts
Leaving A Review
Uninstall
Upgrading Distribution Engine
Configure Distribution Engine
Distribution Classifier
Territories
Territories Introduction
Create a Map
Import Territories
Territory Map Zoom Levels
Object Settings
Detecting Territories
Territory Settings
Territories - Technical Details
Territory Distributor
Lead Matching
Lead Matching - Introduction
Duplicate Rule Setup
Related Owner - Lead Matching
Lead matching vs lookup owner
Classifier Lead Matching Setup
Lead to Account/Contact/Lead Settings
Custom Classification
Custom Classification - Introduction
Stamp Groups
Stamps
Custom Classification - Synchronized Tag Collections
Lead Auto-Conversion
Lead Auto-Conversion - Introduction
Lead De-Duplication
Lead Conversion
Configuring Auto-Conversion
Auto-Conversion Rules
Distribution Classifier - Introduction
Backfill
Delay Filters
Distribution Teams
Distributors
Distribution Methods
Distribution Methods - Introduction
Lookup Owner
Load Balancing
Round Robin
Related Owner
Sticky Assignment
Distributors Introduction
Distributor Types
Standard Distributor Settings
Pull Distributor Settings
Trigger Distributor Settings
Manual Distributor Settings
Distributor Sources
Distributing from a Designated User
Distributor Filters
Distributor Team Member Filters
Distributor Sort Order
Advanced Filter Mode
Distributor Test Tool
Weighting and Caps
Distribution Hours
Tracking & SLAs
Team Settings
Distribution Teams Introduction
Distribution Assignment Process view
Team Summary
Team Members
Team Availability
Team Performance
Assignment Rejection
Post Assignment
Stamp Rejection
Dynamic Team Members
Distribution Tags
Distribution Availability
Distribution Availability
Shift Hours
Out of Office
Distribution Holidays
Holiday Regions
Regional Holidays
User Availability Toggle
Distribution Settings
Distribution Settings
Calendar Integration
Advanced Settings
Distribution Engine Running User
Licensed users list
Export & Import
Import Errors
Trigger Settings
Email Notifications
Email Notifications - Introduction
Custom Email Notifications
Disabling Standard Email Notifications
Customising the Email Template
Disabling Custom Email Notifications
From Email Address
Email Notification as Flow
Assignment Simulator
Assignment Simulator - Introduction
Configure Assignment Simulation
Assignment Simulator Result Explorer
Advanced
Q2Q teams
Integrating InsideSales.com power dialer
Pardot
Auto archive feature
Uploading tags via dataloader
Salesforce Mobile
Tuning Distribution Engine
Setup Introduction
Queue Basics
Queues
Distribution Sync
Monitoring
Distribution Console
Console Introduction
Application Monitoring
Today's Distributions
Sources Console
Availability Calendar
Distribution Logs
Distribution Logs
Distribution Logs List
Territories Logs List
Lead Matching Logs List
Custom Classification Log List
Auto-Conversion Logs List
Object Sync Logs List
Scheduler Logs List
Archive Logs List
Exporting Log Data
Distribution Analytics
Distribution Engine Details Object
Distribution Engine Dashboard
Salesforce Reports
Reports - Leads and Distribution Logs
Change History
Setup Examples
Rule-Based Routing
Skill Based Matching
Assigning Contacts - Pairing SDRs and AEs
Delaying Distribution
Enforce Cap for Manually Assigned Records
Criteria Caps
Splitting records between teams
Salesforce Admins
Workflow Rule Examples
Formula Examples
Domain Formula
Timezone Bucket Formula
Has Activity Formula
Territory Formula
Age Formula
Distribution Engine Details Formula
id Field to Text
Flow Examples
Chatter Notifications
Slack Notifications
Desktop or Mobile Notifications
Custom Assignment Rejection
Classify on Address Change
Assign on Action
Process Builder Examples
Process Builder - Avoiding Clashes
Opportunity Assignment - Updating Related Accounts & Contacts
Rejection API Process
Assign License and Permission Set on Team Member Addition
Assign License on Team Member Addition
Tasks on Record Assignment by Distribution Engine
Information for New Admins
Validation Rules
Developers
Apex API
Availability API
Classifier API
Out of Office API
Tags API
Team Members API
DE Apex API Introduction
Rejection API
System API
Trigger Distribution API
Apex Trigger Examples
Visualforce Examples
Troubleshooting
Warnings and Errors
Health Checker Messages
Scheduler Restarted
Distributor Failures - Records on Hold
Assignment Errors
Classifier Errors
Apex CPU time limit exceeded
Timeout when deleting a Team Member or Distributor
Records Stuck / Not Being Assigned
Support
Previous Releases
2.9
3
4
4.12
4.15
Armadillo
Bison
Chameleon
Dragon
Dragon beta release - install guide
Eagle upgrade process
Eagle
Fox
Gorilla
Gorilla Upgrade Process
Hummingbird
Hummingbird Upgrade Process
Impala
Impala Upgrade Process
Jellyfish
Jellyfish Upgrade Process
Koala
Koala Upgrade Process
Llama
Llama Upgrade Process
Meerkat
Meerkat Upgrade Process
Upgrade Links
Introducing Nightingale!
Nightingale Release Notes
Nightingale Upgrade Process
Owl Release Notes
Owl Upgrade Process
Frequently Asked Questions
Legacy Widget - New status
Distribution Engine Aborted
Alerts not Firing
Distribution Engine Delayed
Can one Distributor Assign from Multiple Queues / Users?
Can't See Distribution Engine
Distribution Engine Not Running
Manual Shutdown of Distribution Engine
Exclude members from Holidays
Distribution Engine Health Checker Restart
Dashboard Running User Error
Assignments going to wrong user
Contact Support
Grant Login Access
Purchase
Purchasing Steps
Distribution Engine - Purchasing FAQ
Support Packages
Legal Agreement Details
GDPR
Policies
Migrating Licences
Contact us
What Tier am I on?
Features by Tier
Booking Engine - Purchasing FAQ
Latest Release
Booking Engine
Installing Booking Engine
Booking Engine Quick Start
Booking Engine - Remote Site Settings
Adding the Booking component to a record page
Booking - Permission Sets
Configuring Booking Engine
Booking Settings
Booking Types
Working Hours
Booking Type Hosts
Booking Type Settings
Guest Cancel & Reschedule Bookings
Booking Engine - External Services
Reminders
Booking Filters
All Bookings
User Settings
Latest Release
Making Bookings
Booking Engine Overview
- All Categories
- Setup Examples
- Rule-Based Routing
Rule-Based Routing
Updated
by Matt Johnson
What is Rule-Based Routing
Rule-based routing assigns records to specific users or teams based on criteria you define. Distribution Engine evaluates each record against your rules and routes it to the appropriate destination. This method ensures records reach the right person based on business logic rather than availability alone.
Unlike round-robin distribution which cycles through team members sequentially, rule-based routing provides intelligent matching based on specific conditions and business requirements.
How Distribution Engine handles Rule-Based Routing
Distribution Engine processes rules in priority order from top to bottom. When a record matches a rule's criteria, it routes to the specified assignee and stops evaluating further rules.
This priority-based algorithm ensures deterministic routing where each record follows a predictable path through your rule set.
When to Use Rule-Based Routing
Use rule-based routing when:
- Assignment depends on business logic (territory, product, tier, compliance)
- You need deterministic outcomes (the same input always routes the same way)
- Records should route to specific teams or queues, not just the next available user
Supported Records
Rule-based routing can be applied to:
- Leads
- Opportunities
- Cases
- Accounts
- Contacts
- Custom objects (if enabled in your org)
Rules evaluate fields on the routed object and, where supported, related records.
How Rule-Based Routing Works
When a record matches a rule's criteria, Distribution Engine assigns the record and halts further rule evaluation.
This means:
- Rule order is critical
- More specific rules should be placed above broader rules
- Only one rule can ever assign a record in a single routing pass
Common Use Cases
You can configure Distribution Engine in a variety of ways.Here are just a few examples that are applicable to almost any routing use case in Salesforce:
Territory assignment - Route leads to reps based on geographic criteria such as state, country, or region.
Product specialization - Assign opportunities to teams with expertise in specific product lines or service categories.
Account tiering - Direct enterprise accounts to senior reps while routing SMB accounts to a general sales pool.
Language or timezone matching - Route support cases to agents who speak the customer's language or work in their timezone. This prevents situations where an agent would receive assignments outside their working hours.
Lead source handling - Assign partner referrals to a dedicated partner team while inbound leads follow standard distribution.
Rule Configuration
A rule is a collection of criteria that determines whether a record matches. Rules are evaluated in priority order (lower numbers first).
Criteria - The conditions a record must meet. Build criteria using any standard or custom field on the record. Supports AND/OR logic for complex conditions, allowing you to define all possible combinations needed for accurate routing.
Priority - The order in which rules are evaluated. Lower numbers are evaluated first. This determines which conditions are checked in sequence.
When a rule matches, you specify the assignment action: route to a specific user, queue, or team. You can also specify a distribution method such as round robin to distribute among team members.
Rule Design Best Practices
Order from most specific to most general
Place narrow, high-intent rules (e.g. Enterprise + Region + Product) above catch-all rules.
Avoid overlapping criteria where possible
If two rules can match the same record, priority order becomes the only differentiator.
Use fallback rules instead of broad conditions
Instead of Region != NULL, rely on fallback behavior for cleaner logic.
Name rules descriptively
Example: ENT | West | Product A | Licensed Reps
This makes audits and troubleshooting significantly easier.
Fallback Options
When no rules match a record, Distribution Engine offers several fallback behaviors and alternative routing decisions:
- Assign to a default user or queue
- Trigger an alternative distribution method (such as round-robin for equal distribution)
- Leave unassigned for manual review
- Route to the record owner's manager
Common Troubleshooting Scenarios
Record routed to the wrong team
- Check rule priority order
- Confirm field values at the time of routing
- Verify no earlier rule matched unexpectedly
- Record not assigned
- Confirm fallback behavior is configured
- Validate required fields are populated
- Check rule criteria logic (AND vs OR)
- Rule not triggering
- Ensure the rule is active
- Confirm the record meets criteria exactly (picklist values, case sensitivity where applicable)
Frequently Asked Questions
What happens if a record matches multiple rules?
Distribution Engine evaluates rules in priority order and assigns based on the first matching rule. Subsequent rules are not evaluated once a match occurs. This prevents duplicate assignments and maintains a clean routing sequence.
Can I route based on related record data?
Yes. You can build criteria using fields from related objects such as the parent account on an opportunity or the contact on a case. This allows for complex routing logic that considers relationships across your data model.
How do I test my rules before activating them?
Use the Assignment Simulator feature to process sample records against your rules without creating actual assignments. This validates your logic before going live with pre-production testing.
The Distributor test tool also allows you to test a record against a distributor to see why it is not assigning.
Can rules change based on time of day or business hours?
Yes. Criteria can include time-based conditions, and rules can reference business hours calendars to route differently during and outside working hours. This ensures records route to available team members rather than those outside their timezone or schedule.
Summary
Rule-based routing provides deterministic, logic-driven assignment based on your business rules. It works best when combined with secondary distribution methods and clearly defined fallback behavior. Correct rule order and testing are essential for predictable outcomes.