Skip to content

Leads & Lead Lists

Find, import, enrich and edit leads, and manage the lists that hold them.

Full name: campaignstack_get_lead_comments

leads:read Read-only

Freshly read recent LinkedIn comments for one lead/profile with a hard maxRequests cap. Nothing is written to the other platform and nothing is stored from this read. Charges recent_comments_read credits per call; campaignstack_estimate_cost gives the number before you commit. Charged per Voyager call the runner makes, not per comment returned. The workspace’s own connected account reads free.

NameTypeRequiredDefaultDescription
workspaceIdstringNo—Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.
profileUrlstringYes—LinkedIn profile URL to read comments from. (min length: 1)
untilDatestringYes—ISO date to read back to, e.g. 2026-08-10. (min length: 1)
maxRequestsintegerNo10(min: 1, max: 30)
accountIdstringNo—

Full name: campaignstack_get_lead_enrichments

leads:read Read-only

List recent workspace lead enrichment rows for async audit: type enrichment_queue (default) covers profile/company refresh jobs, type contact_finder covers built-in email/phone lookups (pass requestId for one specific lookup). The two job kinds have different status vocabularies and are never merged into one list. Use when queue counts are not enough and the user needs bounded row-level evidence. It reads audit state only and never retries work. Results are one page. When pagination reports more, say so rather than presenting the page as the whole set, and page through before counting anything.

NameTypeRequiredDefaultDescription
workspaceIdstringNo—Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.
typeenrichment_queue | contact_finderNo"enrichment_queue"enrichment_queue = profile/company refresh jobs (status: pending/processing/completed/failed). contact_finder = built-in email/phone lookups (status: queued/linked/submitted/completed/failed). Different systems with different status vocabularies; never mixed in one list.
statusstringNo—Status filter in the selected type’s own vocabulary (validated against enrichment_queue or contact_finder statuses).
requestIdstringNo—When type is contact_finder, look up exactly this request instead of listing.
limitintegerNo20(min: 1, max: 100)
cursorstringNo—

Full name: campaignstack_get_lead_lists

lead_lists:read Read-only

Read lead lists by ids, or list a campaign’s or the workspace’s lead lists, narrowed by origin (source) or by LinkedIn account (accountId: that account’s connections, invited and post engagers lists). Optionally includes a bounded page of members. Use this when the user asks which lists exist or who is in them; it does not add or remove members. Results are one page. When pagination reports more, say so rather than presenting the page as the whole set, and page through before counting anything.

NameTypeRequiredDefaultDescription
workspaceIdstringNo—Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.
idsstring[]No—Specific lead-list IDs. Max 25.
campaignIdstringNo—List lead lists in this campaign when ids are omitted. Without it, the workspace’s lists are listed.
sourcemanual | import | event | group | scheduled_sync | linkedin_connections | linkedin_invited | linkedin_post_engagersNo—Only lists of this origin. linkedin_connections, linkedin_invited (people the account’s workflows sent a connection request to) and linkedin_post_engagers (people who reacted to, commented on or reposted the account’s posts) are the lists a LinkedIn account owns; the last two are kept up to date by CampaignStack and their members cannot be edited.
accountIdstringNo—Only the lists this LinkedIn account owns in the workspace (its connections, invited and post engagers lists).
includeMembersbooleanNofalse
limitintegerNo20(min: 1, max: 100)
cursorstringNo—

Full name: campaignstack_get_lead_refresh_status

leads:read Read-only

Read workspace lead-enrichment queue status counts, optionally for one campaign. Use this when the user asks whether lead refresh/enrichment is moving; it does not enqueue refreshes.

NameTypeRequiredDefaultDescription
workspaceIdstringNo—Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.
campaignIdstringNo—Optional campaign filter for enrichment queue status.

Full name: campaignstack_get_leads

leads:read Read-only

Read leads by ids or search filters in one bounded V2 envelope. Includes are capped; campaign-specific scoreBreakdown requires campaignId. Use this instead of legacy search/get pairs when the user needs leads plus selected context. It does not modify leads or enqueue outreach. Results are one page. When pagination reports more, say so rather than presenting the page as the whole set, and page through before counting anything.

NameTypeRequiredDefaultDescription
workspaceIdstringNo—Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.
idsstring[]No—Specific lead IDs to hydrate. Max 25.
querystringNo—Name, email, or LinkedIn URL search when ids are omitted.
companyIdstringNo—Restrict search to leads attached to this company.
limitintegerNo20(min: 1, max: 100)
cursorstringNo—
campaignIdstringNo—Required when include.scoreBreakdown is true.
includeobjectNo{}
include.signalsbooleanNofalse
include.scoreBreakdownbooleanNofalse
include.outreachHistorybooleanNofalse
include.mutualConnectionsbooleanNofalsePreviously recorded LinkedIn connection edges only, not a live crawl of the lead’s full network. Absence of an edge means not yet observed, not that none exists. Returns { connections, total }, total being the count returned under the limit.
include.mutualConnectionsDegree1st | 2nd | 3rd | out_of_networkNo—Only with mutualConnections: keep edges of this observed degree.
include.latestEnrichmentbooleanNofalseTwo distinct job kinds, kept separate: refreshJob is the latest enrichmentQueue profile/company refresh job; contactFinderRequests are bounded, recent built-in Contact Finder (email/phone) lookups. They use different status vocabularies and are never merged into one list.
include.limitintegerNo10(min: 1, max: 50)

Full name: campaignstack_refresh_leads

leads:write Acts outside CampaignStack

Queue up to 50 LinkedIn lead profiles for fresh enrichment. Uses bounded queue priority only: normal joins the standard queue, high asks the queue to prioritize these items. This may consume queue capacity and enrichment credits when workers complete rows.

NameTypeRequiredDefaultDescription
workspaceIdstringNo—Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.
accountIdstringYes—(min length: 1)
campaignIdstringNo—
prioritynormal | highNo"normal"
resultsobject[]Yes—

Full name: campaignstack_enrich_leads

leads:write Acts outside CampaignStack

Run contact enrichment for up to 25 leads with bounded include flags. Email is on by default; phone must be explicitly requested and can cost more. Per-lead provider errors are returned independently. Charges vary by mode (email reveal: contact_email_reveal credits per result found; phone reveal: contact_phone_reveal credits per result found). campaignstack_estimate_cost accepts variant or variantCounts before you commit. Email is on by default; phone is charged separately only when include.phone is true.

NameTypeRequiredDefaultDescription
workspaceIdstringNo—Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.
leadsobject[]Yes—
providerbettercontact | apollo | instantly | clayNo"bettercontact"
includeobjectNo{}
include.emailbooleanNotrue
include.phonebooleanNofalse
clayRoutineIdstringNo—

Full name: campaignstack_edit_lead_list

lead_lists:write

Create set/query lead lists, update list metadata/query, or add/remove up to 50 members. Query-list membership is predicate-owned; explicit add/remove requires an editable set list.

NameTypeRequiredDefaultDescription
workspaceIdstringNo—Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.
opcreate | create_query | update | add_members | remove_membersYes—
leadListIdstringNo—
campaignIdstringNo—
namestringNo—(min length: 1)
queryobjectNo—
query.includeobject[]Yes—
query.excludearrayYes—
query.filterobject[]Yes—
query.logicand | orYes—
query.excludedLeadIdsstring[]No—
membersobject[]No—

Full name: campaignstack_edit_leads

leads:write

Apply bounded lead edits. Metadata patches write workspace overlays for global or private leads; contact patches are global-row contact updates only after workspace membership proof; profile link/unlink is provenance-bounded to private leads. Max 50 leads per call.

NameTypeRequiredDefaultDescription
workspaceIdstringNo—Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.
leadsobject[]Yes—

Full name: campaignstack_import_leads

leads:write

Import parsed CSV lead rows into private workspace leads with CSV provenance, optionally attaching successful rows to one lead list. Max 100 rows per call; per-row failures are returned without aborting the whole import.

NameTypeRequiredDefaultDescription
workspaceIdstringNo—Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.
rowsobject[]Yes—CSV rows already parsed into fields. Max 100 per call.
leadListIdstringNo—Optional set lead-list to attach imported rows to.
importedFromobjectNo{"type":"csv"}
importedFrom.typestringYes—
importedFrom.namestringNo—

Full name: campaignstack_delete_lead_list

lead_lists:write Destructive Needs confirmation

Delete up to 50 lead lists from the bound workspace. The list row is removed and entries drain asynchronously. This permanently deletes a root record. Before calling it, name exactly what will be deleted, explain that it cannot be undone, and wait for an explicit yes.

NameTypeRequiredDefaultDescription
workspaceIdstringNo—Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.
leadListIdsstring[]Yes—
confirmedbooleanYes—This permanently deletes a root record. Before calling it, name exactly what will be deleted, explain that it cannot be undone, and wait for an explicit yes.