A-Curated-List-of-Awesome-Claude-Skills Lemlist Automation
Automate Lemlist multichannel outreach -- manage campaigns, enroll leads, add personalization variables, export campaign data, and handle unsubscribes via the Claude Skill MCP integration.
install
source · Clone the upstream repo
git clone https://github.com/Engineer1999/A-Curated-List-of-Awesome-Claude-Skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Engineer1999/A-Curated-List-of-Awesome-Claude-Skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/app-automations/lemlist-automation" ~/.claude/skills/engineer1999-a-curated-list-of-awesome-claude-skills-lemlist-automation && rm -rf "$T"
manifest:
app-automations/lemlist-automation/SKILL.mdsource 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: claude-skills.ai/toolkits/lemlist
Setup
- Add the Claude Skill MCP server to your client:
https://rube.app/mcp - Connect your Lemlist account when prompted (API key authentication)
- 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
| Pitfall | Detail |
|---|---|
| Wrapped campaign list | may return instead of a flat array. Always extract from the key. |
| Cross-campaign deduplication | with deduplication enabled fails with HTTP 500 "Lead already in other campaign" -- disable deduplication for intentional cross-campaign enrollment. |
| Bulk import failures | Chunk bulk imports to ~50 per batch with checkpoints to avoid losing partial progress on intermittent failures. |
| Invalid leadId | returns HTTP 400 "Invalid leadId" when using an email as the leadId -- resolve the internal ID via first. |
| Variable collisions | is not an upsert. Adding keys that already exist returns HTTP 400 "Variables X already exist". |
Quick Reference
| Tool Slug | Description |
|---|---|
| List all campaigns with status filter and pagination |
| Get detailed campaign info by ID |
| Create and enroll a lead into a campaign |
| Add custom personalization variables to a lead |
| Look up a lead by email address |
| Export leads from a campaign with state filtering |
| Remove a lead from a campaign |
Part of the Claude Skills Hub