Skip to content

Integration  ·  Customer success

How to build a support history to CRM sync

An account manager walks into a renewal call and learns about the three-week outage from the customer. Here is how support history reaches the account team, the prompts that build it, and what running it takes.

Built with Tray Headless

  1. System Zendesk
  2. Step Match to the account
  3. Step Summarise per account
  4. System Salesforce
Also Slack

Tickets stay in the help desk. Only a per-account summary and a link back cross into the CRM.

The short answer

What is a support history to CRM sync?

A support history to CRM sync writes a short summary of each account's tickets to the CRM account record: how many are open, the most serious one, the oldest one, recent escalations and how that compares with last quarter. Each help desk organisation is tied to its CRM account by an id, never by name, and the tickets themselves stay in the help desk with a link back. The mistake that costs most is copying every ticket into the CRM, which buries the three facts an account manager needs under hundreds of rows nobody reads.

Stage 4 of 7: Add support history. Part of Customer 360, end to end : every stage, the systems it runs on and the guide that builds it.

What matters here

  • Summarise, don't copy. The account team needs the state of support for the account, not every ticket.
  • Match on an id, not a name. Name matching fails on exactly the largest customers, which have several entities and several spellings.
  • Show the trend. Five open tickets is normal for one customer and a crisis for another.
  • Escalations go to the account owner as they happen, not in a weekly report.
  • Link back to the help desk. The CRM shows the summary; the detail lives where support works.

Who this is for

You run customer success operations, support operations or revenue operations. Support works in the help desk, the account team works in the CRM, and neither can see what the other knows about the same customer.

How it works in practice

What happens between a customer opening a ticket and the account team knowing about it.

  1. 1

    A ticket is opened or changes

    New, escalated, solved or reopened. Each change is a reason to refresh the account's summary.

  2. 2

    The ticket is tied to a CRM account

    Through the help desk organisation's stored CRM account id. A ticket with no match goes to a review list, not to a guess.

  3. 3

    The summary is rebuilt for that account

    Open tickets, the highest priority open, the oldest open, escalations in the last 30 days, and the count against the same period last quarter.

  4. 4

    The summary is written to the account

    A handful of read-only fields and a link to the account's tickets in the help desk.

  5. 5

    Escalations reach the owner

    An urgent ticket or an escalation on an account with a renewal close goes straight to the account owner and the customer success manager.

  6. 6

    A nightly check catches anything missed

    Every account's summary is rebuilt from the help desk once a day, so a missed update corrects itself by morning.

What the sync is made of

Four parts. The first decides whether anyone trusts the rest.

Account matching

Every help desk organisation carries its CRM account id. Without it, tickets land on the wrong account or on none, and the summary is wrong for the customers that matter most.

A per-account summary

A few fields an account manager can read at a glance, instead of a related list of every ticket the customer ever opened.

The trend against last quarter

Volume and escalations compared with the same period before, because the change is what tells you something is wrong.

Escalation alerts

The few tickets worth interrupting the account owner for, sent to that person with the account and the ticket in the message.

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 decide what the account team sees

    Choosing what not to send is most of this build.

    Headless skills build-workflow

    Use build-workflow. The systems in play are Zendesk and Salesforce,
    or whatever we run in those seats.
    
    Before anything is built, help me choose the summary. I want at most
    six fields on the account, and each has to pass one test: would an
    account manager do something differently if it changed.
    
    My starting set: open tickets, the highest priority open ticket, days
    the oldest open ticket has been open, escalations in the last 30 days,
    tickets this quarter against the same period last quarter, and a link
    to the account's tickets in the help desk.
    
    Tell me which of those our help desk data can support reliably.
  2. 2

    Tie every ticket to the right account

    A summary on the wrong account is worse than none.

    Headless skills build-workflow

    Use build-workflow. Store the Salesforce account id on each Zendesk
    organisation, and match tickets to accounts through that id only.
    
    Never match on company name or email domain alone. Large customers
    have several entities, subsidiaries and spellings, and a name match
    puts their tickets on the wrong account.
    
    For organisations with no account id, try the email domain against
    account websites once, and put every suggested match on a review list
    for support operations to confirm. Nothing is written to the account
    until a person confirms the match.
    
    Handle parent and child accounts: roll the summary up to the parent
    for the relationship view, and keep the child figures, because that is
    where the problem usually is.
  3. 3

    Build the summary, not a copy of the tickets

    The CRM shows the state of support. The help desk keeps the detail.

    Rebuild the account's summary whenever one of its tickets is created,
    escalated, solved or reopened. Rebuild it from the help desk each time,
    rather than adding and subtracting, so a missed update can't leave a
    count wrong for good.
    
    Write the summary to read-only fields on the account, with the time it
    was last updated. Set field level security so nobody edits them in the
    CRM: a hand-corrected ticket count disagrees with the help desk and
    gets believed.
    
    Do not create a CRM record per ticket. Add the link to the account's
    tickets in Zendesk instead.
  4. 4

    Send escalations to the account owner

    The account team should hear about a serious problem from support before the customer tells them.

    Headless skills tray-gotchas

    Use tray-gotchas, then alert the account owner and the customer
    success manager directly when:
    
      An urgent ticket is opened on an account above a value we set
      A ticket is escalated on an account with a renewal inside 90 days
      Open tickets for an account double against last quarter
    
    Put the account, the ticket subject, its priority and a link to the
    ticket in the message. Send it once per ticket, even if the ticket is
    updated several times, so the owner is not messaged on every reply.
    
    Never alert on volume alone for accounts that always run high. A
    customer with a large support team opens a lot of tickets, and alerts
    on that get muted.

    The renewal case is the one that pays for the build: an escalation in the last quarter before a renewal is the conversation the account manager most needs to have early.

  5. 5

    Keep it honest about gaps and freshness

    A stale summary is worse than an empty one, because someone acts on it.

    Every night, rebuild the summary for every account from the help desk
    and compare it with what is on the account. Fix any difference and
    record it, so a missed update is visible.
    
    Alert if the sync has not completed within its expected window.
    
    Report weekly: the share of tickets matched to an account, the number
    waiting on the review list, and escalations sent against escalations
    the account team acted on.
  6. 6

    Prove it works, then hand the thresholds to customer success

    Which tickets are worth an interruption is a judgement about your customers.

    Run the per-step checks and the whole-workflow audit before this
    touches production.
    
    Then open the same workflow in Tray Build so customer success
    operations can change the alert thresholds, the account value cut-off
    and the renewal window in the visual canvas. They change as the
    business does, and they belong to the team that acts on them.

What it connects to

Tickets are read in one place, summarised, and only the summary reaches the CRM.

Zendesk

Read tickets, organisations and escalations. Store the CRM account id on each organisation.

Reads and writes

Intercom

Read conversations and their companies where support runs in Intercom instead of, or as well as, Zendesk.

Reads

Salesforce

Write the per-account summary to read-only fields and a link back to the help desk. Read renewal dates and owners for the alerts.

Reads and writes

Snowflake

Receive the ticket history for longer-range reporting and the health score, so the CRM never has to hold it.

Writes

Slack

Send escalations to the account owner and customer success manager, with the ticket in the message.

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, Jira, HubSpot or Databricks.

Connections in this build

Field mapping, templates and common problems for each pairing: Intercom + Zendesk, Salesforce + Zendesk, Intercom + Salesforce and Slack + Zendesk.

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

Account managers walk into calls on this summary. Matching and freshness matter more than detail.

This runs as infrastructure, not as a script

Ticket updates and the nightly rebuild run on the same engine with retries and logs, so a help desk outage delays the summary rather than corrupting it.

Freshness is visible on the record

The last update time sits beside the summary. A count that silently stopped updating is worse than an empty field.

Credentials live in the workspace, never in the repo

The help desk credential can read every customer conversation you hold. It is read-only where it can be, and lives in your workspace.

Customer success owns the thresholds

Alert rules, value cut-offs and the renewal window open in Tray Build, tuned by the team that acts on them.

The help desk stays the help desk

Ticket detail, replies and attachments never leave it. The CRM gets a summary and a link, which also keeps personal data in fewer places.

Questions people ask

Why not copy every ticket into the CRM?

Because a related list of hundreds of tickets hides the three facts an account manager needs, slows the CRM down and puts customer conversations in a second system. A summary and a link give the team what they need and keep the detail where support works.

How are tickets matched to the right account?

Through the CRM account id stored on each help desk organisation. Suggested matches from email domains go to a review list first, because name and domain matching fail on large customers with several entities.

How current is the summary?

It is rebuilt each time one of the account's tickets changes, usually within a minute, and every account is rebuilt from the help desk each night so a missed update corrects itself.

Which escalations reach the account owner?

The ones you set: typically urgent tickets on large accounts, escalations on accounts close to renewal, and a sharp rise in volume against last quarter. Each goes once per ticket, to the owner and the customer success manager.

Does this work with Intercom or Freshdesk instead of Zendesk?

Yes. The pattern is the same for any help desk: match on a stored account id, summarise per account, write the summary and a link. Only the connector changes.

Further reading

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

Last reviewed October 2026.