Skip to main content
Recipe lemlist Trigger sequences

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

Peter Cools · Updated on · 4 min read · View as Markdown

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) Setup time : 15 min

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. Step 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

    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. Step 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. Step 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. Step 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

    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. Step 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.

{
  "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 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): 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

Try it on your own market

Create an account: 100 free credits to test, no credit card.