Awesome-claude-skills Lemlist Automation

Automate Lemlist multichannel outreach -- manage campaigns, enroll leads, add personalization variables, export campaign data, and handle unsubscribes via the Composio MCP integration.

install
source · Clone the upstream repo
git clone https://github.com/ComposioHQ/awesome-claude-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComposioHQ/awesome-claude-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/composio-skills/lemlist-automation" ~/.claude/skills/composiohq-awesome-claude-skills-lemlist-automation && rm -rf "$T"
manifest: composio-skills/lemlist-automation/SKILL.md
source content

Lemlist Automation

Automate your Lemlist multichannel outreach workflows -- manage campaigns, enroll leads at scale, enrich with custom variables, export campaign data, and clean up unsubscribes.

Toolkit docs: composio.dev/toolkits/lemlist


Setup

  1. Add the Composio MCP server to your client:
    https://rube.app/mcp
  2. Connect your Lemlist account when prompted (API key authentication)
  3. Start using the workflows below

Core Workflows

1. List and Discover Campaigns

Use

LEMLIST_GET_LIST_CAMPAIGNS
to enumerate all campaigns by status, with pagination support.

Tool: LEMLIST_GET_LIST_CAMPAIGNS
Inputs:
  - status: "running" | "draft" | "archived" | "ended" | "paused" | "errors" (optional)
  - limit: integer (max 100, default 100)
  - offset: integer (pagination offset)
  - sortBy: "createdAt"
  - sortOrder: "asc" | "desc"

Important: The response may be wrapped as

{campaigns: [...], pagination: {...}}
instead of a flat list. Always extract from the
campaigns
key.

2. Get Campaign Details

Use

LEMLIST_GET_CAMPAIGN_BY_ID
to validate campaign configuration before writes.

Tool: LEMLIST_GET_CAMPAIGN_BY_ID
Inputs:
  - campaignId: string (required) -- e.g., "cam_A1B2C3D4E5F6G7H8I9"

3. Enroll Leads into a Campaign

Use

LEMLIST_POST_CREATE_LEAD_IN_CAMPAIGN
to add leads with optional email finding, phone lookup, and LinkedIn enrichment.

Tool: LEMLIST_POST_CREATE_LEAD_IN_CAMPAIGN
Inputs:
  - campaignId: string (required)
  - email: string (required)
  - firstName, lastName, companyName, companyDomain: string (optional)
  - jobTitle, phone, linkedinUrl, icebreaker: string (optional)
  - deduplicate: boolean (prevents cross-campaign duplicates)
  - findEmail, findPhone, verifyEmail, linkedinEnrichment: boolean (optional)
  - timezone: string (IANA format, e.g., "America/New_York")

Bulk pattern: Chunk leads into batches of ~50 and checkpoint progress between batches.

4. Add Custom Variables to a Lead

Use

LEMLIST_POST_ADD_VARIABLES_TO_LEAD
to enrich leads with personalization fields after enrollment.

Tool: LEMLIST_POST_ADD_VARIABLES_TO_LEAD
Inputs:
  - leadId: string (required) -- internal Lemlist lead ID (NOT email)
  - company: string (required) -- must match your company name in Lemlist
  - variables: object (required) -- key-value pairs, e.g., {"score": "42", "color": "yellow"}

Important: This is NOT an upsert -- attempting to add variables that already exist will fail. Resolve the internal

leadId
via
LEMLIST_GET_RETRIEVE_LEAD_BY_EMAIL
if you only have the email address.

5. Export Campaign Leads

Use

LEMLIST_GET_EXPORT_CAMPAIGN_LEADS
to download leads with state filtering for reporting or QA.

Tool: LEMLIST_GET_EXPORT_CAMPAIGN_LEADS
Inputs:
  - campaignId: string (required)
  - (supports state filtering and JSON/CSV output)

6. Unsubscribe Lead from Campaign

Use

LEMLIST_DELETE_UNSUBSCRIBE_LEAD_FROM_CAMPAIGN
to stop outreach by removing a lead from a campaign.

Tool: LEMLIST_DELETE_UNSUBSCRIBE_LEAD_FROM_CAMPAIGN
Inputs:
  - campaignId: string (required)
  - leadId or email: string (required)

Known Pitfalls

PitfallDetail
Wrapped campaign list
LEMLIST_GET_LIST_CAMPAIGNS
may return
{campaigns: [...], pagination: {...}}
instead of a flat array. Always extract from the
campaigns
key.
Cross-campaign deduplication
LEMLIST_POST_CREATE_LEAD_IN_CAMPAIGN
with deduplication enabled fails with HTTP 500 "Lead already in other campaign" -- disable deduplication for intentional cross-campaign enrollment.
Bulk import failuresChunk bulk imports to ~50 per batch with checkpoints to avoid losing partial progress on intermittent failures.
Invalid leadId
LEMLIST_POST_ADD_VARIABLES_TO_LEAD
returns HTTP 400 "Invalid leadId" when using an email as the leadId -- resolve the internal ID via
LEMLIST_GET_RETRIEVE_LEAD_BY_EMAIL
first.
Variable collisions
LEMLIST_POST_ADD_VARIABLES_TO_LEAD
is not an upsert. Adding keys that already exist returns HTTP 400 "Variables X already exist".

Quick Reference

Tool SlugDescription
LEMLIST_GET_LIST_CAMPAIGNS
List all campaigns with status filter and pagination
LEMLIST_GET_CAMPAIGN_BY_ID
Get detailed campaign info by ID
LEMLIST_POST_CREATE_LEAD_IN_CAMPAIGN
Create and enroll a lead into a campaign
LEMLIST_POST_ADD_VARIABLES_TO_LEAD
Add custom personalization variables to a lead
LEMLIST_GET_RETRIEVE_LEAD_BY_EMAIL
Look up a lead by email address
LEMLIST_GET_EXPORT_CAMPAIGN_LEADS
Export leads from a campaign with state filtering
LEMLIST_DELETE_UNSUBSCRIBE_LEAD_FROM_CAMPAIGN
Remove a lead from a campaign

Powered by Composio