# How do you start a lemlist sequence when a prospect connects with a competitor?

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

## Short answer

Create a Competitor sales team connections signal in Rodz with your competitors’ LinkedIn pages, filter it on your personas and ICP, then pick a lemlist campaign in the signal’s Integrations tab. Every new connection that matches your filters is added to the campaign, with the competitor and the watched person as variables. A lead costs 5 credits, plus 0.5 credit per email found.

## Key facts

- A competitor connection costs **5 credits** per lead, plus 0.5 credit per email found (`getEmails`), charged on success only.
- Only **new** connections are delivered: connections that already exist when the signal starts are not.
- A watched person produces leads only once they have accepted the connection request, which can take **several days**.
- Rodz identifies **400,000+ signals a month** (July to September 2026 average).

Cost: 5 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 (Settings → Integrations in lemlist).
- A lemlist campaign with at least one step: Rodz refuses to feed an empty campaign.
- The LinkedIn company page URLs of your competitors (`https://www.linkedin.com/company/...` format).

## Steps

### 1. Connect lemlist to Rodz

In the Rodz dashboard, open **Integrations**, choose **lemlist** and paste your lemlist API key. The key is checked before it is saved, then encrypted.

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

`Connect lemlist 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": "Sales team"}'
```

### 2. Create the Competitor sales team connections signal

In **My Signals**, click **Activate Signal** and pick the **Competitor sales team connections** signal and paste your competitors’ LinkedIn **company** pages (`linkedinCompanyUrls`), not personal profiles. Rodz finds the people on their sales and business teams and follows their new connections.

If you already know who to follow (a specific rep, an executive), add their profiles to `linkedinProfileUrls`: each lead then tells you which watched person produced it.

### 3. Filter on your personas and ICP

Without filters you get every connection, recruiters and students included. Set:

- the **personas** (`targetPersonas`) and custom titles (`customPersonaTitles`), matched by meaning and level;
- the **size** and **industry** of the prospect’s company;
- the **locations** (the person’s profile location);
- **excluded titles** and **excluded companies**, for example your own customers.

Set the **Daily Lead Limit** in Basic Settings: it is the signal’s spending cap.

### 4. Pick the signal’s lemlist campaign

In the signal’s **Integrations** tab, switch on **lemlist** and choose the campaign. Through the API, list campaigns with `GET /api/v1/integrations/lemlist/campaigns`, then pass the chosen `id` as `campaignId` in a `PATCH` on the signal.

`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. Write the sequence with Rodz variables, then activate

In lemlist, use the variables Rodz fills: `{{firstName}}`, `{{companyName}}`, `{{title}}`, `{{matchedPersona}}`, `{{trackedCompany}}` (the competitor page) and `{{trackedContact}}` (the watched person). Use them to **route** leads or pick the message angle, not to quote them to the prospect.

Then set the signal to **Active**. The first leads arrive once watched people have accepted the connection request and new connections appear.

## Example payload

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

```json
{
  "signal": {
    "id": "d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8",
    "name": "Competitor connections France",
    "type": "competitor_relationship_monitoring",
    "last_signal": "Competitor Relationship Monitoring",
    "last_signal_date": "2026-10-08",
    "tracked_company": "https://www.linkedin.com/company/competitor-example/",
    "tracked_contact": "https://www.linkedin.com/in/julien-moreau-example/"
  },
  "contact": {
    "lead_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "created_at": "2026-10-08T07:12:00+00:00",
    "first_name": "Claire",
    "last_name": "Martin",
    "email": "claire.martin@acme.example",
    "phone": "",
    "title": "Head of Sales",
    "location": "Nantes, Pays de la Loire, France",
    "country_code": "FR",
    "city": "Nantes",
    "linkedin_profile_url": "https://www.linkedin.com/in/claire-martin-example",
    "sales_navigator_profile_url": "",
    "matched_persona": "Sales Director"
  },
  "company": {
    "name": "Acme Logistics",
    "website": "https://acme.example",
    "linkedin_url": "https://www.linkedin.com/company/acme-logistics-example",
    "industry": "Transportation, Logistics, Supply Chain and Storage",
    "employee_count": 140,
    "employee_range": "51-200",
    "hq_country_code": "FR",
    "hq_city": "Nantes"
  }
}
```

## Rodz field → 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.matched_persona`                 | `{{matchedPersona}}`                    |
| `company.name`, `company.website`         | `{{companyName}}`, `{{companyWebsite}}` |
| `company.industry`                        | `{{companyIndustry}}`                   |
| `signal.name`                             | `{{signalName}}`                        |
| `signal.tracked_company`                  | `{{trackedCompany}}`                    |
| `signal.tracked_contact`                  | `{{trackedContact}}`                    |

## How to write the sequence

A prospect who connects with a competitor’s reps is often evaluating a solution in your category. The sequence should talk about what you do differently, without revealing how you found them.

1. **One campaign per competitor** when your arguments differ a lot: one signal per competitor, or a lemlist condition on `{{trackedCompany}}`.
2. **A short first message** about the problem, with one concrete difference (a feature, a billing model, a setup time).
3. **A LinkedIn step**: the prospect is active on LinkedIn right now.
4. **Several connections at one account**: when several people from one company show up, work the account multi-threaded (one message per role).

## Troubleshooting

- **No lead in lemlist**: check that lemlist is switched on in the _signal’s_ Integrations tab, that the campaign has at least one step and that the lemlist API key is still valid.
- **Several lemlist accounts connected**: pick the account explicitly (`integrationId` in the destination); without a choice, Rodz sends nothing rather than guess.
- **Too many off-target leads**: add personas, excluded titles ("Recruiter", "Intern") and your customers as excluded companies.

## Frequently asked questions

### Should I tell the prospect I saw them connect with a competitor?

No. Never mention the connection: it feels intrusive and backfires. Talk about the topic the connection suggests (the problem your category solves) and use `{{trackedCompany}}` internally to pick the right comparison angle.

### Does the signal deliver competitors’ past connections?

No, only new connections detected after the signal starts. Recent intent is what matters.

### Why no lead after several days?

A watched person produces leads only once they have accepted the connection request, which can take days; someone who never accepts produces none. Also check your filters with the signal’s funnel (`GET /api/v1/signals/{signal_id}/funnel`).

### What happens when the lead has no email?

Rodz adds the lead to the campaign with its LinkedIn URL: the sequence’s LinkedIn steps work, the email steps do not. Tick **Get emails** (0.5 credit per email found) to cover both.

### Can one signal follow several competitors?

Yes: `linkedinCompanyUrls` takes several pages. `signal.tracked_company` (and `{{trackedCompany}}` in lemlist) tells you which competitor produced each lead, so you send the right comparison.

## Sources

- [Rodz API reference: Competitor sales team connections signal, integrations, 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-lemlist/
- https://www.rodz.io/en/guides/use-cases/funding-rounds-to-lemlist/
- https://www.rodz.io/en/guides/api/create-and-route-a-signal/
