---
name: salesforce-opportunity-management
slug: salesforce-opportunity-management
description: This skill should be used when the user asks to "manage opportunities in Salesforce", "design opportunity stages", "Salesforce opportunity best practices", "set up opportunity management", "configure Salesforce opportunities", "Salesforce deal management", "opportunity pipeline in Salesforce", "manage Salesforce pipeline", "Salesforce opportunity fields", or any variation of managing and optimizing opportunity records and pipeline in Salesforce for B2B SaaS.
category: general
---

# Salesforce Opportunity Management

Opportunity management in Salesforce is how you track, forecast, and advance deals through your pipeline. Every opportunity represents potential revenue. How you configure opportunities determines whether your pipeline data is trustworthy or fiction.

The principle: an opportunity should reflect reality, not aspiration. The amount should be the actual expected ACV, not an inflated guess. The close date should be the actual expected close date, not end-of-quarter default. The stage should reflect what's actually happened, not where the rep wishes the deal were.

## Opportunity Configuration

### Essential fields

| Field | Type | Required? | Purpose |
|-------|------|-----------|---------|
| Opportunity Name | Text (auto-formatted) | Yes | Naming convention: "[Account] - [Product/Plan]" |
| Amount | Currency | Yes | Expected ACV or TCV |
| Close Date | Date | Yes | Expected signature date |
| Stage | Picklist | Yes | Current position in pipeline |
| Opportunity Owner | Lookup | Yes | The rep working the deal |
| Type | Picklist | Yes | New Business, Renewal, Expansion, Upsell |
| Lead Source | Picklist | Yes | Inbound, Outbound, Partner, Referral |
| Next Step | Text | Yes | Specific next action with a date |
| Contact Roles | Related list | Yes (at least 1) | Who's involved from the buying side |

### Custom fields for B2B SaaS

| Field | Type | Purpose |
|-------|------|---------|
| ICP_Fit__c | Picklist (Tier 1/2/3) | Track prospect quality |
| Competitor__c | Picklist | Track competitive landscape |
| Champion__c | Lookup (Contact) | Who's the internal champion |
| Close_Reason__c | Picklist | Required on Closed Lost |
| Qualification_Score__c | Number | BANT/MEDDPICC score |
| ARR__c | Currency | For non-standard pricing (if Amount is TCV) |
| Pain_Identified__c | Text | Documented pain from discovery |
| Decision_Process__c | Text | How the buying decision will be made |

---

## Opportunity Naming Convention

### Naming rules

```
Format: [Account Name] - [Product/Plan] - [Size Indicator]

Examples:
  "Ramp - Pro Plan - 50 seats"
  "Acme Corp - Enterprise - Custom"
  "Vercel - Growth - Annual"

Anti-patterns:
  "Deal 1" (meaningless)
  "Big opportunity" (not searchable)
  "Q2 close" (not descriptive)
```

- **Include the account name.** Opportunity lists and reports show the name. Without the account, you can't tell deals apart
- **Include the product or plan.** Distinguishes multiple deals from the same account (new business vs expansion)
- **Automate the naming.** Use a Salesforce Flow to auto-generate the name on creation: `[Account.Name] - [Product__c] - [Plan__c]`

---

## Stage Management

### Stage design (see hubspot-deal-stages for full methodology)

| Stage | Probability | Entry criteria |
|-------|-------------|---------------|
| Discovery | 10% | First meeting completed. ICP fit confirmed |
| Qualification | 25% | BANT confirmed. Champion identified |
| Evaluation | 40% | Demo or POC in progress |
| Business Case | 60% | Pricing discussed. ROI shared |
| Proposal | 75% | Formal proposal sent |
| Negotiation | 85% | Contract in review. Redlines in progress |
| Closed Won | 100% | Contract signed |
| Closed Lost | 0% | Deal not happening |

### Stage management rules

- **Require "Next Step" updates on every stage change.** The next step field should describe a specific action with a date: "Follow-up call with VP Eng, March 15." Not "waiting" or "TBD"
- **Require Contact Roles before Stage 3.** No deal should advance past Evaluation without at least 2 contact roles associated. This enforces multi-threading
- **Validate deal amount at Proposal stage.** Before entering Proposal, the amount should be updated from an estimate to the actual proposed price. This improves forecast accuracy
- **Close date validation.** If a deal's close date is in the past and the deal is still open, trigger an alert. Stale close dates destroy forecast reliability

---

## Pipeline Hygiene

### Weekly pipeline review

```
Every Monday:
1. Filter: My open opportunities, sorted by close date
2. For each deal:
   - Is the close date still accurate? (Update if not)
   - Is the stage still accurate? (Advance or regress)
   - Is there a next step scheduled? (Add one if not)
   - Has there been activity this week? (Flag if no)
3. For deals closing this month:
   - What's needed to close? (Document)
   - Is there risk? (Flag and discuss with manager)
```

### Pipeline hygiene rules

- **Close stale deals.** Open deal with no activity for 30 days and no scheduled next step = stale. Move to Closed Lost with reason "Stale - No Activity" or move to a nurture stage
- **Push dates honestly.** If a deal won't close this quarter, push the close date to next quarter. Don't leave it at March 31 hoping for a miracle. Honest dates produce honest forecasts
- **No $0 opportunities.** Every deal should have an amount, even if it's an estimate. $0 deals are invisible in pipeline reporting. Enter a best guess and refine as the deal progresses
- **Track close date changes.** Use a field history report on Close Date. If a deal's close date has been pushed 3 times, the probability should decrease regardless of the stage

---

## Opportunity Splits and Multi-Touch

### Contact Roles

| Role | When to assign | Purpose |
|------|---------------|---------|
| Decision Maker | Economic buyer identified | Identifies who signs the check |
| Influencer | Technical evaluator or end user | Tracks who's influencing the decision |
| Champion | Internal advocate pushing for your solution | Your primary ally in the deal |
| Blocker | Someone opposing the deal | Awareness of opposition |

### Contact role rules

- **Minimum 2 contact roles before stage 3.** Single-threaded deals die when one person goes on vacation, changes roles, or loses interest. Enforce multi-threading through required contact roles
- **Champion must be explicitly marked.** "Who in this account wants us to win?" The champion should be a specific contact with the Champion role. If there's no champion, the deal is at risk
- **Update roles as the deal progresses.** The discovery contact may not be the decision maker. Add roles as new stakeholders engage. Remove roles that disengage

---

## Forecasting from Opportunities

### Forecast categories

| Category | Stage mapping | Meaning |
|----------|-------------|---------|
| Pipeline | Discovery, Qualification | Active but not forecast |
| Best Case | Evaluation, Business Case | Could close this period |
| Commit | Proposal, Negotiation | Will close this period |
| Closed | Closed Won | Revenue |
| Omitted | Closed Lost | Not counted |

### Forecast rules

- **Forecast category and stage are different.** Stage = where the deal is in the process. Forecast category = how likely it is to close THIS period. A Stage 4 deal with a Q4 close date is not a Q2 forecast
- **Commit means commit.** The rep would bet their commission on it. If commit deals regularly don't close, the category has lost meaning. Tighten the criteria
- **Review forecast weekly with each rep.** Manager asks: "For each commit deal, what specifically happens between now and the close date?" If the rep can't articulate the path, it's not commit

---

## Measurement

| Metric | Definition | Target | Frequency |
|--------|-----------|--------|-----------|
| Average deal size | Mean opportunity amount for closed-won deals | Track trend | Monthly |
| Win rate | Closed Won / (Closed Won + Closed Lost) | 20-30% for most B2B SaaS | Monthly |
| Sales cycle length | Average days from opportunity creation to close | Decreasing or stable | Monthly |
| Pipeline velocity | (# deals x win rate x avg deal size) / cycle length | Increasing | Quarterly |
| Close date accuracy | % of deals closing within 2 weeks of their close date | > 70% | Quarterly |
| Stale deal rate | % of open deals with no activity in 14+ days | < 15% | Weekly |
| Contact roles per opp | Average contact roles per opportunity | > 2 for deals past stage 2 | Monthly |

---

## Pre-Setup Checklist

- [ ] Opportunity naming convention defined and automated
- [ ] 5-7 stages configured with data-backed probabilities
- [ ] Required fields set per stage (Next Step, Amount, Close Date)
- [ ] Close Reason required on Closed Lost (dropdown, 5-7 options)
- [ ] Contact Roles required before stage 3 (minimum 2)
- [ ] Custom fields for ICP fit, competitor, and champion configured
- [ ] Opportunity types defined (New Business, Renewal, Expansion)
- [ ] Weekly pipeline review process documented
- [ ] Stale deal automation configured (alert at 14 days, auto-close at 60 days)
- [ ] Forecast categories mapped to stages
- [ ] Reports built: pipeline by stage, win rate trend, sales cycle length

---

## Anti-Pattern Check

- Opportunities with no close date. 15% of open deals have no close date. They're invisible in time-based reporting and forecasting. Require close date at creation. Always
- $0 amount on pipeline deals. 20 deals show $0 in the pipeline. Pipeline report says $500K but it's actually $700K if those $0 deals had amounts. Require amount at creation, even if estimated
- Single-threaded past Evaluation. The deal is at Business Case stage with one contact. That person goes on vacation. The deal stalls for 3 weeks. Require 2+ contact roles before stage 3
- Close dates pushed 4+ times. The deal has been "closing next month" for 6 months. Nobody questions it. Track close date history. If pushed 3+ times, flag for review and reduce probability
- No close reason on lost deals. 40% of Closed Lost deals have no reason. You can't improve what you don't measure. Require a close reason dropdown. Always
- Opportunity names are gibberish. "Deal 47," "Big one," "asdfgh." You can't search, filter, or identify these deals. Enforce a naming convention: "[Account] - [Product]"
- Reps avoid updating stages. Deals jump from Discovery to Closed Won in one move. All the stage-level data is missing. This happens when stage transitions require too many fields. Reduce required fields to 2-3 per transition