Skip to content

Workflow Nodes

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

Full name: campaignstack_complete_node

workflows:write Idempotent

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 Idempotent

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 Idempotent

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 Idempotent

Escalate a lead to human review from a reactive-responder agent. Creates a pending_review notification in the workspace so a team member can follow up. The lead stays parked at the reactive node. Do NOT reply when escalating (they are mutually exclusive). Use this when the conversation requires human judgement (e.g. pricing questions, sensitive topics, complex objections).

NameTypeRequiredDefaultDescription
nodeIdstringYes(min length: 1)
workflowIdstringYes(min length: 1)
leadIdstringYes(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