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 sent/received LinkedIn messages in the linkedinConversations table. 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 | privateNoDefaults to ‘global’. Pass ‘private’ for workspace-private leads so the conversation links to the right record.
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
postUrlstringYes(min length: 1)
authorNamestringNo
contentSnippetstringNo