Your GTM belongs in gitRegister
Blog

Track Job Changes of Your Contacts (Moved, Left or Still There)

16 Oct
5min read

To track job changes of your go-to-market contacts, run Cargo’s waterfall.detectJobChange action as one batch over the contacts you care about. Each contact comes back moved, left, no_change or unknown, and movers come back with their new company, domain and title. It costs 3 credits a contact.

This is the track-job-changes skill: it watches people you already know, such as last year’s champions or the users of a churned account. To watch a whole market for anyone who just took a role you sell to, use the deployed new-hire-detection cookbook instead.

Why a champion who moved matters #

A contact who bought from you and then changed companies is the warmest outbound there is: they know the product, and their new team probably does not have it yet. A champion who left is the opposite signal for the account they left: the renewal just lost its sponsor. Both are worth acting on for months, which is why job changes rank among the canonical signals in how long a buying signal is worth.

What it costs, from the code #

waterfall.detectJobChange has a fixed price of 3 credits per contact checked, whatever the answer. A no_change costs the same as a moved. That fact sets the whole method: run it on a curated segment, never the whole database. A new account’s 100 free credits check 33 contacts.

Run it #

1. Install and sign in

shellscript
npm install -g @cargo-ai/cli
cargo-ai login --email you@company.com                 # sends a code
cargo-ai login --email you@company.com --code 123456   # creates the account on first use

No browser step, so a coding agent can run this itself.

2. Pick the segment

Choose the contacts whose move would change what you do: champions on closed-won deals, power users, the buying committee of open renewals. Thirty champions is 90 credits. Fifty thousand CRM contacts is 150,000.

3. Pilot on 5 contacts

shellscript
cargo-ai orchestration action execute-batch \
  --action '{"kind":"connector","integrationSlug":"waterfall","actionSlug":"detectJobChange"}' \
  --records '[{"contact_linkedin":"https://www.linkedin.com/in/ada-lovelace","company_domain":"example.com","professional_email":"ada@example.com"}]' \
  --limit 5 --wait-until-finished

--limit 5 submits only the first five records, so you can read the output and the cost before the full run. Drop it to run every row, then fetch the results with cargo-ai orchestration batch download --uuid <batch uuid>.

Inputs

FieldWhat it is
contact_linkedinThe contact’s LinkedIn URL. Highest coverage with company_domain
company_domainThe company you last knew them at
professional_emailTheir work email at that company
personal_emailAlternative to the work email
company_linkedinThe company’s LinkedIn URL

Pass the LinkedIn URL whenever your CRM has it. Without it, give at least an email.

What comes back #

FieldMeaning
job_change_statusmoved, left, no_change or unknown
person.company_name, company_domainWhere they are now
person.title, seniority, departmentTheir current role
person.linkedin_urlTheir profile
person.experiences[]Each role with company_name, start_date, end_date, is_current

left means they are no longer at the company you gave. unknown means the provider could not tell: add the LinkedIn URL if it was missing before re-running the contact, since every re-run bills again.

Run it on a schedule without overspending #

Every scheduled run re-bills every contact. Monthly on a curated segment beats weekly on everything. To act on a mover, write the new company and title back to your CRM and route it to the owner of the new account; sync enriched accounts to HubSpot covers the write.

Frequently asked questions #

Related: Track funding rounds and find the companies that just raised, Signal-based selling.

AurelienOct 16, 2026

Give your agents a runtime

Bring the agents you have.Start free, deploy in one command.