A job change signal fires when someone in your enriched contacts starts a new role. It is the highest-converting trigger in B2B because it carries a relationship rather than a coincidence: a person who already knows your product now holds budget somewhere new. It is also the signal where coverage claims most often outrun reality.
What it actually predicts
Transferred trust. The two most expensive parts of a sales cycle are convincing someone the problem is real and convincing them you can be trusted with it. A champion who has already been through both arrives having done that work.
A change mandate. People hired into a new role are expected to change something, and the window in which changing things is welcome is short. New executives buy in their first two quarters at a rate they never repeat.
Budget authority that moved. Promotions are the quieter half of this. Someone who could recommend last year can approve this year, and nothing about their employer changed.
What it does not predict
Market-wide leadership movement. This is the constraint that matters and it should be stated before anything else: Signl derives person-level signals from contacts your account has already enriched. It is a lens on your own contact history, not a feed of every VP of Sales appointment in your market. A new account sees nothing here, and that is expected rather than broken.
It also does not predict that the move was voluntary, that the new employer is a fit, or that your champion has any authority yet. People arrive into roles with no budget for a quarter.
And a promotion inside the same company is not a fresh evaluation. The incumbent stack came with the chair.
Freshness and where the data comes from
These signals are derived, not fetched. When enrich_lead returns a contact, the enrichment record includes employment history: organisation, title, start and end dates. Signl reads that history and writes redacted person-level signals from it at no extra cost and with no additional provider call.
The windows are fixed and worth knowing:
- A role starting within the last 120 days counts as a job change.
- Tenure milestones fire at 12, 24 and 36 months, with a 30-day grace either side.
- Promotions are a title change inside the same organisation.
Because the derivation runs at enrichment time, freshness is bounded by when you last enriched someone. refresh_person_signals exists for the case where you want a current read on one specific person, and it is a different thing: explicitly paid, Unlimited-plan only, rate-limited by a monthly cap shared across all accounts, and only available where the deployment has enabled it. It is not something to call speculatively across a list.
How to score it
| Dimension | What to look at |
|---|---|
| Relationship depth | Did they buy, evaluate, or merely receive an email? These are not the same |
| Days in seat | Under 120 days is the window. Under 30 is often too early to have budget |
| Seniority change | Sideways move, or a step up into approval authority? |
| Account fit | Does the new employer match your ICP at all? A great champion at a bad-fit account is still a bad-fit account |
The last row catches the most common mistake. Excitement about a known name overrides the ICP filter, and the deal dies on fit six weeks later.
Which ICPs it matters for
Strongest where the buyer has real discretion and the product is chosen rather than mandated: sales tooling, marketing tooling, developer tooling, agencies and services.
Weakest where purchasing is centralised, procurement-led, or on a fixed renewal cycle, because an individual arriving with enthusiasm cannot move the date.
The outreach angle it justifies
The only signal here where the personal note is the correct move, because you are not a stranger.
Reference the shared history plainly, do not congratulate at length, and do not pitch the product they already know. The useful sentence is about what you expect them to be dealing with in the first ninety days of the new role, offered as recognition rather than as a hook.
Also worth saying: their old company is now a lead too. Someone replaced them, and that person is inheriting decisions they did not make.
How to query it in Signl
Person-level signals come back through the same free search, and reading them never triggers a paid fetch:
Show me people in my enriched contacts who changed jobs
in the last six months and hold a VP of Sales title.
Behind that, your agent calls:
search_signals({
signalType: "job_change",
personTitleContains: "VP of Sales",
maxMonthsInRole: 6
})
personTitleContains and maxMonthsInRole read cached signals only. They are free on every plan.
Related reading
How to score a buying signal covers weighing relationship depth against account fit, which is the trade-off this signal forces more than any other.