Outreach
Send LinkedIn connection requests, likes, comments, follows, and InMail — gated by the safety/budget system with optional bypass.
Tools (5)
Section titled “Tools (5)”send_connection_request
Section titled “send_connection_request”Full name: campaignstack_send_connection_request
Ask CampaignStack to send one connection request from a LinkedIn account the workspace owner connected. Call this when the user has named one specific person and confirmed sending the request. platform is required (“linkedin”; connection requests are a LinkedIn-only concept, and on other networks you follow instead with campaignstack_follow_profile). Name the person with leadId, which is the supported form; profileUrl is accepted for someone already in the workspace. An optional note is capped at 300 characters by LinkedIn. The workspace’s only connected LinkedIn account is used automatically, or pass accountId (campaignstack_list_accounts). This reaches a real person. Before calling it, tell the user exactly who it goes to and read the wording back to them, and wait for an explicit yes. It goes out as soon as this call succeeds: there is no draft state and nothing to recall. One person per call. There is no bulk form, and calling this in a loop over a list is not the supported way to reach a list: put the leads in a lead list with campaignstack_add_leads_to_list and run a workflow over it with campaignstack_trigger_workflow, which paces the sends and applies the review step the workspace configured. Sending is paced by CampaignStack’s own daily and weekly limits and business hours, which are set by a human in the app and are not writable from here; see overrideOwnLimits before asking for an exception.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
platform | linkedin | Yes | — | |
profileUrl | string | No | — | |
leadId | string | No | — | (min length: 1) |
note | string | No | — | (max length: 300) |
accountId | string | No | — | (min length: 1) |
overrideOwnLimits | boolean | No | — | Tells CampaignStack to skip its OWN protective pacing for this one call: the daily budget, the weekly cap, the business-hours window, the account status check and the risk pause. These are limits CampaignStack sets to keep the account healthy. They are not LinkedIn’s controls, and nothing here touches, negotiates with or works around anything LinkedIn enforces. LinkedIn’s own measured ceiling is a separate check that is never overridable, and neither is a pause the account’s owner set. Default false, and it should stay false. Setting it true voids the safety guarantee: from that call on, CampaignStack can no longer promise the pacing that keeps the account out of trouble, and the risk of a restriction sits with the owner. Every use is recorded in the workspace audit log. Ask the owner in plain words and get an explicit yes first. A refusal from the safety system is that system working, not a fault to route around: report the reason and let the person decide, and never retry the same send with this set. |
dangerouslyBypassSafetySystem | boolean | No | — | Deprecated name for overrideOwnLimits. Use overrideOwnLimits. |
like_post
Section titled “like_post”Full name: campaignstack_like_post
Ask CampaignStack to like a lead’s most recent post from a connected LinkedIn account, as a light way to be seen before writing. Call this when the user asks to like or engage with a specific lead’s post before an outreach step. platform is required (currently “linkedin”). Name the person with leadId, which is the supported form; profileUrl is accepted for someone already in the workspace. The workspace’s only connected LinkedIn account is used automatically, or pass accountId (campaignstack_list_accounts). A like is public and puts a notification on that person’s account under the owner’s name. It does not comment; use campaignstack_comment_on_post for that. This reaches a real person. Before calling it, tell the user exactly who it goes to and read the wording back to them, and wait for an explicit yes. One person per call. There is no bulk form, and calling this in a loop over a list is not the supported way to reach a list: put the leads in a lead list with campaignstack_add_leads_to_list and run a workflow over it with campaignstack_trigger_workflow, which paces the sends and applies the review step the workspace configured. Sending is paced by CampaignStack’s own daily and weekly limits and business hours, which are set by a human in the app and are not writable from here; see overrideOwnLimits before asking for an exception.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
profileUrl | string | No | — | |
leadId | string | No | — | (min length: 1) |
accountId | string | No | — | (min length: 1) |
overrideOwnLimits | boolean | No | — | Tells CampaignStack to skip its OWN protective pacing for this one call: the daily budget, the weekly cap, the business-hours window, the account status check and the risk pause. These are limits CampaignStack sets to keep the account healthy. They are not LinkedIn’s controls, and nothing here touches, negotiates with or works around anything LinkedIn enforces. LinkedIn’s own measured ceiling is a separate check that is never overridable, and neither is a pause the account’s owner set. Default false, and it should stay false. Setting it true voids the safety guarantee: from that call on, CampaignStack can no longer promise the pacing that keeps the account out of trouble, and the risk of a restriction sits with the owner. Every use is recorded in the workspace audit log. Ask the owner in plain words and get an explicit yes first. A refusal from the safety system is that system working, not a fault to route around: report the reason and let the person decide, and never retry the same send with this set. |
dangerouslyBypassSafetySystem | boolean | No | — | Deprecated name for overrideOwnLimits. Use overrideOwnLimits. |
platform | linkedin | Yes | — |
comment_on_post
Section titled “comment_on_post”Full name: campaignstack_comment_on_post
Ask CampaignStack to post a comment on a lead’s most recent post from a connected LinkedIn account. Call this when the user has approved specific comment wording for a specific lead’s post. platform is required (currently “linkedin”). Name the person with leadId, which is the supported form; profileUrl is accepted for someone already in the workspace. commentText must be the owner’s own words or wording they approved: draft it with campaignstack_craft_comment, or park it for approval with campaignstack_submit_comment_for_review instead of posting it here. The workspace’s only connected LinkedIn account is used automatically, or pass accountId (campaignstack_list_accounts). A comment is public and stays under the owner’s name. This reaches a real person. Before calling it, tell the user exactly who it goes to and read the wording back to them, and wait for an explicit yes. It goes out as soon as this call succeeds: there is no draft state and nothing to recall. One person per call. There is no bulk form, and calling this in a loop over a list is not the supported way to reach a list: put the leads in a lead list with campaignstack_add_leads_to_list and run a workflow over it with campaignstack_trigger_workflow, which paces the sends and applies the review step the workspace configured. Sending is paced by CampaignStack’s own daily and weekly limits and business hours, which are set by a human in the app and are not writable from here; see overrideOwnLimits before asking for an exception.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
profileUrl | string | No | — | |
leadId | string | No | — | (min length: 1) |
accountId | string | No | — | (min length: 1) |
overrideOwnLimits | boolean | No | — | Tells CampaignStack to skip its OWN protective pacing for this one call: the daily budget, the weekly cap, the business-hours window, the account status check and the risk pause. These are limits CampaignStack sets to keep the account healthy. They are not LinkedIn’s controls, and nothing here touches, negotiates with or works around anything LinkedIn enforces. LinkedIn’s own measured ceiling is a separate check that is never overridable, and neither is a pause the account’s owner set. Default false, and it should stay false. Setting it true voids the safety guarantee: from that call on, CampaignStack can no longer promise the pacing that keeps the account out of trouble, and the risk of a restriction sits with the owner. Every use is recorded in the workspace audit log. Ask the owner in plain words and get an explicit yes first. A refusal from the safety system is that system working, not a fault to route around: report the reason and let the person decide, and never retry the same send with this set. |
dangerouslyBypassSafetySystem | boolean | No | — | Deprecated name for overrideOwnLimits. Use overrideOwnLimits. |
platform | linkedin | Yes | — | |
commentText | string | Yes | — | (min length: 1, max length: 1250) |
follow_profile
Section titled “follow_profile”Full name: campaignstack_follow_profile
Ask CampaignStack to follow a profile from a connected LinkedIn account, so their posts reach the owner’s feed. Call this when the user asks to follow a specific person. platform is required (currently “linkedin”). Name the person with leadId, which is the supported form; profileUrl is accepted for someone already in the workspace. The workspace’s only connected LinkedIn account is used automatically, or pass accountId (campaignstack_list_accounts). A follow is visible to that person and notifies them; it does not send a connection request, use campaignstack_send_connection_request for that. This reaches a real person. Before calling it, tell the user exactly who it goes to and read the wording back to them, and wait for an explicit yes. One person per call. There is no bulk form, and calling this in a loop over a list is not the supported way to reach a list: put the leads in a lead list with campaignstack_add_leads_to_list and run a workflow over it with campaignstack_trigger_workflow, which paces the sends and applies the review step the workspace configured. Sending is paced by CampaignStack’s own daily and weekly limits and business hours, which are set by a human in the app and are not writable from here; see overrideOwnLimits before asking for an exception.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
profileUrl | string | No | — | |
leadId | string | No | — | (min length: 1) |
accountId | string | No | — | (min length: 1) |
overrideOwnLimits | boolean | No | — | Tells CampaignStack to skip its OWN protective pacing for this one call: the daily budget, the weekly cap, the business-hours window, the account status check and the risk pause. These are limits CampaignStack sets to keep the account healthy. They are not LinkedIn’s controls, and nothing here touches, negotiates with or works around anything LinkedIn enforces. LinkedIn’s own measured ceiling is a separate check that is never overridable, and neither is a pause the account’s owner set. Default false, and it should stay false. Setting it true voids the safety guarantee: from that call on, CampaignStack can no longer promise the pacing that keeps the account out of trouble, and the risk of a restriction sits with the owner. Every use is recorded in the workspace audit log. Ask the owner in plain words and get an explicit yes first. A refusal from the safety system is that system working, not a fault to route around: report the reason and let the person decide, and never retry the same send with this set. |
dangerouslyBypassSafetySystem | boolean | No | — | Deprecated name for overrideOwnLimits. Use overrideOwnLimits. |
platform | linkedin | Yes | — |
send_inmail
Section titled “send_inmail”Full name: campaignstack_send_inmail
Ask CampaignStack to send one InMail to someone the owner is not connected to, from a connected LinkedIn account. Call this when the user has confirmed subject and body for a named person the owner is not connected to; for a connected lead use campaignstack_send_message instead. platform is required (“linkedin”; InMail is a LinkedIn-only premium product and needs Premium, Sales Navigator or Recruiter on the sending account, so a free account has a budget of zero here). Name the person with leadId, which is the supported form; profileUrl is accepted for someone already in the workspace. subject is capped at 200 characters and messageText at 1900. The workspace’s only connected LinkedIn account is used automatically, or pass accountId (campaignstack_list_accounts). This reaches a real person. Before calling it, tell the user exactly who it goes to and read the wording back to them, and wait for an explicit yes. It goes out as soon as this call succeeds: there is no draft state and nothing to recall. One person per call. There is no bulk form, and calling this in a loop over a list is not the supported way to reach a list: put the leads in a lead list with campaignstack_add_leads_to_list and run a workflow over it with campaignstack_trigger_workflow, which paces the sends and applies the review step the workspace configured. Sending is paced by CampaignStack’s own daily and weekly limits and business hours, which are set by a human in the app and are not writable from here; see overrideOwnLimits before asking for an exception.
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
profileUrl | string | No | — | |
leadId | string | No | — | (min length: 1) |
accountId | string | No | — | (min length: 1) |
overrideOwnLimits | boolean | No | — | Tells CampaignStack to skip its OWN protective pacing for this one call: the daily budget, the weekly cap, the business-hours window, the account status check and the risk pause. These are limits CampaignStack sets to keep the account healthy. They are not LinkedIn’s controls, and nothing here touches, negotiates with or works around anything LinkedIn enforces. LinkedIn’s own measured ceiling is a separate check that is never overridable, and neither is a pause the account’s owner set. Default false, and it should stay false. Setting it true voids the safety guarantee: from that call on, CampaignStack can no longer promise the pacing that keeps the account out of trouble, and the risk of a restriction sits with the owner. Every use is recorded in the workspace audit log. Ask the owner in plain words and get an explicit yes first. A refusal from the safety system is that system working, not a fault to route around: report the reason and let the person decide, and never retry the same send with this set. |
dangerouslyBypassSafetySystem | boolean | No | — | Deprecated name for overrideOwnLimits. Use overrideOwnLimits. |
platform | linkedin | Yes | — | |
subject | string | Yes | — | (min length: 1, max length: 200) |
messageText | string | Yes | — | (min length: 1, max length: 1900) |