Run your Close forecast call and track commit accuracy

By General Input

Set commit, best case, and pipeline on every open deal during the call, then see how each rep's promises compared to what actually closed.

Integrations

  • Close
  • Google Sheets
  • Slack Bot

Type

App

Categories

  • Sales
  • Operations

Build me a monthly forecast commit workbench for Close that I run the forecast call out of with my reps. This is deliberately not a drag and drop stage board. The whole point is that every call produces a dated snapshot we keep, so over time I can look back and see how wrong our commitments usually are.

Main screen, the Forecast Call view. Load every open opportunity from Close with List Opportunities and group them into collapsible sections by expected close month. Use List Pipelines and List Opportunity Statuses to resolve pipeline and status names and to work out which statuses count as open versus won versus lost, and use List Users to turn each opportunity's owner id into a rep name. Each deal row shows the deal name, the lead or company, the owner, the value, the confidence percentage, the current status and pipeline, and the expected close date. Let me filter the whole view by rep and by pipeline, and let me switch which forecast month is selected.

Every deal row gets a three way toggle: Commit, Best Case, or Pipeline. I set this by hand during the call as each rep talks through their deals. Deals I have not categorised yet default to Pipeline. This toggle is the core of the app, so make it a single click on the row and make the current selection obvious at a glance.

The commit category is not a Close field. Close has no native commit category, so store it in app storage keyed by opportunity id plus forecast month, which means the same deal can be committed for March and only best case for April without the two overwriting each other. As an optional setting, let me mirror the category into a Close opportunity custom field: use List Opportunity Custom Fields to let me pick which custom field to mirror into, then write the value with Update Opportunity whenever I change the toggle. Mirroring is off by default.

The header sits above the month groups and rolls the toggles into three separate totals for the selected forecast month: a Commit total, a Best Case total, and a Pipeline total, each with a deal count. Next to them I type in a quota number for that month, which persists per month, and the header shows the gap between the commit total and quota plus commit attainment as a percentage. Totals recompute immediately when I flip a toggle or edit a deal. Never blend the three categories into one number.

I need to fix deals inline, because reps tell me things mid call. On any row let me edit the value, the confidence, and the expected close date and save it straight back to Close with Update Opportunity, then recompute the totals and, if the close date moved to a different month, move the row into the right month group.

Add a hygiene gate. Any open deal whose expected close date is already in the past gets pulled into a Needs cleanup band pinned at the top of the screen with a count. I cannot press Submit Forecast while anything is sitting in that band. I clear each one by pushing the close date out or correcting the deal inline with Update Opportunity, and the band empties as I go.

Submit Forecast writes the dated snapshot to a Google Sheets tab using Append Values. Write one row per deal, carrying the snapshot date, the ISO week, the forecast month, the opportunity id, the deal name, the rep, the value, the confidence, the expected close date, the status and pipeline, and the commit category. Then write one roll up row per rep carrying the snapshot date, the ISO week, the forecast month, the rep, their commit total, best case total and pipeline total, their deal count, and the quota. Before appending, read the tab back with Get Values and look for rows that already have the same forecast month and the same ISO week. If they exist, overwrite them in place with Update Values instead of appending, so that submitting twice in one week updates that week's snapshot rather than double counting it.

After a successful submit, post to our revenue channel with the Slack Bot Send a Message action. The message carries the forecast month, the committed number, the best case and pipeline numbers, the quota and the gap, and the change in the committed number since last week's snapshot, which you work out by comparing against the previous week's rows in the sheet. Let me choose the channel in a settings screen.

The payoff is an Accuracy tab. Read the accumulated snapshots back out of the sheet with Get Values, and for each past forecast month line the committed number we promised up against what actually landed. Get the actuals from Close with List Opportunities filtered to the won statuses for that month, resolving which statuses mean won via List Opportunity Statuses. Show a table by month with committed, best case, actual closed won, the variance in currency, and attainment as a percentage, plus a chart of committed versus actual over time. Underneath, show a per rep table with each rep's average commit accuracy across the last several months, phrased so I can read it directly, for example that a rep's commit typically lands at 70 percent of what they promised and is habitually optimistic. Clicking a rep drills into their month by month history so I can see whether they are getting better or worse.

General behaviour: format all money consistently in our currency, remember the selected forecast month and the quota I entered for it between sessions, show when the Close data was last refreshed with a manual refresh button, and make it obvious which changes are local to the app, meaning the commit categories, and which have been written back to Close, meaning value, confidence, and close date edits.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensStop cold emails to anyone with a live deal in PipedriveLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasoniMessage campaign console with pre-flight checks and delivery board