Skip to main content
Human guide: work with your agent → Inspect one Lemlist action before starting provider-backed work. Your first result is a verified input and output contract.

Provider-specific requirements

Use Lemlist for multi-channel outbound campaigns (email + LinkedIn). Full campaign lifecycle management is available.
  • Keep activation behind enrichment/verification gates — only push contacts that have been validated.
  • Resolve campaign IDs from lemlist_list_campaigns before any write operation.
  • Insert contacts in batches of 10–25 and re-check campaign stats after writes.
  • Always review in Lemlist UI before starting campaigns — use the web_url returned by create/update operations.

Workflow

  1. Create or list campaigns before adding contacts.
  2. Add sequence steps (email, LinkedIn invite, LinkedIn DM) to define the outreach flow.
  3. Add contacts in small batches (10–25), then check stats to verify.
  4. Review in Lemlist UI before starting — use the web_url returned by create/update operations.
  5. Monitor via activities and inbox threads.

Quick Reference

Campaigns

Sequences

Leads

Activities

Inbox

Unsubscribes

Response Shape Contract

Deepline wraps all provider payloads in a standard result envelope: { data, meta }.
  • lemlist_list_campaigns → result.data is an array of { id, name, status }.
  • lemlist_get_campaign_stats → result.data contains { sent, opened, clicked, replied, bounced }.
  • lemlist_get_campaign_sequences → result.data is keyed by sequence ID, each with a steps array.
  • lemlist_export_campaign_leads → result.data is an array of lead objects with email, firstName, lastName, state.
  • lemlist_add_to_campaign → result.data contains { pushed, failed, errors }.
  • lemlist_create_campaign / lemlist_update_campaign → result.data includes web_url for UI review.

Key Notes

  • Step types: email, linkedinInvite, linkedinSend, linkedinVisit, manual, phone, api, whatsappMessage, conditional, sendToAnotherCampaign
  • Delays are in days for both add_sequence_step and update_sequence_step (0 = immediate, 2 = 2 days). Do not pass seconds or hours.
  • Deep links: Campaign mutations return web_url — always review in Lemlist UI before starting campaigns.
  • Lead states for export: all, contacted, interested, notInterested, emailsBounced, paused, emailsSent, emailsOpened, emailsReplied
  • Activity types: emailsSent, emailsOpened, emailsClicked, emailsReplied, emailsBounced, emailsUnsubscribed

Gotchas

  • Delay unit: Always days. Passing 172800 thinking “seconds” will result in a > 1500 days API error.
  • Inbox operations require user/mailbox IDs: send_email needs send_user_id, send_user_email, and send_user_mailbox_id. List inbox first to discover these values.
  • Sequence writes: Prefer adding/updating sequence steps while campaigns are still draft/paused to avoid campaign-state edge cases.
  • Lead deduplication: Validation rejects duplicate emails and duplicate linkedin_url values within the same batch. Across batches, Lemlist can reject duplicates (for example 409 conflicts), which surface in result.data.errors.
  • Lead timezone: Set the native field with contacts[].timezone using an IANA name. custom_fields.timezone is a separate custom variable. if both use that key, the dedicated timezone takes precedence. Local-time sending also requires timezone-based scheduling on the campaign.
  • Exact custom-field readback: Lemlist HTML-escapes a bare & as & in custom field values containing an HTML tag. plain-text values are stored exactly.
  • Lead removal: lemlist_delete_lead without action: "remove" unsubscribes the lead. Pass the action explicitly to remove it from the campaign.

Find an applicable action

Confirm your effective workspace, then search the live catalog:
Search returns candidates. Check the returned provider and operation rather than selecting a similar title automatically.

Inspect the selected contract

Replace <returned-tool-id> with the identifier returned by discovery:
These commands do not execute the selected provider action. Read its required inputs, supported access mode, pricing unit, outputs, and limits. A connection does not establish that every action supports BYOK. Follow the provider-specific requirements above and the live action contract.

Prepare one reviewed input

Use one authorized record that matches the inspected schema. Preserve its source identity and define the result you will accept. Open the action reference for its payload and response shape. Provider-backed execution can incur usage or external effects. For reusable logic, follow Write Plays. For direct-call recovery, use Tool execution recovery.
Continue only when the workspace, provider, required fields, acceptance rule, and applicable price are understood. Keep unavailable access separate from no-result evidence.