Enroll Lead In Campaign
Enroll a contact in a campaign by its slug, creating the contact if it is new. Every call returns a complete verdict: added, already enrolled, or skipped with a reason. The operation is idempotent, so calling it repeatedly with the same input is always safe.
Example prompt: Enroll the contact john-doe in the gtm-engineers-apr26 campaign
{
"verdict": "added",
"crispy_id": "c_8f21",
"campaign": "gtm-engineers-apr26"
}What you can build
Parameters
Inputs accepted by add_lead.
| Name | Type | Description |
|---|---|---|
| campaign | string | Campaign slug (e.g. 'gtm-engineers-apr26'). Use list_campaigns to see available campaigns. |
| lookup | object | Structured contact identifier. Resolver picks the highest-priority field per RESOLVER-09 (crispy_id > linkedin_provider_id > external_id > linkedin_url > email). |
| first_name | string | First name (written on create if contact is new) |
| last_name | string | Last name |
string | Email address | |
| company | string | Company name |
| title | string | Job title |
| linkedin_url | string | [Deprecated: use lookup.linkedin_url] |
Related tools
Get Campaign Details
Fetch one LinkedIn campaign with state, stats, health, and outreach config, or list all campaigns. Parallel slice loading via the include parameter.
Add Or Update Lead
Add or update a LinkedIn lead by profile URL. Creates the contact if new, updates status, notes, tags, and custom attributes if it already exists.
Get Full Contact Picture
Get the complete LinkedIn contact picture in one call: identifiers, campaigns, messages, connection events, company, lead score, and next-best-action.
Search Saved Leads
Search your saved LinkedIn leads and contacts by name, status, tags, or company. Filter to new, contacted, replied, or qualified leads in one call.
Run LinkedIn workflows from the AI client you already use.
Create your account, connect LinkedIn, create an API key, then add Crispy to your client. Review the docs for supported workflows and safety controls.