<!-- BusyBot node reference — https://busybot.net/tools/lemlist/ -->

> Node: Lemlist (`lemlist`) · Action · v2
> Category: Communication · Credentials: Lemlist API (`lemlistApi`)
> Updated: 2026-08-16

# Lemlist

> Manage Lemlist campaigns, leads, activities, enrichment, and unsubscribes

## Overview

Lemlist is a cold outreach automation platform. This tool interacts with the Lemlist API to manage campaigns, leads, activities, team info, enrichment, and unsubscribe lists. It supports creating, deleting, and retrieving leads within campaigns; listing activities and campaigns; getting campaign statistics; enriching leads and people; and managing the global unsubscribe list.

**Category:** Communication  
**Tool Name:** `lemlist`  
**Version:** 2

**Appearance:** Icon: `lucide-Mail` | Color: `#4B47F5`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Lemlist API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/lemlist-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Activity | `activity` |
| Campaign | `campaign` |
| Enrichment | `enrich` |
| Lead | `lead` |
| Team | `team` |
| Unsubscribe | `unsubscribe` |

### Operations

| Operation | Value | Description |
|-----------|-------|-------------|
| Get Many | `getAll` | List activities (Activity resource) |
| Get Many | `getAll` | List campaigns (Campaign resource) |
| Get Stats | `getStats` | Get statistics for one campaign (Campaign resource) |
| Get | `get` | Retrieve a previous enrichment by ID (Enrichment resource) |
| Enrich Lead | `enrichLead` | Enrich a lead that already exists in Lemlist (Enrichment resource) |
| Enrich Person | `enrichPerson` | Enrich a person from the details you supply (Enrichment resource) |
| Create | `create` | Add a lead to a campaign (Lead resource) |
| Delete | `delete` | Remove a lead from a campaign (Lead resource) |
| Get | `get` | Retrieve a lead by email (Lead resource) |
| Unsubscribe | `unsubscribe` | Unsubscribe a lead from a campaign (Lead resource) |
| Get | `get` | Get team information (Team resource) |
| Get Credits | `getCredits` | Get remaining team credits (Team resource) |
| Add | `add` | Add an email to the global unsubscribe list (Unsubscribe resource) |
| Delete | `delete` | Remove an email from the global unsubscribe list (Unsubscribe resource) |
| Get Many | `getAll` | List globally unsubscribed emails (Unsubscribe resource) |

### Parameters

`Team: Get` and `Team: Get Credits` take no parameters of their own — see All Operations.

#### Activity: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `5` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the activity list. Add only the filters you need. |
| — Campaign ID | `string` | No | — | ID of the campaign to retrieve activity for. Find this in Lemlist under the campaign URL or via the Campaign: Get Many operation. |
| — Is First | `boolean` | No | `false` | Whether to filter for first activities only. |
| — Lead ID | `string` | No | — | ID of the lead to retrieve activities for. |
| — Type | `options` | No | `emailsOpened` | Type of activity to retrieve. |
| | | | | Options: `aircallCreated`, `aircallDone`, `aircallEnded`, `aircallInterested`, `aircallNotInterested`, `apiDone`, `apiFailed`, `apiInterested`, `apiNotInterested`, `attracted`, `connectionIssue`, `contacted`, `customDomainErrors`, `emailsBounced`, `emailsClicked`, `emailsFailed`, `emailsInterested`, `emailsNotInterested`, `emailsOpened`, `emailsReplied`, `emailsSendFailed`, `emailsSent`, `emailsUnsubscribed`, `hooked`, `interested`, `lemwarmPaused`, `linkedinInterested`, `linkedinInviteAccepted`, `linkedinInviteDone`, `linkedinInviteFailed`, `linkedinNotInterested`, `linkedinReplied`, `linkedinSendFailed`, `linkedinSent`, `linkedinVisitDone`, `linkedinVisitFailed`, `linkedinVoiceNoteDone`, `linkedinVoiceNoteFailed`, `manualInterested`, `manualNotInterested`, `notInterested`, `opportunitiesDone`, `paused`, `resumed`, `sendLimitReached`, `skipped`, `warmed` |
| — Version | `string` | No | `v2` | API version for pagination. Use "v2" for page-based pagination. |

#### Campaign: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `5` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Optional listing settings. |
| — Version | `string` | No | `v2` | API version for pagination. |

#### Campaign: Get Stats

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Campaign ID | `string` | Yes | — | ID of the campaign to get stats for. Find this via the Campaign: Get Many operation or in the Lemlist campaign URL. Supports expressions like {{ $json.campaignId }}. |
| Start Date | `string` | Yes | — | Start date for statistics period (ISO 8601 format). Supports expressions. |
| End Date | `string` | Yes | — | End date for statistics period (ISO 8601 format). Supports expressions. |
| Timezone | `string` | Yes | — | Timezone for the statistics period (IANA timezone identifier). Supports expressions. |

#### Enrichment: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Enrichment ID | `string` | Yes | — | ID of the enrichment to retrieve. Supports expressions. |

#### Enrichment: Enrich Lead

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Lead ID | `string` | Yes | — | ID of the lead to enrich. Supports expressions. |
| Find Email | `boolean` | No | `false` | Whether to find verified email. |
| Verify Email | `boolean` | No | `false` | Whether to verify existing email. |
| LinkedIn Enrichment | `boolean` | No | `false` | Whether to run LinkedIn enrichment. |
| Find Phone | `boolean` | No | `false` | Whether to find phone number. |

#### Enrichment: Enrich Person

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Find Email | `boolean` | No | `false` | Whether to find verified email. |
| Verify Email | `boolean` | No | `false` | Whether to verify existing email. |
| LinkedIn Enrichment | `boolean` | No | `false` | Whether to run LinkedIn enrichment. |
| Find Phone | `boolean` | No | `false` | Whether to find phone number. |
| Additional Fields | `collection` | No | `{}` | The details Lemlist matches the person on. Supply at least enough to identify them. |
| — Email | `string` | No | — | Known email address for the person. |
| — First Name | `string` | No | — | First name of the person. |
| — Last Name | `string` | No | — | Last name of the person. |
| — LinkedIn URL | `string` | No | — | LinkedIn profile URL for the person. |
| — Company Name | `string` | No | — | Company the person works for. |
| — Company Domain | `string` | No | — | Domain of the person's company. |

#### Lead: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Campaign ID | `string` | Yes | — | ID of the campaign to add the lead to. Find this via the Campaign: Get Many operation or in the Lemlist campaign URL. Supports expressions. |
| Email | `string` | No | — | Email of the lead to create. Supports expressions like {{ $json.email }}. |
| Additional Fields | `collection` | No | `{}` | Optional lead attributes. Add only the ones you need. |
| — Company Name | `string` | No | — | Company name of the lead. |
| — Company Domain | `string` | No | — | Company domain of the lead. |
| — Deduplicate | `boolean` | No | `false` | Whether to skip insert if this email is already present in another campaign. |
| — Find Email | `boolean` | No | `false` | Whether to find verified email. |
| — Find Phone | `boolean` | No | `false` | Whether to find phone number. |
| — First Name | `string` | No | — | First name of the lead. |
| — Icebreaker | `string` | No | — | Icebreaker text for the lead. |
| — Job Title | `string` | No | — | Job title of the lead. |
| — Last Name | `string` | No | — | Last name of the lead. |
| — LinkedIn Enrichment | `boolean` | No | `false` | Whether to run LinkedIn enrichment. |
| — LinkedIn URL | `string` | No | — | LinkedIn URL of the lead. |
| — Phone | `string` | No | — | Phone number of the lead. |
| — Picture URL | `string` | No | — | Picture URL of the lead. |
| — Verify Email | `boolean` | No | `false` | Whether to verify existing email. |

#### Lead: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Campaign ID | `string` | Yes | — | ID of the campaign to remove the lead from. Supports expressions. |
| Email | `string` | No | — | Email of the lead to delete. Supports expressions. |

#### Lead: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Email | `string` | No | — | Email of the lead to retrieve. Supports expressions. |

#### Lead: Unsubscribe

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Campaign ID | `string` | Yes | — | ID of the campaign to unsubscribe the lead from. Supports expressions. |
| Email | `string` | No | — | Email of the lead to unsubscribe. Supports expressions. |

#### Unsubscribe: Add

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Email | `string` | No | — | Email to add to the global unsubscribe list. Supports expressions. |

#### Unsubscribe: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Email | `string` | No | — | Email to remove from the global unsubscribe list. Supports expressions. |

#### Unsubscribe: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `5` | Max number of results to return. _(shown when Return All is `false`)_ |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

The Lemlist response is merged into the incoming item JSON at the top level, so the fields you sent in pass through and binary data is forwarded.

| Operation | Output items |
|-----------|--------------|
| `activity` / `getAll`, `campaign` / `getAll`, `unsubscribe` / `getAll` | **Fans out** — one output item per record. With Return All on, every page is fetched; otherwise up to Limit records. A run that matches nothing produces **no** output items for that input, so the branch can be empty. |
| `campaign` / `getStats` | One item — the statistics for the requested window. |
| `enrich` / `get`, `enrichLead`, `enrichPerson` | One item — the enrichment record. Enrichment is asynchronous at Lemlist, so a start request returns the enrichment's identifiers; use Enrichment: Get to read the finished result. |
| `lead` / `create`, `delete`, `get`, `unsubscribe` | One item — the lead record Lemlist returns for the action. |
| `team` / `get`, `getCredits` | One item — the team record or the remaining credit counts. |

## Usage Examples

- List all campaigns
- Add a lead to a campaign
- Get campaign statistics
- Enrich a lead with LinkedIn data
- Unsubscribe an email address

## Example Configuration

List recent activities filtered by campaign and type:

```json
{
  "type": "lemlist",
  "parameters": {
    "resource": "activity",
    "operation": "getAll",
    "returnAll": false,
    "limit": 50,
    "filters": {
      "campaignId": "cam_abc123",
      "type": "emailsOpened",
      "isFirst": true,
      "version": "v2"
    }
  }
}
```

Get statistics for one campaign over a date range:

```json
{
  "type": "lemlist",
  "parameters": {
    "resource": "campaign",
    "operation": "getStats",
    "campaignId": "cam_abc123",
    "startDate": "2024-01-01T00:00:00Z",
    "endDate": "2024-01-31T23:59:59Z",
    "timezone": "America/New_York"
  }
}
```

Add a fully described lead to a campaign:

```json
{
  "type": "lemlist",
  "parameters": {
    "resource": "lead",
    "operation": "create",
    "campaignId": "cam_abc123",
    "email": "{{ $json.email }}",
    "additionalFields": {
      "firstName": "John",
      "lastName": "Doe",
      "companyName": "Example Corp",
      "companyDomain": "example.com",
      "jobTitle": "Marketing Director",
      "linkedinUrl": "https://linkedin.com/in/johndoe",
      "findEmail": true,
      "verifyEmail": true,
      "linkedinEnrichment": true,
      "deduplicate": true,
      "icebreaker": "I noticed your recent post about marketing automation"
    }
  }
}
```

Enrich a person from the details you already hold:

```json
{
  "type": "lemlist",
  "parameters": {
    "resource": "enrich",
    "operation": "enrichPerson",
    "findEmail": true,
    "verifyEmail": true,
    "linkedinEnrichment": true,
    "findPhone": false,
    "additionalFields": {
      "firstName": "Jane",
      "lastName": "Smith",
      "companyName": "Tech Startup Inc",
      "companyDomain": "techstartup.com",
      "linkedinUrl": "https://linkedin.com/in/janesmith"
    }
  }
}
```

Enrich a lead that already exists in Lemlist:

```json
{
  "type": "lemlist",
  "parameters": {
    "resource": "enrich",
    "operation": "enrichLead",
    "leadId": "lead_xyz789",
    "findEmail": true,
    "verifyEmail": true,
    "linkedinEnrichment": true,
    "findPhone": true
  }
}
```

Check the team's remaining credits:

```json
{
  "type": "lemlist",
  "parameters": {
    "resource": "team",
    "operation": "getCredits"
  }
}
```

Add an address to the global unsubscribe list:

```json
{
  "type": "lemlist",
  "parameters": {
    "resource": "unsubscribe",
    "operation": "add",
    "email": "unsubscribe@example.com"
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Manage Lemlist cold outreach campaigns, leads, activities, enrichment, team info, and unsubscribe lists.

### Common Patterns

**Campaign management workflow**

1. Get all campaigns to find the target campaign ID
2. Get campaign statistics for performance analysis
3. Create new leads in the campaign
4. Monitor activities for engagement tracking

**Lead enrichment workflow**

1. Create a lead with basic information
2. Enrich the lead with additional data (LinkedIn, phone, email verification)
3. Monitor lead activities
4. Handle unsubscribes if needed

**Bulk operations**

When processing multiple items, use the `maxConcurrency` parameter to control the rate of API calls and avoid rate limiting.

### Important

- Collection parameters use a flat object structure
- The `operation` parameter is always required and must match the selected resource
- Campaign IDs can be found via the Campaign "getAll" operation or from Lemlist campaign URLs
- Email addresses are case-sensitive and must be valid
- ISO 8601 date format is required for date parameters
- Always check display conditions — parameters only appear when their conditions are met
- **Lead-level unsubscribe is not the same as the global list.** `lead` / `unsubscribe` stops one campaign; `unsubscribe` / `add` suppresses the address everywhere.