# Run your Close forecast call and track commit accuracy

> 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.

- Workflow type: app
- Services: Close, Google Sheets, Slack Bot
- Categories: Sales, Operations
- Published: 2026-08-16

## What it does

- Groups every open deal in your CRM by the month it is expected to close, so your forecast call has one screen instead of a spreadsheet and a pipeline view
- Lets you mark each deal as commit, best case, or pipeline while the rep talks, and rolls those into three separate totals against the quota you type in
- Saves a dated snapshot of the whole forecast to a spreadsheet every time you submit, one row per deal and one per rep, so the promises are on record
- Shows an accuracy tab that lines up each past month's committed number against what actually closed, so you can see which reps are habitually optimistic
- Flags deals whose close date has already passed and blocks submission until they are cleaned up, and fixes value, confidence, or close date inline

## What you'll need

- A Close account with opportunities, and a login that is allowed to edit them
- A Google account and a spreadsheet the app can write your forecast history into
- A Slack workspace and the channel where you want the committed number posted
- Your quota number for the month you are forecasting

## Prompt

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.

## How to customize

- Rename the three commit categories or add a fourth tier if your team forecasts differently
- Change what the cleanup rule catches, for example only flag deals more than 30 days past their close date
- Point the history at a different spreadsheet tab, or turn the Slack post off and keep the record only

## FAQ

### Does Close have a commit or forecast category field?

No, and that is the gap this fills. Close tracks pipeline, status, value, and close date, but it has no commit category and no forecast history. The app keeps your commit choice for each deal and each forecast month in its own storage, and can optionally copy it into a Close custom field if you want it visible in the CRM too.

### Will this move my deals between stages or change my pipeline?

No. It is not a stage board and it never drags deals between stages. The only things written back to Close are the corrections you make yourself on a row, such as a new value, confidence, or expected close date when a rep tells you a deal slipped.

### What happens if I submit the forecast twice in the same week?

It updates that week's snapshot rather than adding a second one, so your history never double counts. Submitting again after a rep corrects a number simply replaces the figures already recorded for that week.

### Where does the forecast history actually live?

In a Google Sheets tab you own, with a dated row per deal and a roll up row per rep. The data stays yours and stays readable even if you stop using the app, and the accuracy tab reads back from that same tab.

### How long before the accuracy tab tells me anything useful?

You need a few submitted forecasts first. After two or three months of calls you can start seeing patterns, such as a rep whose commit consistently lands around 70 percent of what they promised, and discount them accordingly.

### Can I use this if my team forecasts quarterly instead of monthly?

Yes. Deals are grouped by expected close month, and you can enter a quota per month, so a quarterly view is just three months side by side. The snapshot and accuracy history work the same way.

Use this prompt in General Input: https://www.generalinput.com/prompts/run-your-close-forecast-call-and-track-commit-accuracy