campaignstack_add_lead_to_external_list
Add one lead to an external provider's lead list (provider-parameterized: instantly, hubspot or clay). For clay the target is a registered Clay table: the push goes to the table's webhook source fire-and-forget (no provider lead id comes back, a campaignstack_dedupe_key field rides along for table-side dedup) and leads with only a LinkedIn URL qualify. Otherwise the lead is created by email on the provider side. Neither starts any outreach, unlike campaignstack_add_lead_to_sequence: the contact just becomes available in the provider (e.g. to attach to a campaign later). Duplicate adds to the same list are idempotent successes (status already_present). Set skipIfInWorkspace to skip leads that already exist anywhere in the provider workspace. Free: no CampaignStack credits. Returns status: added, already_present, skipped_no_email (lead has no email), or error (e.g. INTEGRATION_NOT_CONNECTED, LEAD_NOT_FOUND). Use campaignstack_list_external_lead_lists for list ids. For CampaignStack's OWN lead lists use campaignstack_add_leads_to_list instead (inside a workflow, the integration:add_to_list node also accepts provider campaignstack).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| leadId | Yes | ||
| listId | Yes | Provider-side lead list id (from campaignstack_list_external_lead_lists). | |
| provider | Yes | Integration provider that owns the lead list. | |
| leadSource | No | Lead source table (default: global). Private leads are workspace-scoped CSV imports. | |
| workspaceId | No | Workspace ID (required for user keys; workspace keys are bound) | |
| skipIfInWorkspace | No | Skip the lead if its email already exists anywhere in the provider workspace, in any campaign or list. |