+ Start a Discussion

Best practices to manage lead assignment rules

Hi All,

 My company has too many lead assignment rules based on state/province, area and zip code of US. Many rules are defined with combinations of these three codes. I am in the process of eliminating state/province code, and create assignment rules based on area code or zip code. Are there any best practices to manage lead assignment rules? Please let me know, and your suggestions will be very much helpful for me. Thanks much!




If you are looking to manage lead assignment by zip code/area code, you might want to consider creating a new object to hold your mappings.  Say you have two regions, east and west.  You might create an object called Assignment Mapping with the following fields


Zip Code / Region


You might have some records populated like this:

1. 10001 / East

2. 92605 / West


You could then write a trigger on the lead that would do a lookup to this table and return the correct region.  From there you can create your lead assignment off of the Region field.


A rough idea of what the trigger might do:


trigger lookupRegion on lead (before insert, before update){

   Assignment_Mapping__c am = [select Region__c, Postal_Code__c, from Assignment_Mapping__c where Postal_Code__c = trigger.new[0].PostalCode limit 1];

   trigger.new[0].Region__c = am.Region__c;







Perfect question; suggest you check out our new AppExchange app - Leads360. We've been a stand-alone product for a long while and we focus very heavily on lead routing, lead distribution and assignement rules best practices. I know that our tool would be quite useful for you. Also, we have a dedicated staff to help new SF clients get up and running on our platform, so you can easily just explain the use cases your trying to accomplish to your customer success managaer (your Leads360 CSM not your SF CSM) and they'll either show you how to configure it, or just configure it for you. Happy to give you a trial of our solution too because your a SF client and we're trying to get our early adopters with this new AppExchange product. Please go to AppExchange and signup for Leads360, then send me an email directly and i'll get you setup. Jeff - jsolomon@leads360.com.


Thanks for replying guys! I will consider your suggestions and analyze based on how best it fits to our problem.


We have 4 regions, and among each region, we have different areas assigned to different reps based on zipcode... in our case, should the mapping object include:


Zipcode / region / reps 


Then use zipcode in leads to look up the object data in assignment rule?






I was thinking something along that very line, though knowing that not every lead may have a zipcode, I might even have City in there as a field option.


Assignment object:

Zip Code



Region name (however you want to define it)

Owner (lookup to User)


When the Lead is created/updated (with caveats - you may not want to reassign after each and every update - maybe only when you check a box), use the trigger to reference the object, find the zip, then the city, then the country, and whichever you find first, assign that Owner and possibly also set the Region name.


What about your Accounts and/or Open Opportunities?  If there's a territory realignment, should those be reassigned as well?  Separate triggers on Account and Opportunity could do that for you.


Or better, have one class that reassigns a list of SObjects, and determine at runtime the type of thing you're reassigning.


Makes sense?


We've developed an app that does a lot of what you are describing. We call it BREeze (Business Rules Engine) and it's modeled after how Assignment Rules work but let's you assign any field for any object, including multiple fields per rule. We also can extend it with functions like you are describing above to do a lookup based on another object, zip code mapping, etc.

For more information, check out: http://gearscrm.com/apps/breeze

Hope this helps.