Skip to Content
Menu
This question has been flagged
1 Reply
3683 Views

How does CRM Lead Scoring Computation work

Avatar
Discard
Author Best Answer

How does CRM Lead Scoring Computation work



  1. What to configure in Odoo


The lead scoring computation takes into account several variables: 

  • Email quality (email_state);

  • Phone quality (email_state);

  • Country (country_id);

  • State (state_id);

  • Source (source_id);

  • Language (lang_id). 


You can decide which variables are to be taken into account via the CRM settings page: 


In addition to the variables above, there are 3 mandatory fields that are taken into account no matter what:

  • Stage_id;

  • Tag_ids BUT a tag is only taken into consideration when there are at least 20 records on a specific tag.

  • Team_id.
    NB: Team_id enables the system to divide the probabilities by team. That means that for a said value (e.g. France), you will have as many probability of success as the number of teams.


You can also decide from which date you want to start considering the data. 


V14.0 SPOILER ALERT:

In V14, all default variables will be taken out so the user will be able to deactivate even these.


The goal is to replace the basic probability field. This field represents the probability to close an opportunity. 

If the user decides to update manually the probability rate, the estimated rate by Odoo will still be possible next to the field label. 


  1. Behind the scenes: how the probabilities are tracked


Each many2one has different possible values, each of which holds the count of lost and won opportunities that display this particular value. 


Many2one fields values:


  • For email and phone quality:


The system checks if the email address is valid (to do so, Odoo uses Flanker + tools.email_normalize module)

  • If the address is valid the hidden field ‘email_state’ will display CORRECT;

  • If there is no email address is displayed => ‘email_state’ = EMPTY;

  • Else => ‘email_state’ = INCORRECT. 


For phone numbers, it takes only into account the phone and NOT the mobile phone ! To check the validity of the numbers, Odoo uses the module ‘phonevalidation’. 

  • If valid, ‘phone_state’ = CORRECT:

  • If no phone, ‘phone_state’ = EMPTY;

  • Else, ‘phone_state’ = INCORRECT. 


  • For other variables:


For example, the country_id will have the different countries as values: France, Belgium, etc.

What happens when an opportunity is won/lost?


If we take this opportunity as an example, we can see that we have three tracked variables displayed in the lead:

  • Email;

  • Country;

  • State.


When the opportunity is won (same thing for lost), the values table will be automatically updated as follows:


The more opportunities you handle, the more accurate this table will become. 

The probability for each value is automatically computed as follows:


P(Won if the opportunity has the value A) = Count(Won when A happens)/Count(Won and Lost opportunities when A happens)


⇒ P(Won|A)= Count(Won|A)/(Count(Won/A)+Count(Lost|A)


=> basically, if we have 8 opportunities for France and among them 3 won, then the probability of success for opportunities that display France will be (3/3+5) = 0.375 = 37.5%


In time, the table of values will look more like that:


  1. Computation of the final probability


  1. Computation of won probability when all events happen together:


If we have an opportunity for a customer located in Belgium and speaking French, the probability of success as computed following the Bayes’ Theorem:

 

⇒ P(Won | A∩B) ∝ P(A∩B | Won)*P(Won)


Meaning: The probability of winning the opportunity when the two events happen (country=belgium and language=french) is equal to the probability of both events happening when opportunities are won multiplied by the overall probability of won opportunities.


In practice, to calculate the probability of both events happening you have to multiply each of the probabilities of successful event happening separately:


⇒ P(Won | A∩B) ∝ P(A | Won)*P(B | Won)*P(Won)


P(Won | Belgium∩French) = P(Belgium|Won) * P(French|Won) * P(overall wons)

  • P(Belgium|Won) = 30/45 = 0.67

  • P(French|Won) = 55/70 = 0.79

  • P(Overall Wons) = 60/75 = 0.8

⇒ 0.67*0.79*0.8 = 0.42


  1. Computation of lost probability when all events happen together:


We then do the same for the lost opportunities:


P(Lost | Belgium∩French) ∝ P(A | Lost)*P(B | Lost)*P(Lost)

  • P(Belgium|Lost) = 15/45 = 0.33

  • P(French|Lost) = 15/70 = 0.21

  • P(Overall Lost) = 15/75 = 0.2

⇒ 0.33*0.21*0.2 = 0.0139


  1. Final computation of the probability of success:


To compute the final percentage of success, you use the values we computed above:


0.42 / (0.0139 + 0.42) = 0.9679 => 96.79%


This is the final result that will be displayed on the opportunity.




Avatar
Discard
Related Posts Replies Views Activity
1
Apr 21
3194
1
Oct 22
83
4
Nov 21
3138
1
Apr 21
1980
1
Apr 24
2428