Manage Outreach Campaigns and Sequences
This article covers every action for adding leads to email and LinkedIn outreach sequences, managing campaigns, and retrieving campaign performance data across Instantly, Smartlead, HeyReach, and HubSpot.
All actions in this article cost 0 credits per row.
Before you begin
Connect each platform before using its actions.
- Go to Settings > Integrations.
- Select the platform.
- Enter your API key or complete the OAuth flow.
Required credentials:
- Instantly: API key from Settings > Integrations > API
- HubSpot: Private app token with CRM and Sequences write scopes
- Smartlead: API key from Settings > API
- HeyReach: API key from Settings > Integrations
Instantly
Add Lead To Sequence (Instantly)
Credits: 0.
Inputs
| Field |
Required |
Notes |
| Campaign ID |
Yes |
Use List Campaigns (Instantly) to get valid IDs |
| Email |
Yes |
Lead email address |
| Website |
No |
Company website |
| First Name |
No |
|
| Last Name |
No |
|
| Company Name |
No |
|
| Phone |
No |
|
| Personalization |
No |
Custom intro line for the email sequence |
| Custom Lead Value |
No |
Float value for lead scoring |
Outputs
| Field |
Description |
id |
Lead ID assigned by Instantly |
email |
Lead email |
first_name / last_name |
Lead name |
company_name |
Company |
phone |
Phone number |
website |
Website |
personalization |
Personalization text passed in |
campaign_id |
Campaign this lead was added to |
pl_value_lead |
Custom lead value |
Use cases
- Agency: Push verified leads from waterfall runs into client campaigns.
- Founder: Scrap LinkedIn profiles, enrich emails, and feed cold campaigns.
- RevOps: Check email domains via formula before sequence enrollment.
- GTM: Map campaign IDs to SMB/enterprise segments for lead routing.
Create Lead (Instantly)
Credits: 0.
Inputs
| Field |
Required |
Notes |
| Email |
Yes |
|
| Campaign |
No |
Campaign ID to assign the lead to |
| List ID |
No |
Lead list ID |
| First Name |
No |
|
| Last Name |
No |
|
| Company Name |
No |
|
| Company Domain |
No |
e.g. acme.com |
| Phone |
No |
|
| Website |
No |
|
| Personalization |
No |
|
| Assigned To |
No |
User ID of the assigned rep |
| Organization |
No |
Workspace organization ID |
| Custom Lead Value |
No |
|
| Interest Status |
No |
Lead interest level |
| Skip If In Workspace |
No |
Boolean - skip if lead exists anywhere in workspace |
| Skip If In Campaign |
No |
Boolean - skip if lead is in the target campaign |
| Skip If In List |
No |
Boolean - skip if lead is in the target list |
| Blocklist ID |
No |
ID of blocklist to check against |
| Verify Leads for Lead Finder |
No |
Boolean |
| Verify Leads on Import |
No |
Boolean |
Outputs
| Field |
Description |
id |
Lead ID |
email |
Email address |
first_name / last_name |
Name |
company_name / company_domain |
Company details |
phone / website |
Contact details |
campaign |
Assigned campaign ID |
list_id |
Assigned list ID |
status |
Lead status |
enrichment_status |
Enrichment state |
verification_status |
Email verification result |
email_open_count |
Total opens |
email_click_count |
Total clicks |
email_reply_count |
Total replies |
is_website_visitor |
Website visitor flag |
lt_interest_status |
Long-term interest status |
esp_code |
Email service provider code |
timestamp_created / timestamp_updated |
Timestamps |
Use cases
- Agency: Skip existing leads in the workspace to prevent client duplicates.
- Founder: Import enriched lists and assign to lists for follow-up.
- RevOps: Verify leads on import to ensure only valid emails enter campaign.
- GTM: Assign territory-based leads to reps using lookup variables.
Update Lead (Instantly)
Credits: 0.
Inputs
| Field |
Required |
Notes |
| Lead ID |
Yes |
From List Leads (Instantly) or prior create |
| Email |
No |
|
| First Name |
No |
|
| Last Name |
No |
|
| Company Name |
No |
|
| Website |
No |
|
| Phone |
No |
|
| Personalization |
No |
Update the custom intro line |
| Interest Status |
No |
|
| Custom Lead Value |
No |
|
| Assigned To |
No |
Reassign to a different user |
| Custom Variables |
No |
JSON object of custom variable key-value pairs |
Outputs
| Field |
Description |
id |
Lead ID |
email |
Updated email |
first_name / last_name |
Name |
company_name / company_domain |
Company |
phone / website |
Contact data |
personalization |
Updated personalization text |
lt_interest_status |
Interest status |
status |
Current lead status |
email_open_count / email_click_count / email_reply_count |
Engagement counts |
esp_code |
Email service provider |
timestamp_created / timestamp_updated |
Timestamps |
upload_method |
How the lead was originally added |
Use cases
- Agency: Update lead personalization variables based on response feedback.
- Founder: Sync phone numbers to active leads once enrichment finds direct dials.
- RevOps: Reassign leads in bulk by updating the owner field for territory changes.
- GTM: Sync CRM custom variables (e.g. deal stage) for dynamic email templates.
List Leads (Instantly)
Credits: 0.
Inputs
| Field |
Required |
Notes |
| Limit |
No |
Number of results (default: 10) |
| Starting After |
No |
Cursor from previous page for pagination |
| Search |
No |
Search by name or email |
| Filter |
No |
Custom filter expression |
| Campaign |
No |
Filter by campaign ID |
| List ID |
No |
Filter by list ID |
| In Campaign |
No |
Boolean |
| In List |
No |
Boolean |
| Is Website Visitor |
No |
Boolean |
| Distinct Contacts |
No |
Boolean - deduplicate contacts |
| Enrichment Status |
No |
Filter by enrichment state |
| Smart View ID |
No |
Filter by saved smart view |
| IDs |
No |
Comma-separated lead IDs |
| Excluded IDs |
No |
Comma-separated lead IDs to exclude |
| Queries |
No |
Advanced query object |
Outputs
| Field |
Description |
lead_id |
Lead ID |
lead_email |
Email |
lead_first_name / lead_last_name |
Name |
company_name / company_domain |
Company |
phone / website |
Contact info |
email_click_count / email_open_count / email_reply_count |
Engagement |
esp_code |
Email provider code |
lt_interest_status |
Interest level |
status |
Lead status |
organization_id |
Workspace org |
personalization |
Personalization text |
timestamp_created / timestamp_updated |
Timestamps |
status_summary |
Aggregated status |
upload_method |
Import method |
next_starting_after |
Pagination cursor for next page |
Use cases
- Agency: Extract leads with replies from campaigns for client reporting.
- Founder: Fetch active lead IDs to target for bulk enrichment updates.
- RevOps: Export campaign open/reply counts to report on overall performance.
- GTM: Use page cursors to sync large lead pools without hitting API limits.
List Campaigns (Instantly)
Credits: 0, names, statuses, and owner details.
Inputs
| Field |
Required |
Notes |
| Limit |
No |
Number of results, 1-100 (default: 10) |
| Search Query |
No |
Filter by campaign name |
| Starting After |
No |
Pagination cursor |
Outputs
| Field |
Description |
campaign_ids |
Array of campaign IDs |
campaign_names |
Array of campaign names |
campaign_statuses |
Status codes |
campaign_organizations |
Organization IDs |
campaign_owners |
Owner user IDs |
campaign_created_timestamps |
Creation dates |
next_starting_after |
Pagination cursor |
Use cases
- Agency: Fetch active campaigns to build dynamic routing dropdowns for new leads.
- Founder: Map campaign names to product lines to organize sales outreach.
- RevOps: Review campaigns and owners to verify territory alignment.
- GTM: Route tier-1 prospects to high-value campaigns and tier-2 to nurture flows.
HubSpot
Enrol Contact in Sequence (HubSpot)
Credits: 0.
Inputs
| Field |
Required |
Notes |
| User ID |
Yes |
HubSpot user ID of the sender |
| Contact ID |
Yes |
HubSpot contact record ID |
| Sender Email |
Yes |
Email address of the enrolling user |
| Sequence ID |
Yes |
ID of the HubSpot sequence |
| Sender Alias Email |
No |
Alias sender address if the user sends from an alias |
Outputs
| Field |
Description |
id |
Enrollment ID |
toEmail |
Contact email enrolled |
enrolledAt |
Timestamp of enrollment |
updatedAt |
Last updated timestamp |
Use cases
- Agency: Enrich contact details and auto-enrol them into HubSpot outbound sequences.
- Founder: Take inbound leads that match ICP criteria and enrol in nurture sequences.
- RevOps: Limit direct sequences to contacts marked as Sales Qualified Lead (SQL).
- GTM: Map sender emails to SDR owners for personalized outbox routing at scale.
Smartlead
List Campaigns (Smartlead)
Credits: 0.
Inputs
No inputs required.
Outputs
| Field |
Description |
campaign_id |
Campaign ID |
name |
Campaign name |
status |
Active / paused / stopped |
created_at / updated_at |
Timestamps |
user_id / client_id |
Owner and client IDs |
track_settings |
Tracking configuration |
scheduler_timezone |
Sending timezone |
scheduler_days |
Active sending days |
scheduler_start_hour / scheduler_end_hour |
Sending window |
min_time_btwn_emails |
Minimum gap between sends (minutes) |
max_leads_per_day |
Daily send cap |
stop_lead_settings |
Conditions to stop sending |
unsubscribe_text |
Unsubscribe footer text |
Use cases
- Agency: Query campaign IDs dynamically to route leads without hardcoding IDs.
- Founder: Audit outbound schedules and timezones to align with target markets.
- RevOps: Export campaign setups to audit unsubscribe footers and daily sending caps.
- GTM: Route contacts using campaign name segments parsed from lookup tables.
Update Campaign Lead (Smartlead)
Credits: 0.
Inputs
| Field |
Required |
Notes |
| Campaign ID |
Yes |
|
| Lead ID |
Yes |
Database ID of the lead |
| Email |
Yes |
Must match the existing lead email |
| First Name |
No |
|
| Last Name |
No |
|
| Phone Number |
No |
|
| Company Name |
No |
|
| Website |
No |
|
| Location |
No |
City, Country format |
| LinkedIn Profile |
No |
Full LinkedIn URL |
| Company URL |
No |
Alternative company URL field |
Outputs
| Field |
Description |
ok |
true if the update succeeded |
Use cases
- Agency: Update Smartlead records with verified phone numbers or LinkedIn URLs.
- Founder: Clean up misspelled company names in bulk to normalize outbox emails.
- RevOps: Sync LinkedIn URLs to enable multi-channel email/social outbound campaigns.
- GTM: Update lead company domains dynamically if contacts change employers.
List Leads by Campaign ID (Smartlead)
Credits: 0.
Inputs
| Field |
Required |
Notes |
| Campaign ID |
Yes |
Select from your campaign list |
| Status |
No |
STARTED, INPROGRESS, COMPLETED, PAUSED, STOPPED |
| Limit |
No |
Max number of leads to return |
Outputs
| Field |
Description |
lead_ids |
Array of lead IDs |
first_names / last_names |
Names |
emails |
Email addresses |
phone_numbers |
Phone numbers |
company_names |
Company names |
linkedin_profiles |
LinkedIn URLs |
statuses |
Per-lead status |
is_unsubscribed |
Unsubscribe flags |
locations |
Lead locations |
websites |
Websites |
campaign_lead_map_ids |
Internal mapping IDs |
created_timestamps |
When each lead was added |
Use cases
- Agency: Retrieve finished campaign lists to measure overall client metrics.
- Founder: Extract active leads to verify they aren't in existing CRM deal cycles.
- RevOps: Inspect stopped leads to audit unsubscribes and bounce reasons.
- GTM: Use lead IDs to trigger backend updates on custom campaign fields.
HeyReach
List LinkedIn Accounts (HeyReach)
Credits: 0.
Inputs
| Field |
Required |
Notes |
| Offset |
No |
Items to skip for pagination (default: 0) |
| Limit |
No |
Accounts to return, max 100 (default: 10) |
Outputs
| Field |
Description |
account_ids |
LinkedIn account IDs |
first_names / last_names |
Account holder names |
email_addresses |
Login emails |
active_campaigns_counts |
Number of active campaigns per account |
is_active_statuses |
Whether the account is active |
auth_valid_statuses |
Whether authentication is valid |
is_valid_navigator_statuses |
Whether Sales Navigator is active |
total_count |
Total accounts in workspace |
Use cases
- Agency: Verify sender accounts are active and authenticated before assigning leads.
- Founder: Track campaign counts per sender profile to balance daily outreach limit.
- RevOps: Monitor authentication status to prevent campaigns from pausing silently.
- GTM: Load-balance campaign distributions across the least-loaded sender profiles.
Add Leads to Campaign (HeyReach)
Credits: 0.
Inputs
| Field |
Required |
Notes |
| Campaign ID |
Yes |
Select from your campaign list |
| LinkedIn Account ID |
Yes |
The sender LinkedIn account for this lead |
| Lead First Name |
No |
|
| Lead Last Name |
No |
|
| Lead Email Address |
No |
|
| Lead Profile URL |
No |
LinkedIn profile URL |
| Lead Location |
No |
City or region |
| Lead Summary |
No |
Headline or bio excerpt |
| Lead Company Name |
No |
|
| Lead Position |
No |
Job title |
| Lead About |
No |
Extended bio or about text |
Outputs
| Field |
Description |
Status |
success if lead was added, failed if not |
Use cases
- Agency: Scrap LinkedIn profiles and feed details to HeyReach campaigns.
- Founder: Personalize outreach using enriched bio and about fields.
- RevOps: Balance prospect routing across multiple sender accounts.
- GTM: Route VP prospects to founder profiles and managers to SDR accounts.
Get All Campaigns (HeyReach)
Credits: 0.
Inputs
| Field |
Required |
Notes |
| Offset |
No |
Pagination offset (default: 0) |
| Limit |
No |
Results to return, max 100 (default: 10) |
Outputs
| Field |
Description |
campaign_ids |
Campaign IDs |
campaign_names |
Campaign names |
| campaign_statuses | Active / paused / completed |
| campaign_creation_times | When each campaign was created |
| linkedin_user_list_names | Associated LinkedIn list names |
| progress_total_users | Total leads added to the campaign |
| progress_total_users_finished | Leads that completed the sequence |
| total_count | Total campaigns in workspace |
Use cases
- Agency: Pull active campaign IDs to route leads dynamically without hardcoding.
- Founder: Track campaign completion rates to monitor progress against goals.
- RevOps: Export completion metrics to track outbound performance by rep.
- GTM: Parse campaign names for tags to dynamically allocate new lead lists.
Get Leads from Campaign (HeyReach)
Credits: 0.
Inputs
| Field |
Required |
Notes |
| Campaign ID |
Yes |
Select from your campaign list |
| Limit |
No |
Results per page (default: 10) |
| Offset |
No |
Pagination offset (default: 0) |
Outputs
| Field |
Description |
leadId |
Lead ID |
creationTime / lastActionTime |
Activity timestamps |
leadCampaignStatus |
Status within campaign |
leadCampaignStatusMessage |
Descriptive status message |
leadConnectionStatus |
LinkedIn connection state |
leadMessageStatus |
Message delivery state |
linkedInSenderFullName / linkedInSenderId |
Who is contacting this lead |
profileFirstName / profileLastName |
Lead name |
profileHeadline |
LinkedIn headline (job title) |
profileAbout |
About section |
profileCompanyName / profileCompanyUrl |
Company |
profileEmailAddress |
Email if available |
profileConnections / profileFollowers |
Network size |
profileImageUrl |
Profile photo URL |
profileLocation |
City or region |
profilePosition |
Current position |
profileUrl |
LinkedIn profile URL |
profileLinkedinId |
Internal LinkedIn ID |
totalCount |
Total leads in this campaign |
Use cases
- Agency: Sync connected LinkedIn leads to CRM for secondary email sequences.
- Founder: Extract email addresses shared in connection replies for cold emailing.
- RevOps: Export connection/message metrics to report on response rate performance.
- GTM: Route connected leads to email sequences and unconnected leads to secondary profiles.
Troubleshooting
"Campaign not found" error in Add Lead To Sequence (Instantly)
The Campaign ID is wrong or the campaign has been deleted. Run List Campaigns (Instantly) to get current valid IDs.
Lead is added but does not enter the Instantly sequence
The campaign may be paused or the sending window has been reached. Check campaign status in your Instantly dashboard. Also confirm the email address is valid -- invalid emails are added but immediately skip out of sequences.
Enrol Contact in Sequence (HubSpot) returns 400 or 422
The contact is already enrolled in the sequence, or the sequence does not allow re-enrolment. Check the sequence settings in HubSpot under Sequences > Settings. Also verify the senderEmail matches a connected inbox in HubSpot.
HeyReach Add Leads to Campaign returns "failed"
The linkedInAccountId is not valid or the account's authentication has expired. Run List LinkedIn Accounts (HeyReach) and check auth_valid_statuses before adding leads.
Smartlead Update Campaign Lead returns ok: false
The lead_id or campaign_id does not exist, or the email does not match the existing lead record. Use List Leads by Campaign ID (Smartlead) to get correct lead_id values before running updates.