Automations

All 135+ automation node types

10 min readautomation-nodes

Complete reference for every trigger, send, CRM, logic, data, AI, WhatsApp and integration node in the visual builder. Each node has its own detailed setup guide.

FlowMaticX ships 135+ node types across 9 categories. Every node card has a coloured accent in the builder so flows are readable at a glance. Drag from the left library panel and connect handles to build workflows.

> Detailed setup guides — each node below links to its own full reference page with field tables, step-by-step setup, example configs, and tips.

Quick links — individual node guides
NodeCategoryGuide
GoHighLevelCRMnode setup →
Send EmailSendnode setup →
Enrol in SequenceSendnode setup →
Send WhatsAppSendnode setup →
Send TelegramSendnode setup →
Post to SlackSendnode setup →
Twilio SMSSendnode setup →
Call Webhook / HTTPActionnode setup →
Delay / WaitLogicnode setup →
If / Else ConditionLogicnode setup →
Try / CatchLogicnode setup →
Add TagLeadnode setup →
Move Pipeline StageLeadnode setup →
Create TaskLeadnode setup →
Add Lead NoteLeadnode setup →
Run AI AgentAInode setup →
AI ExtractAInode setup →
Set VariableDatanode setup →
For Each LoopDatanode setup →
HTTP ScrapeDatanode setup →
Google SearchDatanode setup →
StripeIntegrationnode setup →
CalendlyIntegrationnode setup →
Make.com TriggerIntegrationnode setup →

---

FlowMaticX ships 135+ node types across 9 categories. Every node card has a coloured accent in the builder so flows are readable at a glance. Drag from the left library panel and connect handles to build workflows.

---

🟠 Trigger (entry node)

Every automation has exactly one Trigger node — it's the entry point placed automatically when you create a new automation. The trigger type is fixed when you create the automation and cannot be changed.

Available trigger events:

  • lead.created — a new lead lands in the CRM
  • lead.stage_changed — a lead moves to a different pipeline stage
  • email.sent / opened / clicked / replied — sequence email events
  • sequence.completed — lead finishes all steps
  • audit.completed / score_dropped — SEO audit events
  • monitor.down / recovered — uptime monitoring
  • booking.created — someone books a slot
  • invoice.paid — Stripe invoice payment confirmed
  • whatsapp.received — incoming WhatsApp message
  • manual — triggered manually from the builder or API

Config: optionally set a JSON flowStateInit object (e.g. {"cart":"","intent":""}) to pre-populate Flow State keys.

---

🔵 Send nodes
Send email

Ships an email from any connected mailbox. Supports {{variable}} merge tags on To, Subject, and Body.

Use case: Welcome email 5 minutes after a lead is created; follow-up after a booking.

Config fields: Mailbox (dropdown), To address, Subject, Body (supports variables).

Enrol in sequence

Drops a lead into an existing email sequence immediately.

Use case: After a lead submits a chatbot form, enrol them in a nurture sequence automatically.

Send WhatsApp

Sends a WhatsApp message from the workspace's linked Wasender account. Supports text and media.

Post to Slack

POSTs a message to any Slack Incoming Webhook URL. Supports {{variable}} in the message body.

Use case: "New reply from {{lead.name}} at {{company}} — check your inbox."

Send Telegram message

Sends to a Telegram chat via Bot API (HTML parse mode).

Call webhook

Makes an HTTP request (POST/GET/PUT/DELETE) to any URL. Attach the trigger payload as JSON body.

Use case: Hit a Zapier webhook, update an external CRM, trigger an n8n workflow.

Discord webhook

Sends a rich embed message to a Discord channel webhook URL.

Zapier webhook

POST to a Zapier Catch Hook URL to kick off a Zap from inside a FlowMaticX automation.

Notion: Create page

Creates a new page in a Notion database.

Config: API key, database ID, title, content (supports variables).

Google Sheets: Append row

Appends a new row to a Google Sheet using the Sheets API v4.

Config: OAuth access token, spreadsheet ID, sheet range (e.g. Sheet1!A:D), values as JSON 2D array.

Google Sheets: Update row

Updates (PUT) an existing cell range in Google Sheets.

Config: Same as Append but uses PUT instead of POST.

Airtable: Create record

Creates a record in an Airtable base via REST API.

Config: API key, base ID, table name, fields as JSON object.

Trello: Create card

Adds a card to a Trello list.

Config: API key, API token, list ID, card name, description.

HubSpot: Upsert contact

Creates or updates a HubSpot contact by email address.

Config: Access token, email, first name, last name, company, phone.

---

🟣 CRM nodes
Move pipeline stage

Advances the lead attached to the trigger event to a specific stage.

Stages: NEW → CONTACTED → REPLIED → MEETING → WON → LOST

Add tag to lead

Attaches a custom tag string to the lead record.

Add note to lead

Writes a text note to the lead's pipeline notes column. Supports {{variable}} substitution.

Create task

Creates a follow-up task (title, due date, assignee) linked to the lead.

Pipedrive: Add contact

Creates or updates a person in Pipedrive.

Config: API key, name, email, phone, company name.

Salesforce: Create lead

Creates a Lead record in Salesforce via REST API.

Config: instance URL, access token, first name, last name, company, email.

ClickUp: Create task

Creates a task in a ClickUp list.

Config: API token, list ID, task title, description.

Monday.com: Add item

Adds an item to a Monday.com board.

Config: API token, board ID, item name.

Linear: Create issue

Creates an issue in a Linear team.

Config: API key, team ID, title, description.

Jira: Create issue

Creates an issue in any Atlassian Cloud project.

Config: Jira domain, account email, API token, project key (e.g. ENG), issue summary.

---

🟡 Logic nodes
If / else branch

Compares a field or variable to a value. Two outputs: true and false.

Operators: equals, notequals, contains, greaterthan, less_than

Use case: Route pricing enquiries to a human; reply to support tickets with the AI.

Switch (multi-branch)

n8n-style Switch node. Set an inputVar (variable name to test) and a JSON cases array. Routes to the first matching case handle or default if none match.

Config:

  • inputVar — the variable/flowState key to compare (e.g. choice, intent)
  • cases — JSON array: [{"value":"pizza","label":"case1"},{"value":"burger","label":"case2"}]

Use case: After an AI classify node, route pricing, support, and partnership intents to different reply nodes.

Trigger (whatsapp.received) → ai.classify (labels: pricing,support,booking,other) → logic.switch (inputVar: label) case1 (pricing) → wa.send_text ("Here's our pricing...") case2 (support) → wa.human_handoff case3 (booking) → action.send_email (booking link) default → ai.generate_text → wa.send_text

Wait (fixed delay)

Pauses the run for a set number of seconds (capped at 24 h per node in-process).

Use case: Wait 5 minutes before sending a follow-up so it doesn't look automated.

Delay until datetime

Pauses until a specific ISO datetime stored in a {{variable}}. Useful after extracting a booking time from an inbound message.

Random split (A/B)

Picks one of 2–4 branches at random with configurable weights.

Use case: A/B test two different welcome email versions to see which gets more replies.

Loop

Jumps back to a named node ID (cycle) with a configurable max-count guard. Prevents infinite loops.

Use case: Retry a webhook call up to 3 times if it fails.

Iterate array

For-each loop — executes the downstream nodes once per item in a Flow State array.

Config: arrayKey (the flowState key that holds the array), itemKey (written to flowState each iteration).

Human approval (pause)

Pauses the automation and emits a webhook/notification. The run resumes when an admin approves or rejects via the API.

Use case: High-value lead enquiry — pause, notify the sales team on Slack, only send the personalised email after a human approves it.

Direct reply (terminal)

Sends a WhatsApp or email reply and stops the flow. No outgoing edges needed.

WA: Typing delay

Pauses for a configurable milliseconds to simulate "typing..." before the next WhatsApp message. Makes bot responses feel more natural.

---

🟢 Data nodes
Set variable

Stores a value under a name. Downstream nodes reference it via {{name}}.

Use case: Extract the lead's first name: {{triggerEvent.name}} → variable firstName.

HTTP request

Fetches JSON from any external API and stores the response under a variable.

Config: Method, URL, headers JSON, body JSON, variable to store response.

Use case: Look up a product price from your e-commerce API and include it in the WhatsApp reply.

Filter (gate)

Single-output version of If/Else. Stops the flow unless the predicate is met.

Use case: Only send the upsell email if the lead's company size > 50.

Transform string

Normalise a string without an AI call: upper, lower, trim, slugify, json_parse.

Lookup table

Match an input value against a static key→value table and output the matching value.

Use case: Map a numeric menu selection ("1") to a human label ("Margherita pizza") before passing it to a WhatsApp reply.

json table: [ {"key": "1", "value": "Margherita pizza — £12"}, {"key": "2", "value": "Pepperoni — £13"} ]

JSON parse

Parse a JSON string stored in a variable and extract a nested field via dot notation.

Regex match

Test a variable against a regular expression; outputs the first capture group.

Format date

Convert an ISO datetime to a human-readable format (e.g. "Monday 21 April at 3pm").

Pick random

Choose a random item from a comma-separated list.

Increment counter

Increment a numeric flowState variable by 1 (or N).

MySQL/Postgres query

Execute a parameterised SQL query against any MySQL or Postgres server.

Config: host, port, user, password, database, query string (use ? placeholders), params JSON array.

Use case: Look up a customer's order history before replying to a WhatsApp enquiry.

CSV export

Convert a flowState array to a CSV string. Useful before sending it via a webhook or as a Notion page body.

Code (sandboxed JS)

Write arbitrary JavaScript that runs inside a Node.js vm sandbox. Has access to flowState, variables, and triggerEvent. Return data via result.

js // Example: extract domain from email result = variables.email.split('@')[1];

---

🌸 AI nodes
AI generate text

Runs a Claude / GPT prompt and stores the response. Supports {{variable}} in the prompt.

Use case: "Write a friendly 2-sentence reply to this WhatsApp message: {{triggerEvent.message}}"

AI classify

Forces the AI to pick exactly ONE label from a comma-separated list.

Use case: Classify inbound enquiry as pricing, support, booking, or spam — then route via logic.switch.

AI extract

Pulls structured JSON from an unstructured text blob. Supply field names; get back typed values.

Use case: Extract {name, email, budget, timeline} from a long inbound form submission.

AI summarise

Condenses a long input to N sentences.

Use case: Summarise a 2000-word email thread to 3 sentences before escalating to a human.

AI Agent (with memory)

A long-running LLM agent that can read and write Flow State as memory across turns. Supports configurable tools and max iteration count.

Use case: WhatsApp booking assistant that remembers the user said "I want pizza" earlier in the conversation.

AI detect language

Detects the language of an input text (returns ISO code, e.g. en, ar, fr).

Use case: Before sending a WhatsApp reply, detect the customer's language and branch to the right localised response.

AI translate

Translates a text to any target language using the AI writer.

AI sentiment

Returns positive, neutral, or negative sentiment for a text.

AI intent

Classifies an inbound message into a business-domain intent (book, cancel, complain, enquire, other).

AI transcribe voice

Transcribes a WhatsApp voice note URL to text using a speech-to-text API.

Use case: Customer sends a voice note → transcribe → classify intent → reply in text or voice.

AI text to speech

Converts a text string to an audio URL (MP3) and sends it as a WhatsApp voice message.

Multi-provider LLM node

Routes a prompt to Claude, GPT-4o, or Gemini based on a provider dropdown. Useful for cost-optimised routing: use Haiku for simple tasks, Sonnet for complex ones.

---

🩵 WhatsApp-specific nodes

These nodes are designed for the whatsapp.received trigger and the Wasender integration.

NodeWhat it does
WA: Send textSend a plain text WhatsApp message
WA: Send image/videoSend a media file from a URL
WA: Send documentSend a PDF, DOCX, etc.
WA: Send pollSends a poll with up to 12 options
WA: Send locationShares a lat/lng pin
WA: Send reactionReact to the last message with an emoji
WA: Send menuSends a numbered list of options and stores them in menuOptions Flow State
WA: Classify replyMaps a numeric reply ("1", "2") to the stored menuOptions
WA: Wait for replyPauses the flow until the user replies (stored in wa.lastReply)
WA: Human handoffNotifies an admin and marks the conversation as needing human attention
WA: Send stickerSends a sticker from a URL
WA: Send contactSends a vCard contact
WhatsApp restaurant bot pattern

whatsapp.received → time.business_hours (open 9–18) open → wa.send_menu (Choose: 1 Pizza, 2 Burger, 3 Salad) → wa.classify_reply (maps "1" → "Pizza") → data.lookup_table (Pizza → "Margherita £12, Pepperoni £13") → ai.generate_text ("Recommend from: {{result}}") → wa.send_text closed → wa.send_text ("We're closed. Order online at...")

---

🕐 Time nodes
Business hours branch

Two outputs: open and closed. Configure open/close hour (0–23 UTC).

Use case: Route WhatsApp messages to the bot during business hours and to a "we're closed" message at night.

Time-based greeting

Generates "Good morning / afternoon / evening, {{name}}" based on the current server time and stores it in a variable.

---

📝 WordPress nodes
WP: Create post

Creates a new WordPress post via REST API.

Config: site URL, username, app password, title, content, status (draft/publish).

WP: Update post

Updates an existing post by ID.

---

Node chaining patterns
Pattern 1: Smart WhatsApp auto-reply

whatsapp.received → ai.classify (pricing / support / booking / other) → logic.switch (inputVar: label) pricing → data.http_request (fetch pricing page) → ai.generate_text (summarise pricing) → wa.send_text support → wa.human_handoff (notify admin) booking → action.send_email (booking link) default → ai.generate_text (general reply) → wa.send_text

Pattern 2: Lead scoring and CRM routing

lead.created → ai.extract (fields: budget, timeline, company_size) → logic.if (budget > 5000) true → action.move_pipeline_stage (MEETING) → action.create_task (title: "Call {{name}}") → action.send_slack (notify sales) false → action.send_sequence (nurture)

Pattern 3: Voice note to text reply

whatsapp.received → ai.transcribe_voice (input: {{triggerEvent.audioUrl}}) → ai.classify (labels: order, complaint, question) → ai.generate_text (reply to: {{transcription}}) → ai.text_to_speech (input: {{reply}}) → wa.send_media (url: {{audioUrl}})

---

Flow State vs Variables
VariablesFlow State
Set viadata.set_variable_stateKey config on any node
Read via{{varName}} in templates{{$flow.state.key}}
Persist across loop
Initialised from trigger✅ (flowStateInit on Trigger node)
Best forSimple named valuesComplex agent memory, arrays