# How do you start a lemlist sequence when a prospect changes jobs?

> Source: https://www.rodz.io/en/guides/use-cases/job-changes-to-lemlist/
> Updated on 2026-10-12 · Peter Cools · Recipe · Job changes · lemlist

## Short answer

Connect lemlist to Rodz with your API key, create a Job Changes signal filtered on your personas with email finding on, then pick the lemlist campaign in the signal’s Integrations tab. Every decision-maker who starts a new role is added to the campaign with ready-to-use variables such as {{signalName}} or {{companyName}}. A lead costs 2 credits, plus 0.5 credit per email found.

## Key facts

- A job change costs **2 credits** per lead, plus 0.5 credit per email found, charged on success only.
- A new role is delivered up to **180 days** after its start date (`maxJobAgeDays`, minimum 180).
- Rodz identifies **400,000+ signals a month** (July to September 2026 average).
- A lead without an email is added with its LinkedIn URL: the LinkedIn steps of the sequence work, the email steps do not.

Cost: 2 credits per lead (+0.5 credit per email found)

## Before you start

- A Rodz account with credits (the test account includes 100).
- A lemlist account and its API key (in your lemlist account’s integration settings).
- A lemlist campaign with at least one step: Rodz refuses to push into an empty campaign.
- The roles you target and your ICP: size, industry, country.

## Steps

### 1. Connect lemlist to Rodz

In the Rodz dashboard, open **Integrations**, choose **lemlist** and paste your API key. Rodz checks it with lemlist before storing it, encrypted.

Through the API, it is `PUT /api/v1/integrations/lemlist`.

`Connect through the API`

```bash
curl -X PUT "https://api.rodz.io/api/v1/integrations/lemlist" \
  -H "Authorization: Bearer $RODZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "YOUR_LEMLIST_KEY", "label": "main lemlist"}'
```

### 2. Prepare the lemlist campaign

Create or pick a campaign and write the first step with Rodz variables. The most useful ones for a job change: `{{firstName}}`, `{{title}}`, `{{companyName}}`, `{{signalName}}` and `{{matchedPersona}}`.

Example opener: "Congrats on joining {{companyName}} as {{title}}."

### 3. Create the Job Changes signal

In **My Signals**, click **Activate Signal** and pick **Job Changes** and set the roles to follow, the size and industry of the *new* employer and the person’s location. Tick **Get emails**: without an email, the lead enters the campaign with its LinkedIn URL only and gets the LinkedIn steps only.

In **Basic Settings**, set the daily lead limit and choose **Never accept duplicates** (`duplicateHandling: refuse`).

### 4. Pick the campaign in the signal’s Integrations tab

In the signal’s **Integrations** tab, switch on **lemlist** and select the campaign. Through the API, list the campaigns first with `GET /api/v1/integrations/lemlist/campaigns`, then send the chosen `id` as `campaignId`. With several lemlist accounts connected, add `integrationId`.

`Same setting through the API`

```bash
curl "https://api.rodz.io/api/v1/integrations/lemlist/campaigns" \
  -H "Authorization: Bearer $RODZ_API_KEY"

curl -X PATCH "https://api.rodz.io/api/v1/signals/$SIGNAL_ID" \
  -H "Authorization: Bearer $RODZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"destinations": {"lemlist": {"campaignId": "cam_aBc123XyZ"}}}'
```

### 5. Activate the signal and check the first leads

Set the signal to **Active**. Leads reach the campaign as changes are detected. Check the first ones in lemlist (the campaign’s Leads tab) before you start sending, and read them on the Rodz side with `GET /api/v1/signals/{signal_id}/leads`.

## Example payload

The lead as Rodz delivers it (webhook format, also returned by `GET /api/v1/signals/{signal_id}/leads`). lemlist receives the contact and company as variables.

```json
{
  "signal": {
    "id": "d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8",
    "name": "New CTOs in France",
    "type": "job_changes",
    "last_signal": "Job Change",
    "last_signal_date": "2026-10-09",
    "previous_title": "VP Engineering",
    "previous_company": "Contoso Cloud",
    "previous_company_linkedin_url": "https://www.linkedin.com/company/contoso-cloud-example/",
    "previous_job_started_on": "2021-01",
    "previous_job_ended_on": "2026-08",
    "new_title": "CTO",
    "new_company": "Fabrikam Logistics",
    "new_job_started_on": "09/2026",
    "new_job_start_month": "2026-09",
    "change_type": "company"
  },
  "contact": {
    "lead_id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
    "created_at": "2026-10-09T08:40:00+00:00",
    "first_name": "Julien",
    "last_name": "Martin",
    "email": "julien.martin@fabrikam.example",
    "phone": "",
    "title": "CTO",
    "location": "Nantes, Pays de la Loire, France",
    "country_code": "FR",
    "city": "Nantes",
    "linkedin_profile_url": "https://www.linkedin.com/in/julien-martin-example",
    "sales_navigator_profile_url": "",
    "matched_persona": "CTO"
  },
  "company": {
    "name": "Fabrikam Logistics",
    "website": "https://fabrikam.example",
    "linkedin_url": "https://www.linkedin.com/company/fabrikam-example",
    "industry": "Transportation, Logistics, Supply Chain and Storage",
    "employee_count": 140,
    "employee_range": "51-200",
    "hq_country_code": "FR",
    "hq_city": "Nantes"
  }
}
```

## Rodz → lemlist variable mapping

| Rodz field (payload)                      | lemlist variable                |
| ----------------------------------------- | ------------------------------- |
| `contact.email`                           | `{{email}}`                     |
| `contact.first_name`, `contact.last_name` | `{{firstName}}`, `{{lastName}}` |
| `contact.title`                           | `{{title}}`                     |
| `contact.linkedin_profile_url`            | `{{linkedinUrl}}`               |
| `contact.sales_navigator_profile_url`     | `{{salesNavigatorProfileUrl}}`  |
| `contact.matched_persona`                 | `{{matchedPersona}}`            |
| `company.name`                            | `{{companyName}}`               |
| `company.website`                         | `{{companyWebsite}}`            |
| `company.industry`                        | `{{companyIndustry}}`           |
| `company.employee_range`                  | `{{employeeRange}}`             |
| `signal.name`                             | `{{signalName}}`                |

The previous role and company (`previous_title`, `previous_company`) are in the webhook and API payload, but are not sent as lemlist variables. To use them in a message, go through a webhook and an automation tool (see the [job changes to Clay](/en/guides/use-cases/job-changes-to-clay/) recipe).

## Writing at the right time

A decision-maker who joins a company reviews tools and contracts in their first months. A short sequence works well: a first message that acknowledges the move, a second about a typical first project for the role, a last one that offers a call. Keep `{{signalName}}` out of the sent text: it is an internal name, useful for filtering, not for writing.

To keep a record in the CRM as well, switch on HubSpot on the same signal (see [job changes to HubSpot](/en/guides/use-cases/job-changes-to-hubspot/)): one signal can push to several destinations.

## Troubleshooting

- **Campaign refused**: the campaign has no step, or the lemlist API key was revoked. Fix it in lemlist; later leads flow again.
- **Leads in lemlist without an email**: email finding is off or found nothing; they only get the LinkedIn steps.
- **Empty variables in the message**: an unknown field is sent empty. Set a fallback value in lemlist for `{{title}}` and `{{companyName}}`.

## Frequently asked questions

### Which lemlist variables does Rodz fill?

The base fields: `{{email}}`, `{{firstName}}`, `{{lastName}}`, `{{title}}`, `{{phone}}`, `{{linkedinUrl}}`, `{{companyName}}`, `{{companyWebsite}}`, `{{companyIndustry}}`, `{{employeeRange}}`, plus `{{signalName}}` and `{{matchedPersona}}`. If you turn on the signal’s AI messages, they arrive as variables too.

### What happens to a lead without an email?

Rodz adds it to the campaign with its LinkedIn URL: the LinkedIn steps of the sequence work, the email steps do not. Tick **Get emails** on the signal (0.5 credit per email found, nothing when none is found).

### Why does no lead reach my campaign?

Check three things: the lemlist campaign has at least one step (Rodz refuses an empty campaign), lemlist is switched on in the signal’s Integrations tab, and the signal is Active. With several lemlist accounts connected, the campaign must be tied to the right account (`integrationId`).

### Can the same contact be added twice?

Not if the signal refuses duplicates (`duplicateHandling: refuse`): a person is delivered once. Keep lemlist’s own deduplication on as well.

### Should I write to a new decision-maker right away?

A role is delivered up to 180 days after its start date. Use `new_job_start_month` to adapt the message: a start this month calls for congratulations, a start four months ago for a message about first projects.

## Sources

- [Rodz API reference: integrations, campaigns and signal destinations](https://api.rodz.io/docs)
- [lemlist help center](https://help.lemlist.com/)

## Related guides

- https://www.rodz.io/en/guides/use-cases/job-changes-to-hubspot/
- https://www.rodz.io/en/guides/use-cases/competitor-connections-to-lemlist/
- https://www.rodz.io/en/guides/use-cases/funding-rounds-to-lemlist/
