So one of the issues that were not planned for with leadsource involves opportunities (there are others but I’ve seen this come up with clients a number of times). When an opp record is created, it takes on the leadsource assigned to the contact (ie it is not opp specific) and if the leadsource on the contact is changed, then every opp record on the contact changes to that new leadsource as well. This happened for a number of reasons starting with only intending for one opp per contact. As clients see the use cases of having more than one marketing at a time and potential sales from different sources, leadsource needs to be individually assigned on the opp level, not just a single one for a contact.
So, for example, a client schedules with us off of our website. We then create an opp for that followup and closing as well as know/like/trust marketing. But then they find a FB ad for one of our products. That too becomes a distinct opp record and must be managed independently of the other. We have to use my code solution for this as IS cannot reasonably manage opps individually.
Then there is the case where opps can track and provide valuable enumerations for work flow of the product (think orders, onboarding, fulfillment etc). Now we have three or four opps running all in different stages. Since campaign builder can’t distinguish these apart, a code solution is necessary. So in light of this and other factors, having only the leadsource available once on a contact really isn’t practical.
Just wanted to illustrate the use cases as we have come across this many times and have solved for it but the leadsource is still a short coming regardless.