Skip to content

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

  1. System Salesforce
  2. Step Freeze pipeline and call
  3. System Snowflake
  4. Step Compare week on week
  5. System Looker
Also Flag slipped deals

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

    The forecast call closes

    Reps and managers have submitted commit and best case in the CRM or the forecasting tool.

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

    It is written once to the warehouse

    Added alongside every earlier snapshot. Nothing already stored is changed.

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

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

    Take the snapshot and write it once

    The rule the whole history depends on.

    Headless skills build-workflow tray-gotchas

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

Google BigQuery

The same job as Snowflake, if that is your warehouse.

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.

Last reviewed October 2026.