Renewals: fixing the forecast at the source

How renewals will work in the new operating system, why the forecast will stop drifting, and the decisions we need from Finance and Ops to switch it on.

Author Alex Postance Date 22 July 2026 Audience Finance & Ops team Status Proposal for review

The short version

Today, what happens to a client's forecast after their contract end date is decided by whoever last typed the monthly rows. The new system flips that: the forecast beyond a contract's end date is generated from the contract itself - its type, its dates, and the renewal's status. It is never typed by hand, and it can never be counted twice.

The result: no more revenue quietly carried past a lapsed contract, no more cliff where real revenue drops to zero just because the paperwork isn't signed yet, and no more renewals counted in both the pipeline and the baseline. The gap between "booked" and "budget" becomes a named list of renewals to chase, not a shape on a chart.

1. What goes wrong today

A renewal currently lives in three places that never talk to each other:

SystemKnowsDoesn't know
Contract Tracker sheetEnd date, notice window, auto-renew vs fixed termThe money
HubSpotThe renewal deal - when someone has created oneWhich contract it renews, the expiring value
Rev Tracker / forecastThe monthly moneyWhen the contract ends, whether a renewal exists

Because nothing joins them, four failures keep repeating, and each one moves the forecast:

1Phantom carry-forward

A fixed-term contract ends, but its forecast rows keep running, because deleting them is a manual step nobody owns. Revenue is overstated until someone notices, then corrected in a lump.

2The cliff

The opposite: forecasts stop dead at the contract end date, even for contracts that continue by default (auto-renew and rolling) or clients who will almost certainly re-sign. Every unsigned renewal is treated as either 0% or 100%. This is a large part of the Q4 cliff in the Revenue Spotlight.

3Double-count, or no-count

A renewal can be both a HubSpot deal and a carried-forward baseline row (counted twice), or in neither (missed entirely, because the deal was never created in HubSpot). The two lanes never reconcile.

4Inconsistent classification

The rule is written down - a flat renewal is Baseline; an uplift splits into Baseline plus the growth delta as Cross Sell - but it's applied by judgement at typing time. Baseline retention and Growth both wobble depending on who tagged what.

And underneath all four: the renewal itself has no record. There is no stated answer to "did we decide to continue, uplift, or cancel this contract?", so chasing runs on spreadsheet reminder buckets and churn surfaces at month-end rather than the day it's known.

2. The new model: three bands, one rule

Every contract in the new system carries its renewal mechanism, which is the most important fact about it:

The forecast simply mirrors that reality. Every client-month in the forecast sits in exactly one of three bands:

Booked

Contracted revenue up to the contract end date. Exactly what the P&L recognises today - this band is unchanged and always ties to the warehouse to the penny.

Read by: P&L, forecast, Spotlight
Assumed continuation

Auto-renew and rolling contracts past their end date, carried at the current fee - because continuing is what they actually do. Removed only by a logged cancel decision.

Read by: forecast, Spotlight
Renewal pipeline

Fixed-term continuations not yet signed. Created automatically 90 days out at the expiring fee, then refined by the real renewal scope and its deal stage. Converts to Booked on signature.

Read by: forecast, Spotlight

The bands are always shown separately and unweighted. The single headline forecast number applies a simple, agreed weighting to the renewal pipeline band - printed next to the number, never baked into stored figures. The P&L never reads the generated bands, so there is no route for unsigned revenue to leak into recognised revenue.

3. How a renewal actually flows

Auto-renew / rolling contracts - no sales motion, just a decision
In contractforecast = booked Notice window openssystem prompts the client lead Decision loggedcontinue · uplift · cancel Forecast updates itselfrolls on · re-rates · truncates

These contracts continue past their end date in the forecast by default, because that is what they do in real life. A logged cancel truncates the forecast at the notice-effective date on the day it's known, and raises the churn flag then - not at month-end. An uplift re-rates the forward months from the logged new fee. No decision by the end date? The revenue still rolls (that's what rolling means) but the contract is flagged as undecided and lands in front of the Portfolio Owner at month-end review.

Fixed-term contracts - a real re-signing effort, tracked end to end
In contractbooked stops at end date 90 days outrenewal line appears automatically at expiring fee Scoped & in flightreal numbers replace the estimate; HubSpot deal linked Wonbecomes booked; classification splits itself

Booked revenue stops at the end date and the months after it are locked in the forecast grid - you cannot type revenue into months the contract doesn't cover. The continuation exists only as the renewal line, which carries a status and a countdown. If the end date passes with no signature, the line flips to lapsed, drops out of the weighted number, and becomes a month-end exception the Portfolio Owner must resolve - accept the churn, or act. Nothing silently continues and nothing silently disappears.

4. Three worked examples

ARolling retainer - the cliff case

Client X: media retainer, £10k a month, rolling contract, 60-day notice, current period ends 30 September.

Today: whoever maintains the tracker either types October to December at £10k (fine, until the day the client actually cancels - which we discover at month-end) or stops at September and understates Q4 by £30k. Both happen, person by person, invisibly.

New: October onwards appears automatically as assumed continuation at £10k. Sixty days out, the system prompts the client lead to log a decision. They log uplift +5% after the price conversation: forward months re-rate to £10.5k. Or the client gives notice: they log cancel and the forecast truncates at 30 September that same day, with the churn flag raised immediately.

BFixed term - the phantom and the cliff, both closed

Client Y: SEO, £8k a month, 12-month contract ending 31 October.

Today: either the rows run on to December (a phantom £16k) or they stop dead (a £16k cliff). And if a "Client Y renewal" deal also sits in HubSpot, nothing stops both being counted.

New: booked runs to 31 October and November is locked. On 1 August a renewal line appears automatically: November onwards at £8k, 12-month default term, status "in window", with a 91-day countdown visible in the growth meeting. The client lead scopes the renewal in the Grow & Renew workspace - +3% uplift plus a £2k a month CRO cross-sell. The estimate is replaced by the real scoped numbers and the linked HubSpot deal's stage drives the weighting. On signature it converts to booked, and the classification splits itself: £8k × 12 is Baseline, the uplift and the CRO line are Cross Sell. Nobody tags anything by hand.

CRenewal at a lower value - the honest decrease

Client Z renews at £6k a month, down from £8k.

Today: usually just retyped at £6k. The £24k-a-year contraction is invisible inside the Baseline number until someone reconciles.

New: the win records £6k against a known expiring value of £8k, so a £2k a month baseline contraction is logged as a first-class movement - visible in the weekly movement report and the Spotlight walk. Decreases become as visible as growth.

5. Where HubSpot fits

HubSpot stays the home of the renewal deal - the selling record: stage, owner, amount, probability, close date. The dedicated renewals pipeline ("Global Existing Client Renewals") already exists and keeps working exactly as now. Two things change around it:

The deal gets linked to the contract it renews

Today a renewal deal in HubSpot names a client but not a contract - which is exactly why a deal and a carried-forward baseline row can double-count. A new required field on the renewals pipeline records the contract being renewed. The primary path does this automatically: starting a renewal from the OS creates the HubSpot deal with the client, contract, service, term and expiring value pre-filled - the deal is born linked and born clean. Deals created directly in HubSpot are still fine: they're matched to the client and flagged until someone links them to their contract (one click).

The contract seeds, HubSpot enriches

The renewal line in the forecast is created from the contract, 90 days out, whether or not anyone has created a HubSpot deal yet - so a renewal that hasn't reached HubSpot still shows up as at-risk rather than vanishing. When the deal exists, it enriches that same line: its stage and probability drive the weighting, the scoped amount replaces the estimate. One renewal, one line, progressively refined - never two lanes to reconcile.

Two rules worth stating plainly. First: HubSpot "Closed Won" is not revenue recognition - the Win Gate remains the single route into booked revenue, and a Closed Won deal without it shows as an exception, not as revenue. Second: auto-renew and rolling contracts need no HubSpot deal at all - they aren't a sales motion. That keeps the renewals pipeline meaningful (real re-signing efforts with real stages) instead of filling with placeholder deals for contracts that were always going to roll.

6. What changes for whom

RoleWhat you do differentlyWhat stops happening to you
CX Account Director / client leadLog one decision per rolling contract when the notice window opens (continue / uplift / cancel - about a minute). Scope fixed-term renewals in Grow & Renew when prompted, 90 days out.No more retyping forecast rows past contract ends. No more month-end surprises on contracts you knew about. Churn is logged when you know it, in one click.
Portfolio OwnerReview the unsecured renewal band at month-end: accept or act on lapsed and undecided contracts. Chase from a named list.No more discovering a lapsed contract inside a variance. The Q4 question becomes "here are the nine renewals Q4 rides on", not "why did the forecast move?"
FinanceAgree the weighting ladder and the classification split (once, in writing). Month-end close gains one gate: renewal exceptions resolved or explicitly accepted.No more phantom revenue to unpick at close. Baseline vs Cross Sell stops depending on who tagged the deal - the split is computed from the expiring value.
Portfolio / New Business leadsRenewal deals get created from the OS with everything pre-filled - or, if created in HubSpot directly, linked to their contract in one click.No more renewal deals invisible to the forecast because a spreadsheet was updated instead of HubSpot.

7. What deliberately does not change

8. Why each problem stops being possible

Today's failureWhat prevents it in the new system
Phantom carry-forwardMonths past a fixed contract's end date are locked in the grid. Continuation only exists as a renewal line that decays and raises an exception if untouched.
The cliffRolling contracts carry forward by default; fixed-term shows the weighted renewal band instead of zero. The remaining gap is a named chase list.
Double-count / no-countOne renewal line per contract. The estimate is replaced by the scope, then converted by the win - money moves between bands, it never duplicates. Contracts seed the line even when HubSpot lags.
Inconsistent classificationThe Baseline / Cross Sell split is computed at the win from the known expiring value. Renewals at lower value log a visible contraction.
Nobody chased itAutomatic prompts at 90 days, 60 days and the notice date, via Slack. Month-end close gates on the renewal exception queue: resolved, or explicitly accepted by the Portfolio Owner.

9. Rollout

Five phases over roughly five weeks, designed to run alongside the RevTrack pilot (same people, same month-end). Phase 2 is valuable on its own even if later phases wait - the bands view alone makes the Q4 position legible.

PhaseWhenWhatDone when
1Week 1Classify every active contract as auto / rolling / fixed (migrated from the Contract Tracker, then maintained in the OS). Agree the weighting ladder with Finance.Active contracts 100% classified
2Weeks 2-3The three-band forecast view, read-only, running in parallel. Booked band reconciled against the warehouse.Ties to the penny
3Week 3Renewal prompts to Slack; decision logging live for rolling contracts; contract link added to open HubSpot renewal deals.Leads logging real decisions; every open renewal deal linked
4Weeks 4-5Grid lock past fixed end dates; automatic classification split at the win; Spotlight reads the bands.One real renewal through end to end
5First closeMonth-end runs with the renewal exception gate. Contract Tracker renewal columns frozen.Close passes with the queue clear or accepted

10. The decisions we need from this group

1The weighting ladder

How much of an unsigned renewal counts in the headline forecast number. Proposed: assumed continuations at full value until the notice date; fixed-term renewals not yet started at our historical renewal rate; in-flight renewals at their deal probability; verbal agreement at 90%.

Needed: Finance sign-off on the ladder. The historical renewal rate needs measuring - we propose a placeholder of 70% for the first two quarters, clearly labelled, replaced by the measured rate. It is a placeholder, not a claim.

2Undecided rolling contracts past their end date

They keep rolling in real life, so we propose the forecast keeps them at full value with an "undecided" flag for the Portfolio Owner. The alternative is holding them out of the weighted number until a decision is logged, which is more cautious but reintroduces a small cliff.

Needed: a call between the two treatments.

3Forecast horizon

How far forward the generated bands run. Proposed: a rolling 12 months, so the Spotlight always sees a full year ahead.

Needed: confirmation this matches how Finance wants to report.

4The renewal unit for multi-contract clients

Where a client holds several contracts, each contract is its own renewal (its own dates, its own line), rolled up per client on the renewals screen.

Needed: confirmation, plus any known exceptions where the client relationship is really one commercial conversation.