Skip to content

Workflow Nodes

Internal tools for completing, failing, and managing workflow node execution.

Full name: campaignstack_complete_node

workflows:write

Report successful completion of a workflow node for a lead. Marks the lead entry as COMPLETED, pushes the lead to the next node(s) via edges, and logs the action for audit. Returns the IDs of next nodes the lead was pushed to.

NameTypeRequiredDefaultDescription
entryIdstringYes(min length: 1)
payloadobjectNo

Full name: campaignstack_fail_node

workflows:write

Report failure of a workflow node for a lead. Marks the lead entry as FAILED with an error message. For auth_expired: reverts lead to WAITING and marks LinkedIn account as expired. For rate_limit: auto-pauses the action type with a 1-hour cooldown. Use campaignstack_complete_node for successful completions.

NameTypeRequiredDefaultDescription
entryIdstringYes(min length: 1)
errorstringYes(min length: 1)
errorTypeauth_expired | rate_limit | not_connected | genericNo

Full name: campaignstack_store_conversation

workflows:write

Store direct messages (DMs/InMails) sent or received in LinkedIn’s messaging UI in the unified inbox conversation store. ONLY for messages exchanged in a private message thread. NEVER call this for post comments, comment replies, likes, or any other on-post activity: those are public engagement, not conversations, and storing them creates fake message threads in the user’s inbox. If your task was to comment on or like a post, do not call this tool at all; report the action via campaignstack_complete_node instead. Deduplicates against existing messages (same senderProfileUrn + body within 60s = skip). Creates a new conversation record if none exists for the accountId + leadId pair. Returns the number of messages stored and skipped.

NameTypeRequiredDefaultDescription
leadIdstringYes(min length: 1)
leadSourceglobal | privateNoOptional. Leave it out unless you know which lead store the id came from: the server derives it from the leadId and ignores a value that disagrees.
accountIdstringYes(min length: 1)
threadIdstringNo
messagesobject[]Yes

Full name: campaignstack_escalate_to_human

workflows:write

Hand a lead to a human instead of acting on it. Creates a pending_review notification in the workspace and parks the lead in the review queue with your reason. Do NOT reply or post when escalating (they are mutually exclusive). Use it when the work needs human judgement (pricing questions, sensitive topics, complex objections) or when a craft tool withholds its draft and tells you to escalate. For batched jobs pass entryId from the current lead object in the input array; single-lead jobs need no ids at all.

NameTypeRequiredDefaultDescription
entryIdstringNo(min length: 1)
nodeIdstringNo(min length: 1)
workflowIdstringNo(min length: 1)
leadIdstringNo(min length: 1)
reasonstringNo

Full name: campaignstack_extract_post_engagements

content:write

Extract all engagement data (reactions, comments, reposts) from a LinkedIn post. Must be called AFTER using browser tools to click reactions count, repost count, and sorting comments to ‘Most Recent’. The extraction reads intercepted API data from the current browser session via Voyager GraphQL. Returns counts of extracted reactions, comments, and reposts.

NameTypeRequiredDefaultDescription
platformlinkedinYes
postUrlstringYes(min length: 1)
authorNamestringNo
contentSnippetstringNo