Available tools
Campaign management
createEmailCampaign
Create a Woodpecker email campaign with one email step and minimal configuration.
| Parameter | Type | Description |
|---|---|---|
name | string, optional | Campaign name |
timezone | string | Campaign timezone |
dailyEnroll | integer | Daily prospect enrollment limit |
emailAccountIds | array | SMTP account IDs |
versions | array | Email versions with subject and body (max 5) |
deliveryTimes | object | Required delivery schedule with deliveryDays, deliveryTimeStart, and deliveryTimeStop |
followupAfter | object, optional | Delay with range (DAY, HOUR, or MINUTE) and value |
createLinkedinProfileVisitCampaign
Create a Woodpecker LinkedIn campaign with one profile visit step.
| Parameter | Type | Description |
|---|---|---|
name | string, optional | Campaign name |
timezone | string | Campaign timezone |
dailyEnroll | integer | Daily prospect enrollment limit |
linkedinAccountId | integer | LinkedIn account ID |
followupAfter | object, optional | Delay with range (DAY, HOUR, or MINUTE) and value |
createLinkedinConnectionRequestCampaign
Create a Woodpecker LinkedIn campaign with one connection request step.
| Parameter | Type | Description |
|---|---|---|
name | string, optional | Campaign name |
timezone | string | Campaign timezone |
dailyEnroll | integer | Daily prospect enrollment limit |
linkedinAccountId | integer | LinkedIn account ID |
bodyVersions | array, optional | Connection request message strings (max 5; empty/null sends the connection request without a message) |
followupAfter | object, optional | Delay with range (DAY, HOUR, or MINUTE) and value |
createLinkedinDirectMessageCampaign
Create a Woodpecker LinkedIn campaign with one direct message step.
| Parameter | Type | Description |
|---|---|---|
name | string, optional | Campaign name |
timezone | string | Campaign timezone |
dailyEnroll | integer | Daily prospect enrollment limit |
linkedinAccountId | integer | LinkedIn account ID |
bodyVersions | array | Direct message strings (max 5) |
followupAfter | object, optional | Delay with range (DAY, HOUR, or MINUTE) and value |
createLinkedinInMailMessageCampaign
Create a Woodpecker LinkedIn campaign with one InMail message step.
| Parameter | Type | Description |
|---|---|---|
name | string, optional | Campaign name |
timezone | string | Campaign timezone |
dailyEnroll | integer | Daily prospect enrollment limit |
linkedinAccountId | integer | LinkedIn account ID |
bodyVersions | array | InMail versions with subject and body |
followupAfter | object, optional | Delay with range (DAY, HOUR, or MINUTE) and value |
listCampaigns
Retrieve campaigns with optional status filtering.
| Parameter | Type | Description |
|---|---|---|
pageNumber | integer | Page number (1-based) |
statuses | array | Filter by status (RUNNING, DRAFT, EDITED, PAUSED, STOPPED, COMPLETED) |
retrieveCampaignDetails
Get detailed campaign structure including all steps and configurations.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
retrieveCampaignStatistics
Fetch campaign performance metrics and analytics.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
updateCampaignSettings
Modify campaign-wide settings including name, email accounts, daily limits and timezone.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
name | string | Campaign name |
emailAccountIds | array | List of email account IDs |
timezone | string | Campaign timezone |
dailyEnroll | integer | Daily enrollment limit |
buildCampaignUrl
Generate Woodpecker app URL for campaign access.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
Campaign control
runCampaign(campaignId) - Start campaign execution
pauseCampaign(campaignId) - Pause campaign
stopCampaign(campaignId) - Stop campaign
deleteCampaign(campaignId) - Remove campaign entirely
makeCampaignEditable(campaignId) - Enable campaign modifications
Step management
addEmailStep
Add an email follow-up step to an existing campaign.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
parentId | string | Parent step ID |
versions | array | Email versions with subject and body (max 5) |
deliveryTimes | object | Required delivery schedule with deliveryDays, deliveryTimeStart, and deliveryTimeStop |
followupAfter | object, optional | Delay with range (DAY, HOUR, or MINUTE) and value |
addLinkedinProfileVisitStep
Add a LinkedIn profile visit follow-up step to an existing campaign.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
parentId | string | Parent step ID |
linkedinAccountId | integer | LinkedIn account ID |
followupAfter | object, optional | Delay with range (DAY, HOUR, or MINUTE) and value |
addLinkedinConnectionRequestStep
Add a LinkedIn connection request follow-up step to an existing campaign.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
parentId | string | Parent step ID |
linkedinAccountId | integer | LinkedIn account ID |
followupAfter | object, optional | Delay with range (DAY, HOUR, or MINUTE) and value |
bodyVersions | array, optional | Connection request message strings (max 5; empty/null sends the connection request without a message) |
addLinkedinDirectMessageStep
Add a LinkedIn direct message follow-up step to an existing campaign.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
parentId | string | Parent step ID |
linkedinAccountId | integer | LinkedIn account ID |
followupAfter | object, optional | Delay with range (DAY, HOUR, or MINUTE) and value |
bodyVersions | array | Direct message strings (max 5) |
addLinkedinInMailMessageStep
Add a LinkedIn InMail message follow-up step to an existing campaign.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
parentId | string | Parent step ID |
linkedinAccountId | integer | LinkedIn account ID |
bodyVersions | array | InMail versions with subject and body |
followupAfter | object, optional | Delay with range (DAY, HOUR, or MINUTE) and value |
updateCampaignStep
Modify step delivery times and scheduling.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
stepId | string | Step ID |
payload | string | JSON string with delivery_time for each day |
updateEmailStepVersion
Update email content, subject lines, signatures and tracking settings.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
stepId | string | Step ID |
versionId | string | Version ID |
subject | string | Email subject |
message | string | Email body (HTML supported) |
signature | string | SENDER or NO_SIGNATURE |
trackOpens | boolean | Enable open tracking |
updateLinkedinStepVersion
Update LinkedIn connection request, direct message, or InMail content.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
stepId | string | Step ID |
versionId | string | Version ID |
message | string | LinkedIn message content |
subject | string, optional | InMail subject; used only for InMail steps |
deleteCampaignStep
Remove steps from campaigns.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
stepId | string | Step ID |
Prospect management
The prospectsPayload parameter is a JSON string containing an array of prospect objects. Each object supports email, status, first_name, last_name, company, website, linkedin_url, tags, title, phone, address, city, state, country, industry, and snippet1 through snippet15.
addProspectsToDatabase
Adds new prospects to your global prospect list without enrolling them in any campaign.
| Parameter | Type | Description |
|---|---|---|
prospectsPayload | string | JSON string containing an array of prospect objects |
Notes:
- Prospects are added to your account but not to any campaign
- Available for future campaign enrollment
- Useful for building a prospect database before campaign creation
addProspectsToCampaign
Bulk add prospects with full contact information and custom snippets.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
prospectsPayload | string | JSON string containing an array of prospect objects |
Note: Always check for DUPLICATE prospects in response. Use updateProspectsInCampaign for duplicates if data updates are needed.
updateProspectsInDatabase
Updates existing prospects in your global database or adds new ones if they don't exist.
| Parameter | Type | Description |
|---|---|---|
prospectsPayload | string | JSON string containing an array of prospect objects |
Notes:
- Existing prospects are updated based on email address
- New prospects are added if email doesn't exist
- Only include fields you want to update
- Updates apply globally (affects all campaigns using these prospects)
updateProspectsInCampaign
Update existing prospect data (requires explicit user request).
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
prospectsPayload | string | JSON string containing an array of prospect objects |
listProspectsInDatabase
Lists prospects from your global prospect database (not tied to any specific campaign).
| Parameter | Type | Description |
|---|---|---|
pageNumber | integer | Page number (1-based) |
Notes:
- Returns paginated results of all prospects in your account
- These prospects can be added to any campaign
- Useful for managing your overall prospect database
listProspectsInCampaign
Paginated retrieval of campaign prospects.
| Parameter | Type | Description |
|---|---|---|
campaignId | integer | Campaign ID |
pageNumber | integer | Page number (1-based) |
searchProspects
Searches for prospects that match specific criteria across your entire database.
| Parameter | Type | Description |
|---|---|---|
pageNumber | integer | Page number (1-based) |
searchCriteria | object (optional) | JSON object with search parameters |
filterCriteria | object (optional) | JSON object with additional filters |
Available search fields:
email- Email addressfirst_name- First namelast_name- Last namecompany- Company nameorganization_id- Organization IDindustry- Industrywebsite- Website URLtags- Tags (case-sensitive, without leading #)title- Job titlephone- Phone numberaddress- Street addresscity- Citystate- State/Provincecountry- Countrysnippet1throughsnippet15- Custom fields
Available filter fields:
id- Comma-separated list of prospect IDsstatus- Prospect's global status: ACTIVE, BOUNCED, REPLIED, BLACKLIST, INVALIDcampaigns_id- Comma-separated list of campaign IDs that prospects are enrolled incontacted- Whether a prospect has ever been contactedinterested- Interest level: INTERESTED, MAYBE-LATER, NOT-INTERESTED, NOT-MARKED
Notes:
- Tag searching is case-sensitive, don't use leading # when searching by tags
- Search criteria uses OR for same field, AND for different fields
- To filter OPT-OUT prospects, use "BLACKLIST" status
- Multiple filter values are comma-separated
deleteProspects
Permanently deletes prospects from your database and/or specific campaigns.
| Parameter | Type | Description |
|---|---|---|
prospectIds | string | Comma-separated list of prospect IDs to delete |
campaignIds | string (optional) | Comma-separated list of campaign IDs from which to remove prospects |
Notes:
- Without campaignIds: Deletes prospects globally from your entire database
- With campaignIds: Removes prospects only from specified campaigns
- This action is permanent and cannot be undone
- Requires explicit user confirmation before execution
- Use prospect IDs (not email addresses) obtained from list/search operations
Warning: Global deletion removes prospects from all campaigns and your database. Local deletion (with campaignIds) only removes them from specified campaigns while keeping them in your global database.
Account management
listMailboxes
Retrieve available email accounts for campaign assignment.
| Parameter | Type | Description |
|---|---|---|
filter | string | Filter to use when listing mailboxes (SMTP, IMAP, ALL) |
listLinkedinAccounts
Retrieve available LinkedIn accounts for campaign assignment.
| Parameter | Type | Description |
|---|---|---|
filter | string | Filter to use when listing accounts (AVAILABLE_FOR_CAMPAIGN, ALL) |