Automation · Platform engineering
How to build integration request tracking
The integration roadmap gets set by whichever deal is loudest this quarter, while the one three hundred customers asked for waits. The way to collect every request in one place, the prompts that build it, and what it takes to trust the list.
Built with Tray Headless
- System Salesforce
- Step Match to the app
- Step Count once per account
- Step Weigh by revenue
- System Productboard
Requests from deals, tickets and feedback land in one list, counted once per account and weighted by the revenue behind them.
The short answer
What is integration request tracking?
Integration request tracking has four parts: collecting every request from the places customers actually ask (lost deals, support tickets, feedback tools, calls), matching each one to a single named app so twelve spellings of one tool count as one, counting each account once however many times it asks, and weighing the result by the revenue behind it. The part most teams skip is the matching. Without it the list shows forty small requests instead of one big one, and the roadmap follows whoever asked last.
Stage 1 of 7: Choose what to build. Part of Embedded integration, end to end : every stage, the systems it runs on and the guide that builds it.
What matters here
- Collect requests where customers already make them. A separate form only catches the customers who find the form.
- Match every request to one named app. Twelve spellings of one tool are one request.
- Count an account once, however many people at it ask. Otherwise the noisiest customer sets the roadmap.
- Weigh by revenue and by lost deals, side by side. They point at different integrations, and both matter.
- Tell the customer when it ships. A request that disappears into a list teaches customers to stop asking.
Who this is for
You run product or partnerships at a software company. Integration requests arrive in deal notes, support tickets and feature-request boards, and the roadmap is decided in a meeting from memory.
How it works in practice
What happens between a customer asking for an integration and that ask showing up on the roadmap.
- 1
A request is captured where it was made
A lost-deal reason in the CRM, a ticket tag in support, a note in the feedback tool or a mention on a recorded call.
- 2
It is matched to one named app
Against your list of apps, so "MS Dynamics", "Dynamics CRM" and "D365" all count toward the same integration.
- 3
It is tied to an account
So five people at one customer asking is one account asking, with five votes of evidence behind it.
- 4
The revenue behind it is added
Annual value of the customers asking, and the value of deals lost or stalled where the integration was the reason given.
- 5
Product sees a ranked list
Updated daily, with the evidence one click away instead of in somebody's inbox.
- 6
Customers hear when it ships
Everyone who asked gets told, through their account owner or directly.
What request tracking is made of
Four parts. The second is the one that makes the list trustworthy.
Capture at the source
Lost-deal reasons, support tags, feedback notes and call mentions, read where they already are rather than asking anyone to fill in another form.
One name per app
A list of apps with their common misspellings and old names, and a person to check anything the matching can't place.
One vote per account
Requests tied to the account, so the count is customers asking, with every individual request kept as evidence.
Revenue on every row
Customer value and lost-deal value side by side, because one measures retention and the other measures new business.
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
Find where requests already live
Before building, see what you can read.
Headless skills
build-workflowUse build-workflow. The systems in play are Salesforce, Zendesk, Productboard, Gong and Slack, or whatever we run in those seats. Before you plan anything, tell me which of them are already authenticated in the workspace. I want every place a customer asks for an integration today: Closed-lost and stalled opportunities with a reason or note naming an app Support tickets tagged as an integration request, or mentioning one Notes in the feedback tool linked to an integration Call transcripts where a prospect asks "do you integrate with" Show me ten real examples from each before deciding how to read them.
- 2
Match every request to one app
Twelve spellings of one tool are one request.
Headless skills
build-workflowtray-gotchasUse build-workflow and tray-gotchas. Keep a table of apps: the name we use, its common alternatives and old names, and whether we already have an integration for it. For each new request, match the text to one app in the table. Where the match is unclear, or names an app not in the table, send it to a person in Slack with the original text, and add their answer to the table so the same text matches next time. Never guess between two apps. A request filed against the wrong app is worse than one waiting for a person.
- 3
Count accounts, not mentions
So the noisiest customer doesn't set the roadmap.
Tie every request to an account in Salesforce, by the opportunity, the ticket's organisation, or the contact's email domain. Keep every individual request as evidence, but count each account once per app. Add to each app's row: Customers asking, and their total annual value Open and lost deals where it was the reason given, and their value The most recent request date Whether any asking customer is up for renewal in the next two quarters Rank by whichever of those product chooses, and show both values side by side. They point at different integrations.
- 4
Publish the list and close the loop
A request that vanishes teaches customers to stop asking.
Write the ranked list to Productboard as one record per app, with the linked accounts and evidence, and refresh it daily. When an integration ships, find every account that asked for it and tell each account owner in Slack, with the list of contacts who asked. Mark the request closed on the ticket, the opportunity and the feedback note.
- 5
Check it, then hand the app list to product
Because the matching table is product's call.
Run the per-step checks and the whole-workflow audit before this touches production. Run it once over the last year of requests and compare the top ten with what product believes the top ten are. Then open the same workflow in Tray Build so product operations can edit the app table and the ranking in the visual canvas.
The first run over a year of history is usually the moment the roadmap changes. Plan for that conversation.
What it connects to
Requests arrive in four or five places. The list lives in one.
Salesforce
Read lost and stalled deal reasons, tie requests to accounts, and add customer value and renewal dates.
Reads
Zendesk
Read tickets tagged or worded as integration requests, and close them when the integration ships.
Reads and writes
Productboard
Hold the ranked list, one record per app, with the accounts and evidence linked.
Reads and writes
Slack
Ask a person to place a request the matching can't, and tell account owners when an integration ships.
Reads and 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, Microsoft Teams, Jira, HubSpot, Google Chat or ServiceNow.
Connections in this build
Field mapping, templates and common problems for each pairing: Salesforce + Zendesk, Productboard + Salesforce, Productboard + Zendesk and Gong.io + Salesforce.
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 decides what engineering builds next. It has to be a list people believe.
It runs every day, not before planning
The list is current whenever someone opens it, so planning starts from evidence rather than from a scramble to gather it.
Every count can be opened
Click an app and see each account, each request and where it came from. A number nobody can check is a number nobody uses.
Credentials stay in the workspace
Reading call transcripts and tickets needs broad access. Each is a separate authentication in your workspace, scoped to read.
Product owns the app table
The names, alternatives and ranking open in Tray Build, so product operations can fix a match without a ticket.
Questions people ask
Why not just use a request form?
Because most customers never find it. They mention the integration to their account manager, in a ticket or on a call. Read those places and the form becomes one source among several.
Should we rank by number of customers or by revenue?
Show both. Customer value tells you what keeps existing customers. Lost-deal value tells you what wins new ones. They often point at different integrations.
How do we handle requests for apps we already integrate with?
Keep them, and flag them. A request for an integration you already have usually means the customer can't find it or it doesn't do what they need, and both are worth knowing.
Can product edit the app list without engineering?
Yes. The app table and the ranking open in Tray Build, so a new app or a new spelling is a table edit.
Related guides
Platform engineering
How to build one integration for every customer
Build a customer-facing integration once, with every per-customer choice pulled out as a setting, so a fix ships to every customer at the same time. The prompts.
Customer success
How to build integration adoption tracking
See which customers turned on which integrations, whether they still run, and how retention differs for customers who integrate, with the numbers in the CRM. The prompts.
Revenue operations
How to build a conversation intelligence to CRM sync
Write the few fields a rep will act on, keep every claim linked to its moment in the call, and never let a model set a close date. The prompts that build it.
Last reviewed October 2026.