Automation · Customer success
How to build integration adoption tracking
Everyone agrees customers who integrate stay longer, and nobody can show it, because nobody can say which customers have an integration running today. How to track adoption per customer, the prompts that build it, and how to put the answer where account teams look.
Built with Tray Headless
- System Customer instances
- Step Turned on and running?
- Step Join to the account
- Step Compare retention
- System Salesforce
Every customer's instances are counted daily, active or not, joined to their account, and written to the CRM and the warehouse.
The short answer
What is integration adoption tracking?
Integration adoption tracking has four parts: a daily count of every customer's integrations, split into set up, turned on, and actually running (a successful run in the last week); each one joined to the customer's account using the same id your product uses; the result written to the CRM so account teams see it on the account; and a regular comparison of retention and expansion between customers who integrate and customers who don't. The part most teams get wrong is counting set-up integrations as adopted. An integration that was turned on in March and has failed since April is a risk, and it is counted as a win.
Stage 7 of 7: Track adoption and retention. Part of Embedded integration, end to end : every stage, the systems it runs on and the guide that builds it.
What matters here
- Count running, not set up. An integration that stopped working is a risk on the account, not adoption.
- Join by your own customer id. Matching by company name breaks on the first rename.
- Put it on the account in the CRM. Account teams won't open another dashboard.
- Compare retention for customers who integrate and customers who don't, every quarter, from your own data.
- Flag a running integration that stops before renewal. It is one of the clearest early signs of a customer leaving.
Who this is for
You run product, partnerships or customer success at a software company. You believe customers with integrations stay longer, and you can't show which customers have one running.
How it works in practice
From customers' instances to a number account teams use.
- 1
Every customer's instances are read daily
Which integration, when it was set up, whether it is turned on, and when it last ran successfully.
- 2
Each is classed
Set up, turned on, or running: a successful run in the last seven days.
- 3
Each is joined to the customer's account
By your own customer id, which is the id the integration user was created with.
- 4
The CRM account is updated
Integrations running, integrations stopped, and the date each last ran.
- 5
The warehouse keeps the history
So retention and expansion can be compared for customers who integrate and customers who don't.
- 6
A stopped integration before renewal is flagged
To the account owner, with the integration and the date it last ran.
What adoption tracking is made of
Four parts. The first is where most adoption numbers go wrong.
Running, not set up
Three states per integration per customer, with running defined as a successful run in the last seven days.
One customer id
The same id in your product, in Tray and in the CRM, set when the customer's integration user is created.
Numbers on the account
Written to the CRM account record, where account teams already look, rather than a separate report.
A retention comparison
Every quarter, from your own history: renewal and expansion rates for customers with a running integration against those without.
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
Read every customer's integrations
Before counting, see what the records hold.
Headless skills
build-workflowUse build-workflow. The systems in play are Tray Embedded's solution instances, Salesforce and Snowflake, or whatever we run in those seats. List every solution instance: which solution, which end user, when created, whether it is turned on, and when it last ran successfully. Show me the external user id on a few, so we can check it is our own customer id. If some customers' integration users were created with an email instead of our customer id, list them. They need fixing before any of this is trustworthy.
- 2
Class each one: set up, on, or running
An integration that stopped is a risk, not adoption.
For every instance, class it: Set up: created, never turned on On: turned on, no successful run in the last seven days Running: a successful run in the last seven days For scheduled integrations that run less often than weekly, use their own schedule plus a day as the window. Keep the date of the last successful run on every record.
- 3
Write it to the account
Account teams won't open another dashboard.
Headless skills
build-workflowtray-gotchasUse build-workflow and tray-gotchas. Once a day, update each Salesforce account with: integrations running, integrations stopped, the names of each, and the date each last ran. Write only when something changed, so the account history shows real changes rather than a daily touch. Land every daily snapshot in Snowflake as well, one row per customer per integration per day.
- 4
Flag stopped integrations before renewal
One of the clearest early signs of a customer leaving.
When an integration moves from running to on, and the account renews in the next two quarters, tell the account owner in Slack: which integration, when it last ran, and the most likely reason from the last failure. Every quarter, compare renewal and expansion rates for customers with at least one running integration against customers with none, and post the result to the product channel.
Run the comparison on your own customers. A figure from your own data is the one your board will believe.
What it connects to
The instances say what is running. The CRM is where it gets used.
Salesforce
Show integrations running and stopped on each account, and read renewal dates to flag risk.
Reads and writes
Snowflake
Keep the daily history, so retention for customers who integrate can be compared with those who don't.
Writes
Gainsight
Where customer health is scored there, add integrations running as one of the signals.
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.
Connections in this build
Field mapping, templates and common problems for each pairing: Salesforce + Slack, Gainsight + Salesforce and Gainsight + Slack.
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 turns a belief about retention into a number you can check.
It runs daily
Counts are current every morning, so a stopped integration is seen within a day.
Running means running
A successful run in the last week, never just a record that it was set up.
One id across systems
Your customer id joins the instance to the account, so a rename or merge doesn't break the count.
The history is kept
Daily snapshots in the warehouse, so the retention comparison can be rerun on any period.
Questions people ask
What counts as an adopted integration?
One that is running: a successful run in the last week, or within its own schedule. Set up and turned on are steps toward it.
Do customers who integrate really churn less?
Podium found customers who integrate are 60% less likely to churn and 70% more likely to be classified as active. Track your own, because your board will want your number.
Where should adoption numbers live?
On the account in the CRM, where account teams already look, with the history in the warehouse for analysis.
How is this different from product usage tracking?
Product usage covers everything customers do in your product. This counts one thing, integrations running, because it is one of the clearest signals of whether a customer stays.
Related guides
Platform engineering
How to build integration request tracking
Collect every customer request for an integration from sales, support and product feedback, count it once per account, and weigh it by revenue. The prompts.
Customer success
How to build a product usage to CRM sync
Send the three signals that change a conversation, aggregated and labelled, without turning the CRM into an analytics tool. The Headless prompts that build it.
Customer success
How to build customer health signals
Weight the signals that predict churn, keep the categories visible instead of one number, and back-test before anybody trusts it. The prompts that build it.
Last reviewed October 2026.