SaaS and technology · Sales planning

Forecast and target vs. actuals for new MRR

How much new MRR came in, how much should come in by the end of the period and how much is left to target, by channel, team and rep, with the same number for everyone.

UsageSpecific
EffortMedium
ForSaaS companies that close a monthly or quarterly new MRR target and still build the weekly forecast by hand.
Source

CRM deals, targets spreadsheet and billing

Rule

Same scope, new MRR by type and a weekly snapshot

Outcome

Target vs. actuals, forecast and gap

Activation

Revenue meeting, team TV and AI agent

What it solves

  • Target and actuals read in the same scope, without doubling the target.
  • New revenue split into new logo, upsell and one-off.
  • This week's forecast explained against last week: in, won, slipped, out.

Business questions it answers

Ask your agent these questions once the case is live.

How are we tracking against this month's new MRR target, by channel and by rep?
How much of actuals is new logo and how much is upsell?
What came into and what left the commit this week, and why?
What daily pace do we need to hit this month's target?
How much of the MRR won this quarter is already being billed?
What is the projected month-end MRR, adding sales, expansion and churn?

What you need

  • CRM connected to Nekt with recurring value, expected close date and forecast category on each deal
  • Targets in a spreadsheet or table, with period, scope, revenue type and value
  • The owner x channel or team table, maintained by the manager

What you get

  • A target vs. actuals table by scope and period, with gap and attainment
  • The weekly forecast snapshot with each deal's movement
  • Daily target and required pace for the team TV
  • An AI agent that answers about target and forecast with the same rule

Where to activate

Revenue meeting

Target vs. actuals by scope and the week's movement, read from the frozen snapshot.

Sales team TV

Month-to-date attainment by rep and required pace in business days, updated through the day.

AI agent via MCP

Answers how we are tracking against target and what changed in the commit, without summing scopes or mixing in upsell.

Ready to build?

The rules are business rules and fit in one conversation with the manager. The care point is starting the weekly snapshot early, because the CRM doesn't keep the history of forecast fields. The detailed view has the business rules, the pitfalls and the acceptance test. Or send everything straight to your agent with the Nekt MCP.

The problem

The total target and the cuts by channel and product sit on the same spreadsheet rows, and whoever sums without a filter triples the target. Actuals mix new logo, upsell and implementation, and the deal value is sometimes the whole contract, not the MRR. The weekly forecast is redone by hand because the CRM only keeps the current state, and a deal pushed to the next quarter simply vanishes from the count.

How it is usually done, and the rule

Each row is a mistake that already happened in practice.

The common wayThe rule
01
Summing every row of the targets spreadsheet.
One target, one scope

Load the target into a long table: period, scope (total, channel, team, rep, product), scope key, revenue type and value. Total and cuts live in the same table: always sum filtering one scope. Attainment is computed in the pipeline, never by the agent at question time. On load, treat the spreadsheet as a source that changes format: month columns often change every year.

02
Summing the deal amount, with the full annual contract and implementation inside.
Actuals in MRR, split by type

Use the monthly recurring value of the won deal, not the total contract value: on an annual deal, the total is 12 times the MRR. Classify each win as new logo, upsell or one-off (implementation, one-time service). One-off stays out of the MRR target. If there is a target per type, attainment is per type too, and overall attainment is a declared weighted average (for example, 80% new logo and 20% upsell).

03
Counting a sale to a current customer as new logo.
Upsell doesn't cover an acquisition gap

A deal in the new-business funnel whose company is already a customer, by the company flag in the CRM or by self-declaration on the deal itself, is expansion, not new logo. Generate the list of these cases every week so the manager can fix them before close.

04
Every open deal in the month's forecast, including overdue dates.
Won by won date, open by expected close date

A won deal's period is the won date's period; an open deal's is the expected close date's. An open deal with no date, or with an overdue date, doesn't go into the current period: it goes to an overdue line for review. CS, renewal, partner and legacy pipelines stay out of the new-business forecast.

05
Summing the raw commit flag, with lost deals inside.
Commit, upside and weighted side by side

If the team flags deals as commit and upside, show commit, upside and weighted in their own columns, never summed. Filter status open or won before summing: a lost deal that still carries the commit flag, because nobody cleared the field when it was lost, comes out of the count.

06
Comparing this week's total with last week's.
A weekly snapshot explains the change

Save the forecast every week, because custom CRM fields (such as the forecast category in Pipedrive) have no change history. Compare two snapshots and classify each deal: in, won, slipped, out or MRR changed. Apply the period filter to both snapshots: filtering only the current one makes a deal that moved quarters vanish instead of showing up as slipped.

07
Inferring the channel from the pipeline name or today's owner.
Owner becomes channel through a table, with validity

Map each owner to a channel or team through a table maintained by the manager, with start and end dates, and normalize names before joining. A joint deal between two channels counts for each on its own row and once in the total. CRM loads are usually daily: an owner change made in the afternoon only shows up the next day.

08
Monthly target divided by calendar days.
Daily target by weight, not linear

To track mid-month, spread the monthly target across days with weights per week and the business-day calendar, preserving the month's total and with no day negative or zeroed by compensation. If the team agrees on an intermediate checkpoint (a fraction of the target by a date in the month), it goes in as a written rule. Compare with actuals through yesterday, in the São Paulo time zone.

09
Using the CRM win as the month's revenue for finance.
Won is not billed

For finance, new MRR starts when the first invoice is paid. Show actuals by won date (sales view) and by first charge (finance view), with the difference between the two. In self-serve products, the charge can come before the deal is marked won; in sales with implementation, weeks later.

10
Summing BRL and USD in the same total.
One currency and a declared rate

Deals in another currency go to the reporting currency at a declared rate (a fixed budget rate, for example) kept stable across weeks. Prefer the account-currency value field the CRM already computes (amount_in_home_currency in HubSpot) when the CRM rate is the one agreed with finance.

Weekly forecast movement

Comparing this week's snapshot with last week's, with the same period filter on both.

wasn't open in the period, now isIn
was open, now wonWon
was open, expected close date left the periodSlipped
was open, now lost or without the commit flagOut
still open in the period, MRR changedValue changedcurrent MRR - previous MRR
still open in the period, same MRRNo change

Definitions

Target
spreadsheet value for one period, one scope and one revenue type; never summed across scopes
New MRR actuals
sum of MRR of new-logo deals won in the period, by won date, in the reporting currency
Upsell actuals
sum of the MRR increase of expansion deals won in the period
Gap
target - actuals, in the same scope, type and period; zero when actuals exceed the target
Attainment
actuals / target in the same scope; with targets per type, a declared weighted average
Commit
sum of MRR of open deals with an expected close date in the period and flagged as commit
Weighted forecast
sum of MRR of open deals in the period times the stage's historical win rate
Pro-rated target
sum of the daily target from the first day of the period through yesterday
Required pace
gap / business days left in the period

Pitfalls that already happened

Tripled target

The total target, the channel target and the product target sat on the same rows, and a dashboard summed them all. The team looked a third of the way there when it had already hit the target.

Always sum filtering one scope.

Lost but still in commit

Lost deals kept the commit flag because the field wasn't cleared on loss, and the commit total was inflated.

Filter status open or won before summing the forecast category.

The deal that changed quarters vanished

The weekly comparison applied the quarter filter only to the current snapshot, and deals pushed to the next quarter disappeared without showing up as slipped.

Apply the same period filter to both snapshots.

Existing customer sold as new logo

Deals from companies that were already customers came in through the new-business funnel and were counted as new logo, covering a gap that belonged to acquisition.

Weekly list of new-business deals at companies that are already customers.

Owner change invisible until tomorrow

A deal reassigned in the afternoon stayed under the old owner until the next day's load, and the forecast follow-up went to the wrong person.

Show the last load time and check the owner live before acting.

Legacy pipeline in open pipeline

Deals from an old pipeline nobody worked anymore added to the quarter's open pipeline and gave coverage that didn't exist.

List the pipelines that go into the forecast and exclude legacy.

Validated on real data. In Nekt's own data, about 1 in 6 deals won in HubSpot has its first Stripe charge in a different month from the won month, and in about 15% the charge came before the deal was marked won. Target vs. actuals by won date and by first charge give different numbers for the same month, which is why the two views sit side by side.

Acceptance test

The case is done when every item passes.

Agent package

Paste into Claude, ChatGPT or any client with the Nekt MCP connected.

Full Markdown
Forecast and target vs. actuals
- Forecast revenue is MRR (monthly recurring value), not total contract value. One-off (implementation, services) stays out of the MRR target.
- Revenue types: new logo, upsell, one-off. Upsell never counts toward the new-logo target.
- The targets table has a scope (total, channel, team, rep, product). Always sum filtering one scope. Never sum different scopes.
- Attainment and gap come computed from the table. Don't recompute them.
- Won deal: period of the won date. Open deal: period of the expected close date. Overdue or empty date = overdue, out of the period.
- Only acquisition pipelines go into the new-business forecast. Out: CS, renewal, partners, legacy.
- Commit, upside and weighted are separate columns. Never sum them. Commit only from open or won deals.
- Weekly movement: in, won, slipped, out, value changed, no change.
- Sales view = won date. Finance view = first paid charge. Say which one you are using.
- Reporting currency: <currency>, rate: <declared rate>.
- CRM data is from the last daily load. Give the load time when the question is about the current owner.
Per-client exceptions:
- <client>: overall attainment = <weight>% new logo + <weight>% upsell.
- <client>: a joint deal with a partner also credits channel <channel>.

Variations

Projected month-end MRR

Add to opening MRR the forecast new sales, the forecast expansion from the CS pipeline and the forecast churn from the retention pipeline, each in its own column.

Quarter in dollars

Quarter target and actuals in USD at a fixed declared rate, for companies reporting to investors outside Brazil.

Risk per deal

A 0 to 100 index per open deal, with qualification, recent activity and reschedules, for the manager to review the commit.