All 135+ automation node types
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.
| Node | Category | Guide |
|---|---|---|
| GoHighLevel | CRM | node setup → |
| Send Email | Send | node setup → |
| Enrol in Sequence | Send | node setup → |
| Send WhatsApp | Send | node setup → |
| Send Telegram | Send | node setup → |
| Post to Slack | Send | node setup → |
| Twilio SMS | Send | node setup → |
| Call Webhook / HTTP | Action | node setup → |
| Delay / Wait | Logic | node setup → |
| If / Else Condition | Logic | node setup → |
| Try / Catch | Logic | node setup → |
| Add Tag | Lead | node setup → |
| Move Pipeline Stage | Lead | node setup → |
| Create Task | Lead | node setup → |
| Add Lead Note | Lead | node setup → |
| Run AI Agent | AI | node setup → |
| AI Extract | AI | node setup → |
| Set Variable | Data | node setup → |
| For Each Loop | Data | node setup → |
| HTTP Scrape | Data | node setup → |
| Google Search | Data | node setup → |
| Stripe | Integration | node setup → |
| Calendly | Integration | node setup → |
| Make.com Trigger | Integration | node 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.
---
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 CRMlead.stage_changed— a lead moves to a different pipeline stageemail.sent / opened / clicked / replied— sequence email eventssequence.completed— lead finishes all stepsaudit.completed / score_dropped— SEO audit eventsmonitor.down / recovered— uptime monitoringbooking.created— someone books a slotinvoice.paid— Stripe invoice payment confirmedwhatsapp.received— incoming WhatsApp messagemanual— triggered manually from the builder or API
Config: optionally set a JSON flowStateInit object (e.g. {"cart":"","intent":""}) to pre-populate Flow State keys.
---
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).
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.
Sends a WhatsApp message from the workspace's linked Wasender account. Supports text and media.
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."
Sends to a Telegram chat via Bot API (HTML parse mode).
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.
Sends a rich embed message to a Discord channel webhook URL.
POST to a Zapier Catch Hook URL to kick off a Zap from inside a FlowMaticX automation.
Creates a new page in a Notion database.
Config: API key, database ID, title, content (supports variables).
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.
Updates (PUT) an existing cell range in Google Sheets.
Config: Same as Append but uses PUT instead of POST.
Creates a record in an Airtable base via REST API.
Config: API key, base ID, table name, fields as JSON object.
Adds a card to a Trello list.
Config: API key, API token, list ID, card name, description.
Creates or updates a HubSpot contact by email address.
Config: Access token, email, first name, last name, company, phone.
---
Advances the lead attached to the trigger event to a specific stage.
Stages: NEW → CONTACTED → REPLIED → MEETING → WON → LOST
Attaches a custom tag string to the lead record.
Writes a text note to the lead's pipeline notes column. Supports {{variable}} substitution.
Creates a follow-up task (title, due date, assignee) linked to the lead.
Creates or updates a person in Pipedrive.
Config: API key, name, email, phone, company name.
Creates a Lead record in Salesforce via REST API.
Config: instance URL, access token, first name, last name, company, email.
Creates a task in a ClickUp list.
Config: API token, list ID, task title, description.
Adds an item to a Monday.com board.
Config: API token, board ID, item name.
Creates an issue in a Linear team.
Config: API key, team ID, title, description.
Creates an issue in any Atlassian Cloud project.
Config: Jira domain, account email, API token, project key (e.g. ENG), issue summary.
---
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.
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
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.
Pauses until a specific ISO datetime stored in a {{variable}}. Useful after extracting a booking time from an inbound message.
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.
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.
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).
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.
Sends a WhatsApp or email reply and stops the flow. No outgoing edges needed.
Pauses for a configurable milliseconds to simulate "typing..." before the next WhatsApp message. Makes bot responses feel more natural.
---
Stores a value under a name. Downstream nodes reference it via {{name}}.
Use case: Extract the lead's first name: {{triggerEvent.name}} → variable firstName.
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.
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.
Normalise a string without an AI call: upper, lower, trim, slugify, json_parse.
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"}
]
Parse a JSON string stored in a variable and extract a nested field via dot notation.
Test a variable against a regular expression; outputs the first capture group.
Convert an ISO datetime to a human-readable format (e.g. "Monday 21 April at 3pm").
Choose a random item from a comma-separated list.
Increment a numeric flowState variable by 1 (or N).
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.
Convert a flowState array to a CSV string. Useful before sending it via a webhook or as a Notion page body.
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];
---
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}}"
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.
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.
Condenses a long input to N sentences.
Use case: Summarise a 2000-word email thread to 3 sentences before escalating to a human.
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.
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.
Translates a text to any target language using the AI writer.
Returns positive, neutral, or negative sentiment for a text.
Classifies an inbound message into a business-domain intent (book, cancel, complain, enquire, other).
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.
Converts a text string to an audio URL (MP3) and sends it as a WhatsApp voice message.
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.
---
These nodes are designed for the whatsapp.received trigger and the Wasender integration.
| Node | What it does |
|---|---|
| WA: Send text | Send a plain text WhatsApp message |
| WA: Send image/video | Send a media file from a URL |
| WA: Send document | Send a PDF, DOCX, etc. |
| WA: Send poll | Sends a poll with up to 12 options |
| WA: Send location | Shares a lat/lng pin |
| WA: Send reaction | React to the last message with an emoji |
| WA: Send menu | Sends a numbered list of options and stores them in menuOptions Flow State |
| WA: Classify reply | Maps a numeric reply ("1", "2") to the stored menuOptions |
| WA: Wait for reply | Pauses the flow until the user replies (stored in wa.lastReply) |
| WA: Human handoff | Notifies an admin and marks the conversation as needing human attention |
| WA: Send sticker | Sends a sticker from a URL |
| WA: Send contact | Sends a vCard contact |
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...")
---
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.
Generates "Good morning / afternoon / evening, {{name}}" based on the current server time and stores it in a variable.
---
Creates a new WordPress post via REST API.
Config: site URL, username, app password, title, content, status (draft/publish).
Updates an existing post by ID.
---
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
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)
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}})
---
| Variables | Flow State | |
|---|---|---|
| Set via | data.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 for | Simple named values | Complex agent memory, arrays |