Do not read the whole setup. Take one misrouted lead and follow it.
Four steps
- Read the owner history. Each row is one change, with who made it and when.
- Find the first change. It is normally the assignment rule, made by the creator or the automated process user.
- Walk the rule by hand. Compare the lead's values with each entry, in order. The first entry that matches is the one that fired. See which entry wins.
- Look at later changes. A later row by an integration or automation user is a flow or a sync. See a flow overriding the rule.
Check it yourself
SELECT OldValue, NewValue, CreatedById, CreatedDate FROM LeadHistory WHERE LeadId = '00Q...' AND Field = 'Owner' ORDER BY CreatedDate
Then check what the lead held when it arrived: country, source and size. Values with stray spaces, codes or different spellings often explain a missed entry. See routing by country.
Once you know the cause, count how many leads share it. One lead is a story. Fifty is a leak.
The free scan checks your export for:
- entries hidden behind broader ones
- entries that can never match
- more than one system setting the Lead owner
No export access? Paste your rule entries instead.
A worked example
A made-up lead: Country is Germany, source is Web, company size is 1,200. It went to the general queue. The team expected the German enterprise team.
Walk the entries in order. Entry 1 tests the Country field for DE. The lead holds the word Germany, so no match. Entry 2 tests source equals Web. It matches, and it takes the lead. The German entries below it never run.
Two faults show up. A country name is tested against a code. A broad source entry sits above the specific ones.
Decide from the history
- The first change is a wrong rule entry: fix the entry or its order.
- The first change is right, a later one is wrong: fix the flow or sync.
- No rule change at all: the rule never ran for this lead. See an assignment rule not firing.
Count the leak
SELECT OwnerId, COUNT(Id) n FROM Lead WHERE Country IN ('Germany', 'DE', 'Deutschland') AND CreatedDate = LAST_N_DAYS:30 GROUP BY OwnerId ORDER BY COUNT(Id) DESC
Use the country, source or size you traced. If most go to the wrong owner, it is a leak. Fix the rule.
See also: Salesforce lead owner not changing.
Have it checked every night instead.
Routing Forensics connects as a read-only user and checks this, and the rest of your routing, against your real leads. Three design partners get a free health report on their own CRM, free for 90 days: what is leaking, where, and what it is worth. Apply for a place.
Or check it now. The free scan reads your Salesforce export in your browser. Nothing is uploaded.