# When your champion changes jobs.

Your customer contacts from the CRM in one list. ListPlus detects the move, checks whether the new company fits, finds the new work email and hands off – to the account owner if the company is already a customer, otherwise into the sequence.

https://listplus.ai/en/gtm-workflows/champion-job-change-warm-pipeline

## Inputs and connections

Your contacts from closed-won deals (name, company, LinkedIn URL) – as a CSV or from the CRM. A reference list of your customers for the match.

The “Set up” right for the connection, a customer list for the match, a pipeline to the sequencer or the CRM.

## Steps

1. **Create the list from the CRM** (Claude Code · by call). The agent reads the closed-won contacts from the CRM and creates the list “Champions”. The column “Job change” (Yes / Check / No) and the match against the customer list come with it.
2. **Detect the job change** (ListPlus · runs automatically). The current profile is read and compared with the company in the list. “Yes” only when the old position is marked as ended; “Check” on weaker signs. A hard bounce of the old address counts as a hint.
3. **Check the new company** (ListPlus · runs automatically). Is the new company already a customer or in an open deal? Then the contact belongs to the owner – never in a new-logo sequence. If it fits the ICP, the play continues.
4. **Find and verify the new address** (ListPlus · runs automatically). The rule looks up the work email at the new company – with a budget per contact – and verifies it. Only with a deliverable address does the status change to “Warm”.
5. **Approve the rule** (Your team · manual in ListPlus). The rule is created paused. You see the estimate and switch it on. First message in week two at the earliest – and never with internal numbers from the old account.
6. **Hand off** (Sequencer · CRM · runs automatically). “Warm” → the sequence for former champions (never the cold one). Existing customer → a task for the owner in the CRM.

## Expected sample result

In the example: Mia Winter (HelioWorks → Kontur) – new address found and verified → Warm, sequence. Ben Fischer (→ Seeblick, already a customer) → owner notified. Ava Stein: Check, the profile is unclear. Noah Wolf: no move.

## Costs and boundaries

Detection reads the profile: 0.5 credits per contact ($0.02 on Pro). The new address on a detected move: expected 2.1 credits, at most 8 credits – only on a hit. The rule keeps the budget per contact you set.

A move counts only when the old position is marked as ended (“Yes”); “Check” stays with your team. Nothing is handed off without a deliverable new address – the most common reason this play otherwise fails.

## Agent prompt

Create the list “Champions” and add my closed-won contacts from HubSpot (name, company, LinkedIn). Add the column “Job change” (Yes / Check / No) and a match against my list “Customers”. Rules, paused: job change = Yes and new company not a customer → find the work email (budget 10 credits per contact) and verify it. Job change = Yes, new company not a customer and email check valid → status “Warm”, hand to the lemlist pipeline. Job change = Yes and customer → status “Notify owner”. Show me the estimate before I activate the rules.

## Tools

`describe_setup`, `create_list`, `add_records`, `add_column`, `create_trigger`, `update_trigger`, `query_records`

MCP: https://listplus.ai/mcp
REST: https://listplus.ai/a/v1/{action}
API: https://listplus.ai/a

## Sample calls

These calls use fictional IDs. Use the IDs returned by your workspace.

```text
add_column({
  "list_id": "<shared_list_id>",
  "columns": [
    {
      "kind": "job_change",
      "title": "Job change",
      "with_hints": true
    }
  ]
})
create_trigger({
  "list_id": "<shared_list_id>",
  "name": "Move → new email",
  "on": "changed",
  "conditions": {
    "groups": [
      [
        {
          "field": {
            "kind": "jobChange"
          },
          "op": "isAnyOf",
          "values": [
            "changed"
          ]
        },
        {
          "field": {
            "kind": "reference",
            "listId": "<customers_list_id>"
          },
          "op": "isNotIn"
        }
      ]
    ]
  },
  "actions": [
    {
      "kind": "enrich",
      "fields": [
        "email"
      ],
      "budget_per_record": "10"
    }
  ],
  "activate": false
})
create_trigger({
  "list_id": "<shared_list_id>",
  "name": "Valid address → Warm",
  "on": "match",
  "conditions": {
    "groups": [
      [
        {
          "field": {
            "kind": "jobChange"
          },
          "op": "isAnyOf",
          "values": [
            "changed"
          ]
        },
        {
          "field": {
            "kind": "emailCheck"
          },
          "op": "isAnyOf",
          "values": [
            "ok"
          ]
        },
        {
          "field": {
            "kind": "reference",
            "listId": "<customers_list_id>"
          },
          "op": "isNotIn"
        }
      ]
    ]
  },
  "actions": [
    {
      "kind": "status",
      "status": "Warm"
    },
    {
      "kind": "pipeline",
      "pipeline": "lemlist"
    }
  ],
  "activate": false
})
```
