Building Agents
Journey Builder
Action Nodes

Action Nodes

Action nodes perform side effects -- they send data out of the conversation, call external services, generate documents, and write records. There are 9 action node types. All of them support configurable error handling (stop, continue, error branch, or fallback message) and an optional retry-once for transient failures.

Send Email

Type: send_email

Sends an email to one or more recipients. All fields support variable interpolation, so you can personalize the subject, body, and recipients based on data collected earlier in the flow.

PropertyDescription
emailToRecipient email address (or comma-separated list)
emailSubjectSubject line
emailBodyEmail body content
emailCcCC recipients (optional)

When to use: Send a lead notification to your sales team after collecting contact details. Send a confirmation email to the visitor after they submit a form.

API Call

Type: api_call

Makes an HTTP request to an external API and maps response data into flow variables. This is the most flexible integration node -- use it when you need to read data back from the response.

PropertyDescription
urlThe request URL
methodHTTP method: GET, POST, or PUT
headersRequest headers (JSON string)
bodyRequest body (JSON string, for POST/PUT)
responseMappingsArray of {jsonPath, variableName} pairs to extract fields from the response
responseBodyVariableVariable name to store the full response body
responseStatusVariableVariable name to store the HTTP status code

Response mappings use JSON path expressions to pull specific fields out of the response. For example, a mapping of $.data.email to variable userEmail would extract the email field from the response and make it available as {{userEmail}} in subsequent nodes.

When to use: Fetch product availability from your inventory API. Look up a customer record before personalizing the conversation. Trigger a third-party webhook that returns a confirmation ID.

Webhook

Type: webhook

Calls an external URL with a payload. Unlike API Call, this is fire-and-forget -- the engine sends the request and moves on without waiting for or mapping the response.

PropertyDescription
webhookUrlThe target URL
webhookMethodHTTP method: POST or PUT
webhookPayloadRequest body (JSON string)
webhookHeadersRequest headers (JSON string)

When to use: Notify an external system when a conversation reaches a certain point. Log events to an analytics service. Trigger a Zapier or Make workflow without needing the response.

Generate Document

Type: generate_document

Creates a document using AI, based on the conversation context and structured section definitions. Each section has its own instruction and format, and the AI generates the content accordingly.

PropertyDescription
documentTitleTitle of the generated document
outputFormatOutput file type: docx, pdf, excel, csv, or both (docx + pdf)
documentSectionsArray of section definitions (see below)
triggerModeautomatic (generate immediately) or offer (present a download button)
offerMessageMessage shown to the user when triggerMode is offer
includeAttachmentsInclude any files the user uploaded during the conversation
includeKnowledgeBaseInclude relevant knowledge base content as context for generation
maxContextMessagesNumber of recent conversation messages to include as context

Each entry in documentSections has:

FieldDescription
titleSection heading
instructionPrompt telling the AI what to write in this section
formatparagraphs, bullets, or table
orderNumeric sort order

When to use: Generate a proposal after a discovery conversation. Create a media plan based on collected campaign requirements. Produce a summary report at the end of an advisory session.

Push Message

Type: push_message

Sends a proactive message to visitors through a Knowledge agent's widget. This lets Action agents (or flows running in the background) reach out to users rather than waiting for them to start a conversation.

PropertyDescription
targetAgentIdThe Knowledge agent whose widget will display the message
targetingWho receives it: active_conversations, specific_visitor, or all_recent
visitorIdentifierObject with type (email, visitor_id, or variable) and value -- used when targeting is specific_visitor
recentHoursTime window for all_recent targeting (e.g., visitors in the last 24 hours)
pushMessageContentThe message text (when using static mode)
pushMessageTypestatic (fixed content) or ai_generated (LLM writes the message)
pushAiPromptPrompt for the AI to generate the message (when using ai_generated mode)
deliveryimmediate (push now) or next_visit (show when the visitor next loads the page)

When to use: Re-engage visitors who abandoned a conversation. Broadcast a promotion to recent visitors. Send a personalized follow-up after an Action agent completes a background workflow.

Integration Task

Type: integration_task

Executes a task through a connected platform integration. This is the primary node for interacting with third-party platforms that have been set up in the Integrations page.

PropertyDescription
providerThe integration platform (e.g., meta_ads, google_ads, hubspot, shopify)
operationThe specific action to perform (e.g., update_budget, create_contact, sync_inventory)
paramsKey-value parameters for the operation (varies by provider and operation)
outputVariableVariable name to store the operation result

Available operations depend on which integrations are connected to the workspace. Each platform integration exposes its own set of operations.

When to use: Update a Meta Ads campaign budget after analyzing performance. Create or update a CRM contact in HubSpot. Sync product data to Shopify.

Format Notification

Type: format_notification

Formats a list of items into a structured notification message. Takes a variable containing an array of items and renders each one using a template with title, subtitle, and detail fields.

PropertyDescription
platformTarget platform or format for the notification
titleNotification title
summarySummary text shown above the item list
footerFooter text shown below the item list
itemsVariableVariable containing the array of items to format
itemTemplateTemplate object with title, subtitle, and detail fields (supports variable interpolation)
outputVariableVariable name to store the formatted notification

The formatted output is stored in the output variable and can be used by subsequent nodes -- for example, passed to a Send Email or Webhook node.

When to use: Format a daily campaign performance summary for email delivery. Render inventory alerts as a structured list. Prepare a formatted report of ad set metrics before sending to Slack.

Write to Catalog

Type: write_to_catalog

Writes or updates records in a Data Catalog. Use this to persist structured data collected during a conversation or produced by an Action agent workflow.

PropertyDescription
catalogIdThe target Data Catalog
operationcreate (new record), update (modify existing), or upsert (create or update)
fieldMappingsMap of catalog field names to values or variable references
matchFieldField used to find existing records (required for update and upsert)
matchValueValue to match against (supports variable interpolation)

For update and upsert operations, the node finds an existing record where matchField equals matchValue, then applies the field mappings. For create, it inserts a new record directly.

When to use: Store leads collected during a conversation. Update inventory counts after an order. Log action agent decisions for audit purposes.

Record KPI Snapshot

Type: record_kpi_snapshot

Records a performance metric data point. Designed for Action agents that track campaign metrics, business KPIs, or operational data over time.

PropertyDescription
snapshotConfig.providerData source platform (e.g., meta_ads, google_ads)
snapshotConfig.dashboardKeyDashboard grouping key
snapshotConfig.operationSnapshot operation type
snapshotConfig.entityTypeType of entity being measured (e.g., campaign, ad_set)
snapshotConfig.kpiNameName of the metric (e.g., spend, cpa, roas)
snapshotConfig.kpiValueVarVariable containing the current metric value
snapshotConfig.targetValueTarget value for the metric
snapshotConfig.directionWhether the metric should be above, below, or within the target
snapshotConfig.entityIdFieldField name for entity ID (batch operations)
snapshotConfig.entityNameFieldField name for entity name (batch operations)
snapshotConfig.kpiValueFieldField name for KPI value (batch operations)
snapshotConfig.campaignIdVarVariable containing the campaign ID
snapshotConfig.campaignNameVarVariable containing the campaign name
snapshotConfig.campaignsVarVariable containing a list of campaigns (batch operations)
snapshotConfig.itemsPathJSON path to items array within the campaigns variable

When to use: Log daily ad spend for trend analysis. Record conversion rates after each optimization run. Track ROAS snapshots across campaigns for the agent's performance dashboard.