function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
AJ-ITIAJ-ITI 

Tracking Competitors - record type vs. custom object

I have been asked to create a way where we can start tracking competitors and link opportunities to the various competitors we know we're up against. I originally created a different Account Record Type, but now I'm wondering how to link that to the opportunities. Is there a way to do this, or do I need to create a custom object instead so that it could be a related list under the opportunities?

 

Thanks for your help!

Best Answer chosen by Admin (Salesforce Developers) 
EnthEnth

Yes, you can apply the same basic solution to both. I'll re-describe the solution in terms of using an Account Record Type based on your private message to me.

 

You have your competitor as an Account record. In order to link this to an opportunity you need to create another object to represent the many-many relationship between the competitor and opportunities. You may also want to store some additional information perhaps, such as the competitors bid price (if you know it) or identify which competitor won the opportunity if you lose it, or the reasons the customer preferred your proposal. 

 

To create this many-many junction object you need a custom object (e.g. CompetitorOpportunity) with at least 2 fields, one a lookup to Account and the other a lookup to Opportunity. To this object you can add additional fields like a described above (e.g. winning bid checkbox, win/loss reason etc). For improved usability you may also wish to filter the Account Lookup on your junction object to only allow Competitor record types.

 

When adding the above lookups you'll be prompted whether you want to add a related list to your Account and Opportunity objects. This will give you the  functionality you're looking for.

 

The main reasons I would not use an Account Record Type myself and would have a custom Competitor object are:

 

  1. I don't want competitors to appear in my Account reports (some ppl do tho')
  2. I only want a subset of fields for my Competitor (name, address, # employees etc)
  3. I don't want to store Contacts for my Competitors - I don't want to mailshot them by accident either

 

If these reasons are not the same for you then they're good reasons for sticking to your solution. 

 

 

All Answers

EnthEnth

You can do either, which depends on whether you want to reuse any other Accounts functionality, such as the relationship with Contacts etc, or if you have some vital Accounts reports.

 

Personally, I'd create Competitors as a custom object (you realise there is a standard one, I assume, but you cannot extend this or add fields to it). If you choose record types all the below is true (but for your Account relationship ensure you put a lookup filter on the competitor field so only Competitor Record types can be selected).

 

You then need to create a junction object, say OpportunityCompetitor which has a lookup/master-detail to Competitor and lookup/Master-Detail relationship with Opportunity. Your Opportunity will then have a Competitors related list if you accept the defaults, and from the Competitor object you'll see a list of opportunities you're competing on. 

 

I'd suggest Master-Detail relationships above, as you always want a Competitor and Opportunity in the Junction object and you'll be able to easily add Roll Up Summaries to your Competitor object to total the business you've lost to them.

AJ-ITIAJ-ITI

Enth, thanks so much for your help. I need clarification, though... I am not sure if the last 2 paragraphs that you wrote apply to the competitor account record type or to a custom object, or both. I think you said that it was for a record type. 

 

It would be easiest for me to keep the work I've already done (the competitor account record type) and also I would like to be able to track contacts with the competitor so I'm hoping what you wrote is a way for me to use what I've already got. 

 

You say you would choose to create a new custom object. Can you tell me why? 

 

Thanks so much for your help! I'm new at this stuff.

EnthEnth

Yes, you can apply the same basic solution to both. I'll re-describe the solution in terms of using an Account Record Type based on your private message to me.

 

You have your competitor as an Account record. In order to link this to an opportunity you need to create another object to represent the many-many relationship between the competitor and opportunities. You may also want to store some additional information perhaps, such as the competitors bid price (if you know it) or identify which competitor won the opportunity if you lose it, or the reasons the customer preferred your proposal. 

 

To create this many-many junction object you need a custom object (e.g. CompetitorOpportunity) with at least 2 fields, one a lookup to Account and the other a lookup to Opportunity. To this object you can add additional fields like a described above (e.g. winning bid checkbox, win/loss reason etc). For improved usability you may also wish to filter the Account Lookup on your junction object to only allow Competitor record types.

 

When adding the above lookups you'll be prompted whether you want to add a related list to your Account and Opportunity objects. This will give you the  functionality you're looking for.

 

The main reasons I would not use an Account Record Type myself and would have a custom Competitor object are:

 

  1. I don't want competitors to appear in my Account reports (some ppl do tho')
  2. I only want a subset of fields for my Competitor (name, address, # employees etc)
  3. I don't want to store Contacts for my Competitors - I don't want to mailshot them by accident either

 

If these reasons are not the same for you then they're good reasons for sticking to your solution. 

 

 

This was selected as the best answer
AJ-ITIAJ-ITI

Thanks so much for taking the time to walk me through that! Good points about why you would prefer the custom object (especially accidentally sending them marketing emails!) I guess I need to think about this before I choose the best route for us.

 

thanks again!
ariel

EastwayEastway
This blog post explains 5 different ways to track competitors in salesforce. These range from using the standard functionality to Account types / record types, fields on the opportunity, a custom object and custom visualforce page. 
http://garysmithpartnership.com/track-opportunity-competitors-salesforce/
Harold CollinsHarold Collins
How do I add a new competitor into deal machine for an opportunity where it does not currenlty exist in the search menu.