Integration · Revenue operations
How to build a forecast snapshot sync
The CRM only knows what the pipeline looks like today, so nobody can say what the forecast was three weeks ago or which deals moved since. Here is the model behind weekly forecast snapshots, the prompts that build it, and what it takes to keep it running.
Built with Tray Headless
- System Salesforce
- Step Freeze pipeline and call
- System Snowflake
- Step Compare week on week
- System Looker
Each snapshot is written once and never edited, so this week can always be compared with any week before it.
The short answer
What is a forecast snapshot sync?
A forecast snapshot sync comes down to four things: a copy of every open deal and every rep's forecast call taken at the same moment each week, snapshots that are written once and never changed, a comparison of each call with what actually closed, and a weekly view of what moved and why. The part teams skip is keeping the snapshots untouched. A history that gets corrected later can't tell you how accurate the forecast was, which was the point of keeping it.
Stage 6 of 8: Forecast snapshots. Part of Revenue operations automation, end to end : every stage, the systems it runs on and the guide that builds it.
What matters here
- Take the snapshot at the same time every week, after the forecast call is due and before the review. A snapshot taken on a different day each week can't be compared.
- Capture the call as well as the pipeline: each rep's commit and best case, and each manager's adjustment. The pipeline alone can't measure forecast accuracy.
- Never edit a snapshot. Corrections go in the next one.
- Compare the call with the outcome at the end of the period. Accuracy by rep and by manager is the number the forecast review needs.
- Report what moved between two weeks deal by deal: pushed, pulled in, shrunk, grown, lost. That is the conversation the review should be having.
Who this is for
You run revenue operations or sales finance. The weekly forecast lives in spreadsheets copied from the CRM, nobody can rebuild last month's number, and every board meeting starts with how the forecast changed.
How it works in practice
What happens every week between the forecast call closing and the forecast review starting.
- 1
The forecast call closes
Reps and managers have submitted commit and best case in the CRM or the forecasting tool.
- 2
The snapshot is taken
Every open opportunity with amount, stage, close date, owner and forecast category, plus every submitted call, stamped with the week.
- 3
It is written once to the warehouse
Added alongside every earlier snapshot. Nothing already stored is changed.
- 4
The week is compared with the last
Each deal is matched to its previous snapshot: close date pushed or pulled in, amount up or down, stage moved, lost.
- 5
Slipped deals are flagged to the owner
A deal that has pushed its close date twice in a quarter goes to the rep and the manager before the review.
- 6
Calls are scored at period end
Each rep's and manager's commit is compared with what closed, so accuracy is measured rather than remembered.
What the sync is made of
Four parts. The second is what makes the other three trustworthy.
A timed snapshot
Pipeline and forecast call captured together, at the same point every week, so every week compares with every other.
Snapshots nobody edits
Written once, kept as they were. A corrected history can't tell you how good last quarter's forecast was.
A deal-by-deal comparison
What changed on each deal since last week, grouped into pushed, pulled in, shrunk, grown and lost.
A forecast accuracy score
Commit against closed for each rep and each manager, every period, which shows whose call to trust.
The Tray Headless prompts
Paste these into Claude Code or Codex with the Tray Headless plugin installed. Each stage runs on its own. The systems named in them are the worked example rather than a requirement, and every prompt says so.
Once per project, run
/tray-workflows:set-workspace
to pick the workspace these build in. Point it at a sandbox first.
- 1
Set up, then find where the call lives
A snapshot of the pipeline without the call can't measure forecast accuracy.
Headless skills
build-workflowUse build-workflow. The systems in play are Salesforce for the pipeline and the forecast call, Snowflake for the snapshots and Looker for the review, or whatever we run in those seats. I need Opportunity with amount, stage, close date, owner and forecast category, and wherever submitted forecasts live: Salesforce forecasts, a custom object, or a forecasting tool. Tell me when the weekly call is due, so the snapshot runs after it closes and before the review.
- 2
Take the snapshot and write it once
The rule the whole history depends on.
Headless skills
build-workflowtray-gotchasUse build-workflow, then tray-gotchas. Every Monday at 18:00, read every open opportunity and every submitted forecast call. Write them to Snowflake with the snapshot date on every row. Only ever add rows. Never update or delete a row from an earlier week. If the run fails halfway, delete only this week's partial rows and run it again, so a snapshot is either complete or absent. Count the rows against the open opportunities in Salesforce at the time, and alert in Slack if they don't match.
- 3
Compare each deal with last week
The view the forecast review is missing.
For each opportunity, compare this week's snapshot with last week's and label the change: pushed close date moved out of the period pulled in close date moved into the period grown amount up shrunk amount down lost closed lost since last week new not in last week's snapshot Total each label by team, and list the five largest changes by value with the owner.
Keep the labels plain. The review should be able to read the change list out loud.
- 4
Flag slips before the review
A slipped deal is a question for the rep, not a surprise for the board.
Any deal that has pushed its close date twice in the same quarter, or lost more than 20% of its amount since the start of the quarter, goes to the owner and their manager in Slack before the forecast review. One message per person, their deals only, with the change history. Never change the deal in Salesforce. The snapshot reports, the rep decides.
- 5
Score the call at period end
Forecast accuracy measured, by person, every period.
At the end of each period, compare each rep's and each manager's commit from every weekly snapshot with what actually closed. Report accuracy by person and by week of the quarter, so we can see when the call becomes reliable, and publish it to Looker beside the current forecast.
- 6
Prove it works, then hand it to RevOps
Because the review changes shape more often than the data does.
Run the per-step checks and the whole-workflow audit, and run the snapshot twice in a test schema to confirm a rerun never changes an earlier week. Then open the workflow in Tray Build so revenue operations can change the snapshot time, the slip thresholds and the change labels in the visual canvas.
What it connects to
The sync reads the pipeline and the call, keeps the history and puts the change where the review looks.
Salesforce
Read open opportunities and submitted forecast calls at the same time each week. Never write to a deal.
Reads
Snowflake
Store every weekly snapshot, added and never edited, and run the week-on-week comparison.
Writes
Looker
Show what moved this week and forecast accuracy by person, beside the current forecast.
Writes
Slack
Tell owners and managers about slipped deals before the review, and alert RevOps if a snapshot is incomplete.
Writes
Same build, other stacks
The design does not change if you run something else in one of these seats. The same prompts build it against Microsoft Dynamics 365, Databricks, Microsoft Teams, Power BI, HubSpot or AWS Redshift.
Connections in this build
Field mapping, templates and common problems for each pairing: Google BigQuery + Salesforce, Google BigQuery + Snowflake, Looker + Salesforce and Google BigQuery + Looker.
Named systems are the ones most teams run, not the only ones that work. Each is an authentication in your Tray workspace, referenced by name, so the workflow never holds a credential. Where we have a connector page, the name links to it.
Running it in production
The history is only worth keeping if every week of it can be trusted.
It runs on the platform, on a schedule
The weekly snapshot, comparison and alerts run on the same engine, with a record of every run.
A snapshot is complete or absent
Row counts are checked against the CRM, and a partial run is removed and rerun, so no week is half there.
It reads the CRM and writes nothing back
Read access to opportunities and forecasts only. A forecast tool that edits deals is one nobody defends.
Credentials are managed, never written into the build
The warehouse account can add rows to the snapshot tables and nothing else.
RevOps owns the rules
Snapshot timing, slip thresholds and change labels open in Tray Build, owned by the team that runs the review.
Questions people ask
Why not use the CRM's field history?
Field history tracks a limited number of fields and is kept for a limited time, and it can't show the whole pipeline as it stood on a given Monday. A snapshot can.
How is this different from a CRM to warehouse sync?
A CRM to warehouse sync keeps a current copy of the CRM. A forecast snapshot keeps every past week as it was, which is what forecast accuracy and slip reporting need. Most teams run both.
How often should snapshots run?
Weekly, after the forecast call is due and before the review. Some teams add a daily snapshot in the last two weeks of the quarter.
Should the sync update deals that have slipped?
No. It flags the deal to the owner and the manager. Changing a close date or amount is the rep's call.
Related guides
Data operations
How to build a CRM to warehouse sync
Capture history instead of current state, handle deletes and field changes, land raw then model, and prove the row counts. The Headless prompts that build it.
Revenue operations
How to build pipeline hygiene automation
Detect the staleness that matters, nudge the owner rather than the report, escalate on the deals that count, and measure whether it worked. The prompts that build it.
Revenue operations
How to build deal desk approvals
Route each discount and non-standard term to the right approver, decide in Slack with the deal in view, lock the quote to what was approved, and keep the record. The prompts.
Revenue operations
How to build a territory and quota sync
Apply a plan on its effective date, keep in-flight deals with their owner, and make coverage visible before anybody signs off. The prompts that build it.
Last reviewed October 2026.