# Who fixes what: a Salesforce opportunity audit for sales managers

https://salesbond.app/blog/salesforce-opportunity-audit-sales-manager/
Published: 2026-10-08 · Updated: 2026-10-26

Salesforce opportunity management, for a manager, comes down to one repeatable check: audit five fields on every open opportunity (Stage, Close Date, Next Step, Amount, Last Activity), give each field one threshold, name the rep as the person who fixes a violation, and make Friday’s pipeline review the deadline. Then track a single number week over week: the share of open opportunities with zero violations. Everything else in Salesforce, from validation rules to Path, is there to make that check cheaper. The check itself is a rule you write down, and it only works when it has an owner and a date.

In the broad sense, opportunity management is everything from how you define stages to how you forecast and run the pipeline review; this article is the weekly check that keeps that system honest. It is not a setup guide. If you want a rule enforced at the stage gate, we wrote that for HubSpot teams in [required properties by deal stage](https://salesbond.app/blog/hubspot-stage-required-properties/), and the principle carries over. Here it’s about what a manager looks at, what counts as broken, and who repairs it by when.

## The audit that fails first

The first version of this audit dies the same way on most teams. Watch it die once and you will recognize the shape.

A manager, call her Keiko, opens the Opportunities list on a Monday. She filters to open deals, sorts by Close Date and starts reading. Deal three has a Close Date two weeks in the past. Deal seven has “follow up” in Next Step, which it has said since August. Deal eleven has no Amount. She posts in the team channel: “Please clean up your opportunities before Friday.” Four reps react with a thumbs-up.

Friday comes. Deal three now has a Close Date at the end of next month, which may be true or may be the the nearest date that stopped the red. Deal seven still says “follow up”. Deal eleven has an Amount of 1, entered so the field is no longer blank. Keiko has spent two hours, the pipeline report looks the same, and she has learned not to bother next Monday.

Three things went wrong, and none of them was laziness. The ask was “clean up”, which has no definition. There was no threshold, so a rep could not tell which deals were broken and which were fine. And no deal had one person’s name and one date on it.

“Please clean up” is a mood, not a rule.

The fix is to make the audit boring: five fields, one line per field saying what a violation is, one owner, one deadline, a number at the end. If you are new to the product, start with [what to check in Sales Cloud on Monday](https://salesbond.app/blog/salesforce-sales-cloud-manager-weekly-use/).

## Five opportunity fields, five thresholds

We pick these five because together they answer the only questions a pipeline review asks: how far along is it, when, what happens next, how big, and is anyone actually working it. Salesforce stores all five on the standard Opportunity object. Next Step is a free-text field that takes up to 255 characters ( [Salesforce Field Reference: Opportunity](https://developer.salesforce.com/docs/atlas.en-us.sfFieldRef.meta/sfFieldRef/salesforce_field_reference_Opportunity.htm)), and Salesforce’s help describes it as the next task needed to close the opportunity ( [Salesforce: Opportunity fields](https://help.salesforce.com/s/articleView?id=sales.opp_fields.htm&type=5)).

The thresholds below are ours, not Salesforce’s. They are a starting point for a small team selling on a monthly or quarterly cycle. Change the numbers, keep the shape: one field, one test, a yes or a no. If reps cannot find the fields, [a stage-by-stage field map](https://salesbond.app/blog/salesforce-dynamic-forms-stage-fields/) puts each one on the page where it is needed.

| Field | Violation (our proposal) | Why this test |
| --- | --- | --- |
| Stage | Stage Duration is above the limit you set for that stage | A deal that outstays the stage is either stuck or mis-staged; both need a conversation |
| Close Date | Earlier than today on an open opportunity | A past Close Date is a forecast line that is already false |
| Next Step | Blank, or unchanged since last Friday, or no verb and no date in it | “Follow up” is not a step; “Send revised quote to Lena by Wed” is |
| Amount | Blank or zero past the first stage | Weighted pipeline is built from Amount; a blank is a hole in the forecast |
| Last Activity | Blank, or older than 14 days | The deal may still be alive, but nothing in Salesforce shows it |

A note on the Stage limits, because that is where teams argue longest. Salesforce’s own Trailhead unit on stuck deals builds the test as an Opportunities report with a Stage Duration column and a filter per stage (Stage equals X and Stage Duration greater than N days). Its example thresholds are 30 days for Qualification, 45 for Discovery, 15 for Proposal/Quote and 30 for Negotiation, and it tells you to set the real numbers with sales leadership and revisit them each quarter ( [Trailhead: Identify stuck sales deals](https://trailhead.salesforce.com/content/learn/modules/sales-deal-acceleration/identify-stuck-sales-deals)). We agree with the method and would start even tighter on Proposal. A proposal that sits for two weeks without a reply is a proposal nobody is waiting for.

The Next Step test does most of the work. A blank is easy to catch; the harder case is a Next Step that is filled and has not changed since the last review. If the step was done, the field should say the new step. If it was not that is the conversation. To see where a deal waited between stages, build the [Salesforce Opportunity History report](https://salesbond.app/blog/salesforce-opportunity-history-report/).

If you want these violations as saved reports, the [three Salesforce reports a manager opens on Monday](https://salesbond.app/blog/salesforce-reports-sales-manager-weekly/) build the list. This audit decides who fixes it by Friday.

![Audit card: five Salesforce opportunity fields, each with a violation rule, the rep as fixer and the Friday review as deadline](https://salesbond.app/wp-content/uploads/2026/10/salesforce-opportunity-audit-sales-manager-2.png)

## Who fixes it, and by when

A rule without an owner is a suggestion. This is the part that was missing from Keiko’s Monday message, and it fits in four lines.

- The rep who owns the opportunity fixes every violation on it. Not the admin, not the manager, not “the team”.
- The deadline is the Friday pipeline review. Not “this week”, which ends whenever the rep decides it does.
- A violation still there on Friday is the first thing discussed for that deal in the review, ahead of stage and forecast.
- The manager owns the rule itself: the thresholds, the list, and the number at the end. Reps own the deals.

Why the rep? It isn’t accountability theater. The rep is the only person who knows whether the Close Date should move or the deal should be closed lost, whether the Next Step is “send contract” or “find out who signs”, and whether the Amount is 40 or 60. A manager who fixes the field is guessing, and a guess in Salesforce looks exactly like a fact. We wrote about why this matters even on a four-person team in [who owns CRM data on a small sales team](https://salesbond.app/blog/crm-data-ownership-small-sales-team/).

The Friday deadline matters for a different reason. If the audit list and the review are the same meeting, a rep who has not repaired the deal explains it with the violation on screen. Nobody needs to be chased. The review becomes the enforcement, and that is the cheapest enforcement there is. If your review runs on a different day, move the deadline, not the principle; the [15-minute weekly pipeline review](https://salesbond.app/blog/weekly-pipeline-review-15-minutes/) is built on the same idea. Just don’t fix the fields in the review itself. “Let’s update the Close Date now” turns the meeting into data entry. Note it, and it stays on next week’s list with the rep’s name on it.

Expect one honest objection: “The Close Date test hits me for a deal that slipped for a real reason.” It doesn’t. A slipped Close Date is not a violation; a slipped Close Date that nobody moved is. Moving it is a ten-second fix, and you lose nothing by it. Salesforce logs every change to Stage, Amount, Probability and Close Date in Opportunity History (the Stage History related list on the record), with the previous Close Date on each row, and no extra setup is needed: Field History Tracking is for other fields ( [Salesforce: OpportunityHistory object](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_opportunityhistory.htm)). The pattern of moves is what you want to read, and we covered how in [pushed close dates](https://salesbond.app/blog/pushed-close-dates-pipedrive/) for Pipedrive teams. The logic is the same here. If reps use an AI assistant, the same history is the starting point for [auditing AI writes to opportunities](https://salesbond.app/blog/salesforce-mcp-server-ai-writes-audit/).

## What blank Last Activity really means

Last Activity is the field managers trust most and understand least, so it gets its own section.

In Salesforce, Last Activity on an opportunity is not “the last time someone touched this record”. It is whichever is later: the date of the most recent event or the due date of the most recently closed task related to the record. Open tasks don’t count ( [Salesforce Field Reference: Opportunity](https://developer.salesforce.com/docs/atlas.en-us.sfFieldRef.meta/sfFieldRef/salesforce_field_reference_Opportunity.htm); [Salesforce: Guidelines for tracking activities](https://help.salesforce.com/s/articleView?id=activities_view.htm&type=0)). That makes it a different animal from Last Modified, which moves whenever anyone edits any field.

Three consequences follow.

A rep who scheduled a call for next Tuesday and logged it as a task has done the right thing, and Last Activity does not move until that task is closed. So “Last Activity 20 days ago” can sit on a deal with a perfectly good plan. Before you call it a violation, look at the open activities on the deal. If there is a dated, open task, the deal is being worked and the field is just late.

The reverse is also true. A rep who logs an event dated in the future pushes Last Activity into the future, which is why a “days since last activity” formula can go negative. A deal with Last Activity next week is not a clean deal. It is a deal with a planned event, which is good, and nothing closed, which you still want to ask about.

And a truly blank Last Activity means no event and no closed task has ever been related to the opportunity. On a deal in Proposal with an Amount of 80,000, that is not a hygiene problem. It is either unlogged work or a deal created by import and never touched. Both deserve a direct question, and the question is not “why is the field blank”. It is “show me the last conversation”. That’s why our 14-day threshold is deliberately loose and comes with a second look rather than a verdict.

One more detail that catches people in reports: activities whose Related To field is an opportunity also roll up to the account on that opportunity ( [Salesforce: Guidelines for tracking activities](https://help.salesforce.com/s/articleView?id=activities_view.htm&type=0)). So an account can show recent activity while teh opportunity underneath it shows none. Audit the opportunity, not the account.

## One number to track: share of clean opportunities

The audit produces a list. Lists get fixed, forgotten and regenerated. What tells you whether the team is getting better is one number: the share of open opportunities with zero violations across the five fields.

Count it on Friday, after the review, and write it down where the team can see it. Not the count of violations, which rises every time a rep adds deals, so it penalizes prospecting. Not the count of clean deals either, which does the same in reverse. The share. Ten clean out of forty is 25 percent; thirty-two out of forty is 80. The denominator is all open opportunities, including the ones created yesterday.

Why this number and not something cleverer? Because it is the only one a rep can move on their own, in Salesforce, in ten minutes. Win rate depends on the market. Pipeline coverage depends on marketing. Share of clean opportunities depends on whether Tomasz opened his eleven deals on Thursday afternoon and fixed four fields. We put it alongside the other measures a small team can actually keep in [CRM data quality metrics](https://salesbond.app/blog/crm-data-quality-metrics/).

Expect the number to jump in the first weeks and then stall, because the remaining violations are the real ones: deals nobody wants to close lost, Amounts nobody wants to commit to. That plateau is the point. The audit has stopped finding typos and started finding decisions. And if it hits 100 percent and stays there loosen a threshold. A test everybody passes every week isn’t testing anything.

A disclosure, since this is where a manager usually asks whether the Friday count has to be done by hand. We build SalesBond, a sales management layer on top of the CRM a team already uses; we started with Pipedrive. Deal Health runs checks like these five automatically, more than 20 rules against every open deal, and shows the manager which deals fail which rule and why. It takes the counting off the manager. It does not take the Friday conversation off anybody, and we wouldn’t want it to. If you want to see what your pipeline looks like against a rule set, [check your CRM with SalesBond](https://salesbond.app/).

## Write the five lines down

Everything above fits on one page, and we mean that literally. Five fields, five thresholds, “rep fixes, Friday deadline”, and a box for this week’s share. Print it or paste it into the Friday calendar invite. Where it lives matters less than the fact that it exists as text, because the first time a rep says “I didn’t know that counted”, you point at the line.

Then run it for four Fridays before changing anything. The thresholds will feel wrong in week one and you will want to tune them. Don’t. After four weeks you will know which threshold is doing nothing and which one is the real argument on your team, and that argument is the one worth having.
