ACTION_ID: lemlist_get_lead NAME: Lemlist: Get Lead Data CATEGORY: Outreach CREDITS: 0 Look up one email address in the connected Lemlist workspace and return every campaign that lead belongs to, plus Lemlist's email deliverability verdict. The read half of Lemlist: pair it with a `filter` to skip people who are already in an active campaign, or whose address is not deliverable, before `lemlist_add_lead_to_campaign` enrolls them. PREREQUISITE: Lemlist account connection, which the user must create in the Floqer UI (Connections page); an agent cannot. Without it the action fails the row with a connection / authentication error. Confirm it exists before configuring. PLAN REQUIREMENT: the Lemlist lead lookup route is only available on the Lemlist Email Pro plan and above. On a lower plan every row fails with Lemlist's own message, "route is available starting emailPro plan". There is no fallback route; the workspace has to be upgraded. 1. INPUTS email (email, required) Email. The address to look up. This is an address match, not a fuzzy name search: a typo returns `found_in_lemlist = false` rather than a near match. An invalid address fails the row at dispatch with "A valid email is required". 2. OUTPUTS found_in_lemlist (boolean): Found In Lemlist. `true` when the email is a lead in at least one campaign. is_in_active_campaign (boolean): Is In Active Campaign. `true` when at least one of the lead's campaigns has status `running`. This is the field an exclusion gate reads. campaign_names (string): Campaign Names. Comma-separated names of every campaign the lead is in, newest membership first. campaign_ids (string): Campaign IDs. Comma-separated ids in the same order. email_deliverability (string): Email Deliverability. Lemlist's `enrichment.emailStatus`, for example `deliverable`. Taken from the most recently updated membership that carries a verdict, so an older verified result wins over a newer membership Lemlist has not verified yet. Empty when no membership has been verified. lead_status (string): Lead Status. Status in the most recently updated campaign: notInterested, interested, unsubscribed, review, scanning, running, paused, done. lead_state (string): Lead State. State in that same campaign. is_paused (boolean): Is Paused. Whether the lead is paused in that campaign; `false` when the lead is not found. latest_campaign_id (string): Latest Campaign ID. The campaign of the most recently updated membership. latest_campaign_name (string): Latest Campaign Name. latest_campaign_status (string): Latest Campaign Status. One of running, paused, draft, ended, archived, errors. lead_id (string): Lead ID. Lemlist's id for the most recently updated membership record. updated_at (date): Updated At. When that membership was last updated. all_campaign_memberships (jsonArray): All Campaign Memberships. EVERY record for this email, one per campaign, newest first. Use it when you need per-campaign detail; the flat fields above already carry the aggregates and the newest record. 3. HOW TO CONFIGURE No options call is needed; the lookup always spans the whole workspace. Configure Action body: { "inputs": { "email": "{{input.email}}" } } Field-by-field: - email Required. Usually `{{input.email}}` or the output of an email waterfall upstream. 4. KEY NOTES - ONE EMAIL IS SEVERAL RECORDS. In Lemlist a lead record belongs to a campaign, so an address enrolled in three campaigns exists three times. The aggregate fields (`is_in_active_campaign`, `campaign_names`, `campaign_ids`, `email_deliverability`) span all of them; the `lead_*`, `latest_campaign_*` and `is_paused` fields describe the MOST RECENTLY UPDATED record only. `all_campaign_memberships` holds every record. - A miss does not fail the row. `found_in_lemlist` comes back `false` with blank fields and the chain continues. Gate downstream actions on the value with a `filter`, not on `continue_workflow_if_action_fails`. - Only the Lemlist "Lead not found" answer counts as a miss. Any other error from Lemlist (wrong key, plan gate, rate limit) fails the row with Lemlist's own message so it can be read in the cell. - `is_in_active_campaign` is about the CAMPAIGN's status, not the lead's. A lead marked `done` inside a campaign that is still `running` still reads `true`. For "is this person still being sequenced" combine it with `lead_status`. - One API call per row against the user's Lemlist key, on the same rate-limited lane as `lemlist_add_lead_to_campaign` (10 requests per 2 seconds). A large lookup sheet paces itself, and delays that workspace's campaign pushes while it runs. 5. WHERE IT FITS IN A WORKFLOW The dominant pattern is a CROSS-CAMPAIGN EXCLUSION GATE, do not enroll anyone who is already in a live Lemlist campaign: ... -> lemlist_get_lead "Lemlist: already in a campaign?" -> filter "Skip active leads" -> lemlist_add_lead_to_campaign filter: {{.is_in_active_campaign}} is "false" A DELIVERABILITY GATE reuses the same lookup, sending only to addresses Lemlist has already verified: filter: {{.email_deliverability}} is "deliverable" Note that `email_deliverability` is empty for an address Lemlist has never seen or never verified, so this gate also drops brand-new leads. Run a verification action upstream for those instead. Placement: put the lookup and filter immediately before the first step you do not want to spend on. Everything upstream still runs for skipped rows, so gate before enrichment if the enrichment is what costs. Rollout note: when you insert these steps into a chain that already has rows, run the FIRST new action (the lookup) with `run_next_action: true` to cascade the new cells down. Other placements: - Reporting: pull `campaign_names` and `lead_status` onto a sheet to see which prospects are in which sequence. 6. WHEN TO USE - Suppress people already in a live Lemlist campaign before pushing a list into another one. The main reason this action exists. - Check whether a prospect is already in outreach before a rep works them manually. - Read Lemlist's deliverability verdict for an address it has already verified. 7. WHEN NOT TO USE Pushing a lead INTO a campaign -> action-detail/lemlist_add_lead_to_campaign.txt Looking a prospect up in a different sequencer -> action-detail/instantly_get_lead.txt -> action-detail/outreach_lookup_prospect.txt The suppression rule is a CRM field (an unsubscribe flag, a do-not-contact owner) rather than sequencer membership -> action-detail/attio_lookup_record.txt -> action-detail/salesforce_lookup_record.txt Verifying a brand-new address that Lemlist has never seen -> the email verification actions (see action-catalog.txt, Email Verification) Last updated: 2026-09-10.