Skip to content

Integration  ·  Revenue operations

How to build a conversation intelligence to CRM sync

Every call is recorded and analysed, and the CRM still says next step: follow up. Below is the model behind call insight reaching the record, the prompts that build it, and the parts that only bite once it is live.

Built with Tray Headless

  1. System Gong
  2. Step Extract claims
  3. Step Link to timestamp
  4. Step Confirm commercial
  5. System Salesforce
Also Slack

Every extracted claim links back to its timestamp in the call, and nothing commercial is written without a person confirming it.

The short answer

What is a conversation intelligence to CRM sync?

A conversation intelligence sync is four parts: extracting a small number of things a rep would act on rather than everything a model can find, linking every claim back to its moment in the call so it can be checked, writing non-commercial fields automatically while commercial ones wait for a person, and measuring whether the extracted fields changed any behaviour. The mistake that costs most is letting a model write commercial fields. A close date or a competitor set by an inference is a forecast built on something nobody verified.

What matters here

  • Extract what a rep would act on, not everything a model can find. Twenty new fields means nobody reads any of them.
  • Link every claim to its moment in the call. An insight nobody can verify is one nobody should act on.
  • Never let a model set a close date, a competitor or a forecast category. Those are commercial claims and they need a person.
  • Write next steps and attendees automatically. Those are factual, low risk and the ones reps skip.
  • Measure whether an extracted field ever changed a decision. If not, stop writing it.

Who this is for

You run revenue operations. Calls are recorded and analysed, the insight sits in a separate tool, and the CRM record is still whatever the rep typed afterwards.

How it works in practice

What happens between a call ending and the record being worth reading.

  1. 1

    The call is matched to an opportunity and its attendees

    By calendar invite and participant email instead of by guessing from a title.

  2. 2

    A small set of things is extracted

    Next steps agreed, attendees and roles, competitors mentioned, objections raised, and any date committed to.

  3. 3

    Every claim carries a link to its moment

    So anybody reading it can hear the sentence it came from.

  4. 4

    Factual fields are written automatically

    Attendees, next step, call summary. Low risk and the ones reps most often skip.

  5. 5

    Commercial claims are proposed, not written

    Competitor, close date, forecast signal. The rep confirms with one click or corrects.

  6. 6

    Usage is measured per field

    If nobody ever acts on a field, it stops being written.

What the sync is made of

Four parts. The third is the line between useful and dangerous.

A small extraction set

Five or six things a rep would act on. A model can find forty and a record with forty new fields is one nobody reads.

Traceable claims

Each linked to its timestamp in the recording. An insight nobody can verify is an insight nobody should act on.

A commercial gate

Factual fields written automatically, commercial ones proposed for confirmation. A forecast built on inference is a forecast nobody can defend.

Usage measurement

Whether a field ever changed a decision. Fields nobody acts on should be removed rather than accumulated.

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 and choose five things worth extracting

    Choosing what not to extract is most of the design.

    Headless skills build-workflow

    Use build-workflow. The systems in play are Gong and Salesforce, or
    whatever we run in those seats.
    
    Before building, choose at most six things to extract, each passing one
    test: would a rep or a manager behave differently if this field were
    populated.
    
    My starting set: next steps agreed with owners and dates, who was on the
    call and their roles, competitors named, objections raised, and any
    timeline the customer committed to.
    
    Everything else a model can find stays in the conversation tool. A CRM
    record with twenty new AI fields is one where nobody reads any of
    them.
  2. 2

    Match the call to the right opportunity

    A misattributed call is worse than an unattributed one.

    Headless skills build-workflow

    Use build-workflow. Match each call to an opportunity by the calendar
    invite first, then by participant email domain to account, then by the
    rep and timing.
    
    Where several open opportunities exist on one account, do not guess. Ask
    the rep, once, in the channel where they already work.
    
    A call attributed to the wrong opportunity is worse than one attributed
    to none, because it silently pollutes a record somebody is forecasting
    from.
    
    Record the attendees against the opportunity contacts, creating contacts
    where somebody new joined. That alone is worth the integration: the new
    person on the call is frequently the actual decision maker and almost
    never gets added by hand.
  3. 3

    Link every claim to its moment

    An insight nobody can check is one nobody should act on.

    For every extracted claim, store a deep link to the point in the
    recording it came from, with a short verbatim quote.
    
    Write the claim and the evidence together. A field saying the customer
    mentioned a competitor is an assertion; the same field with the sentence
    and a link is something a rep can act on and a manager can check.
    
    Where extraction confidence is low, say so on the field rather than
    writing it flatly. A hedged claim a person can verify is useful. A
    confident wrong claim gets believed and forecast on.
  4. 4

    Gate the commercial fields

    A model should not be setting a forecast.

    Headless skills tray-gotchas

    Use tray-gotchas, then split what gets written:
    
    Written automatically, because they are factual and low risk:
      Attendees and their roles
      Next steps with owners and dates
      A call summary on the timeline
      Whether a call happened at all, which fixes activity data
    
    Proposed and confirmed, never written directly:
      Competitor present
      Close date or timeline
      Forecast category or deal risk
      Budget or authority signals
    
    Send the proposals to the rep in one message with one click to accept or
    correct. A close date set by inference is a forecast nobody can defend in
    a board meeting, and the first time it is wrong the whole integration
    loses credibility.
  5. 5

    Measure whether it changed anything

    Otherwise it accumulates fields nobody reads.

    Headless skills tray-patterns

    For each field, record whether it was subsequently viewed, edited or
    acted on.
    
    Report monthly: acceptance rate on proposed fields, correction rate,
    fields never opened, and deals where an extracted signal preceded a stage
    change.
    
    Delete any field with a low acceptance rate or no usage. An extraction
    nobody trusts is worse than none, because it makes people distrust the
    ones that are good.
    
    Also report calls with no match, trended. A rising number means the
    matching is broken, not that fewer calls happened.
  6. 6

    Validate, then hand the extraction set over

    Because what is worth extracting changes with the sales motion.

    Run the per-step schema checks and the whole-workflow audit before this
    touches production.
    
    Then open the same workflow in Tray Build so revenue operations can
    change which fields are extracted and which are gated in the visual
    canvas. The right set changes as the sales motion does, and a field that
    stopped being useful should be removable in an afternoon.

What it connects to

The conversation happens in one tool and has to reach the record without overwhelming it.

Gong

Read calls, transcripts, participants and the timestamps that make each claim checkable.

Reads

Salesforce

Write attendees, next steps and the summary. Propose the commercial fields rather than setting them.

Reads and writes

Google Calendar

Match the call to the meeting and therefore to the opportunity, which is more reliable than a title.

Reads

Slack

Send the proposed commercial fields to the rep with one click to accept or correct.

Writes

Snowflake

Land extractions and their outcomes, so acceptance and usage per field are measurable.

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, Google BigQuery, Microsoft Teams, HubSpot, Databricks or Google Chat.

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

This writes model output onto records people forecast from. The gate is the whole safety property.

It runs on the platform, not on somebody's machine

Calls end all day across timezones and are processed as they land, with retries and a record per call.

Every claim carries its evidence

A timestamp link and a verbatim quote alongside the field. An extracted insight without evidence is an assertion nobody can check.

Credentials are managed, never written into the build

Call recordings are among the most sensitive material a company holds. Read-only, scoped, and held in your workspace.

Revenue operations own the extraction set

Which fields are extracted and which are gated open in Tray Build, so a field that stopped being useful can be removed in an afternoon.

Commercial fields always need a person

A close date or a competitor set by inference is a forecast nobody can defend, and one wrong one discredits every other field.

Questions people ask

Why extract only five or six things?

Because a model can find forty, and a CRM record with forty new fields is one where nobody reads any of them. The constraint is what makes the useful fields visible.

Why link every claim to a timestamp?

Because an insight nobody can verify is one nobody should act on. A field saying a competitor was mentioned is an assertion; the same field with the sentence and a link is evidence.

Which fields should a model never write?

Close date, competitor, forecast category and deal risk. Those are commercial claims, and a forecast built on inference is one nobody can defend when it is wrong.

What is the most valuable thing it writes?

Attendees. The new person who joined a call is frequently the actual decision maker and is almost never added to the opportunity by hand.

When should a field be removed?

When its acceptance rate is low or nobody ever opens it. An extraction people do not trust is worse than none, because it makes them distrust the fields that are good.

Vibe-coding app guides

Vibe-code an entire app with Helix

This moves the data between systems. It does not give anybody a screen to work in. Build that app in Claude Code, Codex or Cursor, then deploy and run it governed on Tray Helix. Same kind of guide, same kind of prompts.

How to build an account research app (opens helix.tray.ai in a new tab)

Further reading

Background on the same subject, for the case rather than the build.

Last reviewed September 2026.