7 min read
Deal Stage Tracking & Revenue Recognition Timing
Wienanto Tanuwidjaja
Originally posted on Aug 14, 2026 1:59:51 PM
Last updated on Aug 14, 2026 1:59:51 PM
Table of Contents:
1. The Misalignment: Sales Stages vs. Revenue Recognition
2. The Problem This Creates
3. Building the Stage-to-Revenue Map
4. Mapping HubSpot Stages to Revenue Recognition
5. Using Stage Progression to Predict Revenue Timing
6. Deal Stage Velocity: Predicting When Deals Close
7. Handling Stage Changes
8. The Contract Metadata That Revenue Recognition Requires
9. Common Mistakes in Mapping Stages to Revenue
10. Building a Deal Stage Dashboard for Finance
11. How Logiframe Approaches Stage-to-Revenue Mapping
12. Frequently Asked Questions
Sales defines deal stages based on what's happened in the sales process. Finance defines revenue recognition based on what's been delivered and earned.
These are completely different frameworks.
Sales perspective:
Prospecting: Initial conversation, interested but no budget yet
Qualification: Budget confirmed, need established
Proposal: Sent a proposal, waiting for response
Negotiation: They're interested, negotiating terms
Closed Won: They signed, deal is done
Finance perspective (ASC 606):
Contract signed: We have a binding agreement
Identified performance obligations: We know what we're delivering
Determined transaction price: We know the payment
Allocated transaction price: We know how much to recognize
Recognized revenue: As we fulfill obligations
These don't line up. A deal can be "Closed Won" in HubSpot, but revenue might not be recognized for months (if service delivery is delayed).
The Problem This Creates
Scenario 1: Service Start Date is After Close Date
Sales closes deal in August. Service starts October 1. Revenue recognized monthly from October to next September.
Sales says August is a win (correct). Finance says August revenue is $0 (also correct). But if you're not careful with the mapping, finance looks like they're arguing with sales about whether the deal closed.
Scenario 2: Multi-Year Contracts
Sales closes $300K, 3-year enterprise contract in Q1. All cash comes in Q1 ($100K upfront, rest Net 30).
Finance recognizes $100K ÷ 36 months = $2.78K/month.
Sales forecast said Q1 = $300K. Finance P&L shows Q1 = $2.78K. Board is confused.
Scenario 3: Milestone-Based Revenue
Contract is $100K, but revenue is recognized in three milestones: kickoff ($25K), implementation complete ($50K), go-live ($25K).
When does revenue actually get recognized? When we complete each milestone, not when the deal closes.
If you tie revenue recognition to "Closed Won" stage, you'll get it wrong.
Building the Stage-to-Revenue Map
For each deal stage, define:
-
What needs to happen for revenue to be recognized?
-
When will that likely happen?
-
What's the accounting treatment?
Example 1: Consulting Services (Project-Based)
Deal Stage: Prospecting
Revenue impact: $0
Reason: No contract yet, no revenue recognized
Deal Stage: Proposal
Revenue impact: $0
Reason: Contract not signed, no obligation
Deal Stage: Negotiation
Revenue impact: $0
Reason: Still negotiating; could fall apart
Deal Stage: Closed Won
Revenue impact: $0 (initially)
Reason: Signed, but we haven't started the project yet
(After Closed Won, project begins)
Project Started:
Revenue impact: Begins recognizing as services delivered
Reason: ASC 606: revenue recognized as performance obligations are satisfied
Project Completion:
Revenue impact: All remaining revenue recognized
Reason: Project complete, revenue has been earned
Key insight: Revenue doesn't start at "Closed Won." It starts when service delivery begins.
Example 2: SaaS Subscription
Deal Stage: Prospecting
Revenue impact: $0
Reason: No contract
Deal Stage: Decision
Revenue impact: $0
Reason: Not yet signed
Deal Stage: Closed Won
Revenue impact: $0
Reason: Signed, but contract might start in future month
Contract Start Month (e.g., "Service starts June 1"):
Revenue impact: $833/month for 12-month contract
Reason: Performance obligation is delivering software access monthly
Month 1-12:
Revenue impact: $833/month (recurring)
Contract Renewal Month:
Revenue impact: New $833/month (if renewed)
Reason: New contract term, new performance obligation
Key insight: SaaS revenue is tied to "contract start date," not "deal close date."
Mapping HubSpot Stages to Revenue Recognition
Step 1: Define Your Stages
Be specific about what each stage means:
Stage: Initial Contact
Criteria: First call/demo completed, no decision yet
Stage: Qualified Prospect
Criteria: Budget and timeline confirmed, stakeholders identified, pain point understood
Stage: Proposal Sent
Criteria: Formal proposal given, waiting for decision
Stage: Negotiation
Criteria: Customer engaged in pricing/terms discussion, likely to decide in next 30 days
Stage: Legal Review (if applicable)
Criteria: Contract with legal team (enterprise deals)
Stage: Closed Won
Criteria: Fully signed contract
Stage: (Optional) Implementation/Onboarding
Criteria: Customer onboarded, service delivery started (if different from close date)
Step 2: For Each Stage, Document Revenue Impact
Stage: Closed Won
Question 1: What needs to happen before revenue is recognized?
Answer: Service delivery start (per ASC 606, revenue recognized as performance obligations are satisfied)
Question 2: When does service delivery typically start?
Answer: 30 days after close (on average; check your data)
Question 3: What's the revenue treatment?
Answer: Revenue deferred until service starts, then recognized monthly/annually depending on contract
Question 4: What contract terms must we know?
Answer: Service start date, service end date, payment terms, billing frequency
Question 5: What happens if service start is delayed?
Answer: Revenue is deferred even longer; close date doesn't trigger revenue
Step 3: Build Historical Close Rate by Stage
Track what percentage of deals in each stage eventually close (and when):
Initial Contact stage:
20% eventually close
Average time to close: 180 days
Qualified Prospect stage:
50% eventually close
Average time to close: 90 days
Proposal Sent stage:
70% eventually close
Average time to close: 45 days
Negotiation stage:
85% eventually close
Average time to close: 20 days
Legal Review stage:
95% eventually close
Average time to close: 10 days
Closed Won stage:
100% close (by definition)
When forecasting Q3 revenue, apply these probabilities and timelines to deals in each stage.
Using Stage Progression to Predict Revenue Timing
Scenario: Q3 Revenue Forecast
You have a HubSpot pipeline:
|
Deal
|
Value
|
Stage
|
Days in Stage
|
Prob
|
Expected Close
|
Service Start
|
Revenue Recognition
|
|
A
|
$100K
|
Closed Won
|
5
|
100%
|
Aug 20
|
Sept 15
|
Oct-Sept (12 months)
|
|
B
|
$50K
|
Negotiation
|
15
|
85%
|
Sept 4
|
Oct 1
|
Oct-Sept (12 months)
|
|
C
|
$75K
|
Proposal
|
10 |
70% |
Sept 24 |
Nov 1 |
Nov-Oct (12 months) |
Revenue by month:
August: $0 (Deal A closes but service hasn't started)
September: $8.33K (Deal A, $100K ÷ 12 months)
October: $8.33K (A) + $4.17K (B, starts Oct) + $0 (C not closed yet)
Finance can now forecast accurately because they know:
-
Which deals close this quarter (Deal A for sure, B likely, C less likely)
-
When service starts for each (not the same as close date)
-
When revenue is recognized (tied to service start, not close date)
Deal Stage Velocity: Predicting When Deals Close
"Velocity" is how fast deals move through stages.
Track this:
Rep A's deals in Negotiation stage:
Average time in Negotiation: 20 days
Current: Deal X entered Negotiation on Aug 25
Prediction: Close by Sept 15
Rep B's deals in Negotiation stage:
Average time in Negotiation: 40 days (slower)
Current: Deal Y entered Negotiation on Aug 25
Prediction: Close by Oct 5
When you have a deal in a stage, check historical velocity to predict when it will close.
This is more accurate than "sales says it will close by X date."
Handling Stage Changes
When a deal moves stages, update predictions:
Deal X: Proposal stage → Negotiation stage (Aug 25)
Old prediction: Close by Sept 20 (70% of proposals close, 45-day average)
New prediction: Close by Sept 15 (85% of negotiations close, 20-day average)
New revenue forecast: Sept revenue improves (more likely to close this month)
Deal Y: Negotiation → Legal Review (Sept 1)
Old prediction: Close Sept 20
New prediction: Close Sept 11 (95% of legal stage closes, 10-day average)
Confidence goes up (95% vs. 85%)
Good CRM systems track stage changes and update forecasts automatically.
The Contract Metadata That Revenue Recognition Requires
HubSpot needs to capture deal-level contract details:
Custom field: Service Start Date
Why: Revenue recognized starting this date, not close date
Custom field: Service End Date
Why: Revenue recognized through this date (SaaS, subscriptions)
Custom field: Contract Value
Why: Total value for multi-year contracts (not annual value)
Custom field: Billing Frequency
Why: Monthly, quarterly, annual? Affects cash flow
Custom field: Payment Terms
Why: Net 30, Net 60, upfront? Affects cash flow
Custom field: Revenue Recognition Method
Why: Upfront, over time, milestone-based? Triggers different accounting
Custom field: Milestone Dates (if applicable)
Why: When is revenue recognized for each milestone?
Without these fields, revenue forecasting is guesswork.
Common Mistakes in Mapping Stages to Revenue
Mistake 1: Assuming "Closed Won" = Revenue This Period
Deal closes in Q3. Service starts Q4. You count full revenue to Q3. Revenue miss when Q3 closes.
Fix: Separate "deal close date" from "service start date." Revenue is tied to service start, not deal close.
Mistake 2: Not Updating Forecast When Deal Moves Stages
Deal in Proposal stage; forecast says 45-day close. It moves to Negotiation (20-day close). You don't update the forecast.
Fix: Automate forecast updates when stages change. Use velocity data to predict close dates.
Mistake 3: Using Sales's Close Date Estimate Instead of Historical Velocity
Sales says "This deal will close by Sept 10." Historically, deals in this stage take 25 days (so Sept 20 is more realistic). You use Sept 10.
Fix: Trust historical data over optimistic sales estimates. Sales is often wrong about timing even when right about whether a deal closes.
Mistake 4: Not Accounting for Seasonal Patterns
Q4 has higher close rates (year-end push). Your forecast doesn't account for this.
Fix: Track seasonal patterns. If 60% of Negotiation deals close in Q4 vs. 40% in Q3, adjust forecast accordingly.
Building a Deal Stage Dashboard for Finance
A good dashboard for finance shows:
Stage View:
-
How much pipeline in each stage?
-
How long does each stage typically take?
-
What's the historical close rate for each stage?
Velocity View:
-
Which deals are moving fast (getting close to close)?
-
Which deals are stuck (haven't moved in 30+ days)?
-
Which ones should finance follow up on (at risk)?
Revenue Impact View:
-
Which stages will likely close this month?
-
When will service start for each?
-
When will revenue be recognized?
-
How accurate was last month's forecast?
-
Which reps' forecasts are most accurate?
-
Where are gaps between forecast and actual?
How Logiframe Approaches Stage-to-Revenue Mapping
We work with your sales and finance teams to:
-
Define stages precisely
-
Determine revenue impact of each stage (when revenue recognition starts)
-
Build historical velocity and close rate data
-
Set up HubSpot-to-NetSuite automation so revenue is recognized based on stage + contract terms (not just deal close)
Most clients see forecast accuracy improve significantly once stage progression is properly tied to revenue recognition.
Frequently Asked Questions
What if deals move between stages frequently (back and forth)?
Track the most recent stage change, not total time in stage. If a deal bounces from Negotiation to Decision and back to Negotiation, you count recent time in Negotiation for velocity.
How do we account for deals that get stuck in a stage?
They're stuck. Flag them for follow-up. Historically, deals stuck 60+ days are at risk. Don't count them in "likely to close this month" forecast.
Should we have different stages for different deal types (SaaS vs. services)?
You could, but better to have unified stages and use custom fields to mark deal type. Unified stages let you compare performance across deal types.
How often should we update stage definitions?
At least annually. If your sales process changes, stages should change. But don't change mid-year; you'll lose historical data.![]()

.png?width=141&height=85&name=logiframe-png%20(2).png)