How to build a sales forecast bridge from pipeline history: the components that explain the difference between run rate and forecast, the slip count per deal that predicts the next slip, and the follow-up questions that turn the forecast call into a conversation about evidence.
Every forecast call has the same moment: the number is $1.4m above the run rate, someone asks why, and the answer is a list of deal names from memory. A forecast bridge is that answer computed from the pipeline history, deal by deal, before the call. This guide sets out how to build it and how to read it.
Between two points in time, the forecast for a period changes because of named events:
| Component | Meaning |
|---|---|
| New | Deals created since the prior snapshot, closing in the period |
| Expansion | Existing deals whose value rose |
| Pulled in | Deals moved into the period from a later one |
| Pushed out | Deals moved out to a later period, by decision |
| Slipped | Deals moved out because the customer did not act |
| Lost | Deals closed lost |
| Won | Deals closed won |
The components sum exactly to the change. That is what makes it a bridge rather than a commentary.
forecast(now) − forecast(prior) = new + expansion + pulled in − pushed out − slipped − lost − won
Q4 forecast rose $1.4m since the last call.
| Component | Deals | Value | Largest |
|---|---|---|---|
| New | 6 | +$0.5m | $0.2m |
| Pulled in from Q1 | 3 | +$1.1m | $0.6m |
| Expansion | 2 | +$0.1m | |
| Pushed out to Q1 | 2 | −$0.2m | |
| Lost | 1 | −$0.1m | |
| Total | +$1.4m |
Three deals pulled in from Q1 explain most of the rise. All three are in the West, and the history shows each has already slipped twice. Excluding them, the forecast is $0.3m above run rate, inside the usual range. That is the sentence the CRO says on the call, and the CFO's follow-up, "what is Q4 without the three", is answered on the same page.
A deal that has slipped once is ordinary. A deal that has slipped twice is a pattern, and the third slip is more likely than the close. A forecast that depends on deals with two or more slips is a forecast built on the deals least likely to close on time, and the bridge should flag them by rep, because the pattern is usually a rep's, not a customer's.
Snapshot only. A CRM export without history cannot bridge; it can only compare two totals. Get the history export.
Pushed and slipped merged. Without a reason on the close-date change, every move looks the same. Record the reason; it is one field.
Value changes and date changes together. A deal that grew and slipped in the same week belongs in one component. Decide the precedence, usually the date change, and apply it every time.
Won deals left in. A deal closed won during the window is revenue, not forecast. Move it to the won line so the bridge does not double count.
Mapped once, the history export produces the bridge, the slip counts and the ranked deals before every forecast call, and answers the follow-ups with the deals shown. Covirage does this on the export as it is. The forecast analysis page describes the setup.
Pushed is a deal the team moved to a later period on purpose, usually with a reason. Slipped is a deal whose close date moved because the customer did not act. Both delay revenue; only one was a decision. The pipeline history tells them apart when the reason is recorded.
Two snapshots give a bridge. A full stage and close-date history, ideally two years, gives slip counts per deal and slip patterns per rep, which is where the forecast becomes predictive.
Salesforce and HubSpot both keep opportunity history with stage and close-date changes. The export needs the history, not just the current snapshot.