Best Practices for the Opportunity Object

Share this article...

Salesforce includes a number of standard objects with certain features that are predefined for you to build scalable processes as easily as possible on your org. In this series of articles, I am listing best practices for the main Salesforce standard objects that will help you make the most of standard features.

This month’s article outlines some Best Practices for the Opportunity object.

1. An Opportunity is a Negotiation Process

The Opportunity object typically represents a negotiation process, so its main purpose is to store specific information related to each attempt to close a deal with a potential customer: the time a negotiation process has lasted for, the person responsible for negotiating a deal on behalf of the company, the person representing the customer that we are trying to sign a deal with, the different calls, meetings and emails that have taken place during the negotiation process, the value of that negotiation, etc.

Closing won Opportunities is as important as closing lost Opportunities. You might be tempted to let your sales agents leave Opportunities open while they are not won or even to transfer an Opportunity lost by one sales agent to a different one instead of closing it and assigning the related Account to a new sales agent, so that a new Opportunity gets created to record a second negotiation attempt. However, remember that the purpose of using the Opportunity object is to store information with regard to every single negotiation attempt (whether won or lost) over time. Closing Opportunities helps then understand which Accounts are burnt and thus:

  1. Better understand sales agent portfolios in order to allocate the optimal number of leads and prospects to each of them
  2. Be able to forecast based on negotiation Opportunities that are really open

Keep in mind that there is no company that wins all Opportunities.

2. Use Opportunity Teams

Use Opportunity Teams if there is more than one user involved in a deal.

In some companies, more than one person is required to negotiate one deal with a customer; for example, a sales agent and a technical specialist. If that is the case of your company, Opportunity Teams might be a feature you need to set up in your org. The concept of an Opportunity Team is similar to that of an Account Team, which we covered in the article about Best Practices for the Account object. Opportunity Teams can be used to give special access to several users to a given Opportunity as well as to split credit among the different users that make up its Opportunity Team.

3. Use Contact Roles

Use Contact Roles to indicate the role of a customer contact in a deal.

Your potential customers might have more than one person from their side involved in negotiating a deal or there might be one person who has played different roles in different Opportunity negotiations. If that is the case, you can set up Contact Roles for your sales reps to indicate the role of a Contact in a specific Opportunity.

4. Guide Sales Reps Along the Process

Paths help Sales Reps update Opportunity information along the negotiation process. They display the values you have set up as different stages in your Opportunity process. When a certain stage is selected, you can also display up to 5 fields as key fields for the user to focus on the most important information. A good practice is to enforce validation rules at each of the Opportunity stages to ensure the minimum information necessary is provided.

Finally, you can also encourage your users to celebrate negotiation milestones by enabling a confetti celebration when a certain stage is selected.

5. Measure the Outcome of a Won Negotiation

There are two standard fields to record the value of a Won Opportunity in Salesforce: Amount and Quantity. The Amount field is a currency field that represents the value of the total sale amount. By default, the Account is displayed in the user’s personal currency, but the user can optionally select a different currency. The Quantity field is a number field that you can give a general use to; for example, to assign a numeric weight to an Opportunity.

Note that, when you add the Products related list to the Opportunity Page Layout, both the Amount and Quantity fields will turn read-only whenever you select one or more Products, as they will automatically add up the respective sums of the price and quantity of the related products.

6. Update Past Close Dates with Process Builder

When sales agents create an Opportunity, they must enter a Close Date, which represents the date when they plan to close the deal. When a sales agent closes an Opportunity as Won, its Close Date gets updated to the current date, but only if the original date was some day in the future. On the contrary, if a sales agent closes an Opportunity after the Close Date initially forecast, the close date will remain in the past, as the date will not change in this case.

To solve this, you can create an automatic process with the Process Builder, with which you can trigger an update of a Close Date to the current date whenever the original date was in the past. This way, you will ensure the consistency of our Opportunity data.


Before resorting to a custom solution to build a specific process in your Salesforce org, best is that you first make sure there is no standard functionalities that can be used for it. Standard objects come with a predefined number of features that you can leverage to build your Salesforce processes in the most scalable way.

5 thoughts on “Best Practices for the Opportunity Object

  1. Thank you for the article. I am new to Salesforce and I am trying to learn how to incorporate a good moves management protocol for a nonprofit organization that does have donations, pledges – booked, commitments – not booked, grants (received and not received), gift in-kinds (both service and goods), fees for services (as consultants & for therapies provided to our community). Looking at the normal moves management of identification, qualification, cultivation, solicitation and stewardship. Thank you for your time and any assistance that you can provide. Also, we have third party payments on a pledge opportunity (such an a non-immediate family member paying on another’s pledge), what is best practice of how to show payment on that pledge for the correct total amount and balances due? Thanks again.

  2. Thank you for this best practice article!

    I am wondering how to cut the process between objects if you are using Campaigns with Contacts (former customers with win back potential) and Leads (potentially new customers) for Acquisition. I would use the Campaign Member for initiating a call with the decision maker (or even set the Campaign Member to a status like “wrong contact” and create a new Campaign Member who is the decision maker of a company) – but would only create an Opportunity when I have the chance to talk to the decision maker, irrespective of having the mandate to proceed or having a decline (closed lost) after the first call.

    Would you agree or do you have a better handover from Campaign Member to Opportunity?

  3. What would you suggest for Closed/Won Opportunities that stay open over a number of years because we continue to bill against them. I would like to recommend that our Users close them out at the end of a calendar year and then clone them if we still need to bill against them. The Opportunity amount is a very low estimate that is provided to our clients as an hourly rate and term. In many cases, we will over the Amount of the opportunity.

    1. Hi Paula,

      I’ve come across this scenario in my previous roles. We still needed to forecast future amount, despite to opp having closed. We did exactly as you describe – we had an Opportunity per Month/Quarter etc with the forecast value and we linked them all using a Lookup field. You need to be careful to avoid “double bubbling” e.g. you have the Parent Opp with the full value AND child Opps with the same value…either make the parent Opp $0 or be sure to deduct the value from the Parent Opp when the Child Opps are created – you could even automate this…

      Alternatively, you could consider using something like Orders? This could be used for ongoing contracts/orders without affecting the original Opp.

Add Comment