Node reference
Generated from the node registry, so it describes the nodes this deployment actually has. Deprecated types are still listed — a saved workflow can contain one and still run it — and are marked as such.
Triggers
- Airtable Trigger
Start a workflow when a record appears in a table — or changes, if you point it at a last-modified field. Activating never replays existing rows.
AIRTABLE_TRIGGER - BambooHR New Employee
Start a workflow when a person appears in your BambooHR employee directory — the HRIS entry point for the hiring and onboarding chain. Activating never replays the people already there.
BAMBOOHR_TRIGGER - Calendar Upcoming Event
Start the workflow when an event enters the lookahead window, with its attendees.
CALENDAR_TRIGGER - Drive New File
Start the workflow for each new file in a Drive folder. Files already there when the trigger is activated are not replayed.
DRIVE_TRIGGER - Form
Start the workflow when someone submits a form hosted by AutoFlow. Fields are authored here; file fields become file references.
FORM_TRIGGER - GitHub Trigger
Start a workflow from a GitHub webhook — pushes, pull requests, issues, releases. Deliveries are rejected unless their HMAC-SHA256 signature verifies.
GITHUB_TRIGGER - Gmail New Message
Start the workflow for each new message matching a Gmail search. Messages already in the mailbox when the trigger is activated are not replayed.
GMAIL_TRIGGER - Google Form Trigger
Start the workflow when a Google Form submission arrives via its webhook URL.
GOOGLE_FORM_TRIGGER - Google Sheets New Row
Start the workflow for each new row added to a sheet. Rows already present when the trigger is activated are not replayed.
SHEETS_TRIGGER - Manual Trigger
Start the workflow by clicking Run, with optional input data.
MANUAL_TRIGGER - QuickBooks Trigger
Start the workflow when a record changes in the connected QuickBooks company. Every payload is signature-verified before anything runs.
QBO_WEBHOOK_TRIGGER - Schedule Trigger
Start the workflow on a schedule (cron).
SCHEDULE_TRIGGER - Stripe Trigger
Start the workflow when a signed Stripe webhook event arrives for this workflow.
STRIPE_TRIGGER - Telegram Trigger
Start a workflow when someone messages the bot. Deliveries are dropped unless they carry the workflow's own secret token, which Telegram echoes from setWebhook.
TELEGRAM_TRIGGER - Webhook Trigger
Start the workflow when an HTTP request arrives at this workflow's webhook URL. Accepts GET, POST, PUT, PATCH and DELETE; add a Respond to Webhook node to reply synchronously.
WEBHOOK_TRIGGER - WhatsApp Trigger (WAHA)
Start a workflow when a WhatsApp message arrives. The bot's own outbound messages are dropped, so a workflow that replies does not reply to itself.
WAHA_TRIGGER
Actions
- Airtable Create Record
Create a record in an Airtable table and store the created record.
AIRTABLE_CREATE_RECORD - Airtable Update Record
Update named fields on one record, leaving the rest alone. Type coercion is off, so a value that does not fit the column fails rather than inventing a new select option.
AIRTABLE_UPDATE - Apify Run Actor
Start an Apify actor and wait for it to finish. The wait is a durable, cancellable step, and a run this node stops waiting on is aborted rather than left billing.
APIFY_RUN - Build Orientation Session
Plan a new-hire orientation session and expose the agenda and logistics to downstream nodes.
ORIENTATION - Complete Offboarding
Emit the terminal employee.offboarded handoff once the exit checklist is closed — moves the OFFBOARDING employee to OFFBOARDED exactly once. OFFBOARDED is an end state, so a replay is a no-op and an employee who never entered offboarding returns a conflict instead of skipping the phase.
EMPLOYEE_OFFBOARDED - Creatomate Render
Render a video from a Creatomate template and store the result as a run file. The wait is a durable, cancellable step, and a render nobody is waiting on is asked to stop rather than left billing.
CREATOMATE_RENDER - Discord
Post a message to a Discord channel via webhook. Content supports templates.
DISCORD - Draft Offer Letter
Draft a candidate offer letter from template fields and expose the letter text to downstream nodes.
OFFER_LETTER - Drive Move
Move a file to another folder — how a watched folder stops reprocessing what it has already handled.
DRIVE_MOVE - Drive Upload
Upload a file from the workflow into a Drive folder.
DRIVE_UPLOAD - GitHub Create Pull Request
Open a pull request. An existing open PR for the same branches is returned rather than failing, so this is safe to re-run.
GITHUB_CREATE_PR - Gmail Send
Send mail from the connected Gmail account, with HTML and file attachments.
GMAIL_SEND - Google Sheets Append
Append rows to a Google Sheets spreadsheet and store where they landed.
GOOGLE_SHEETS_APPEND - Google Sheets Update Row
Overwrite the cells of one row — normally the row a Sheets Read returned.
SHEETS_UPDATE - Google Sheets Upsert Row
Update the row whose key column matches, or append one if none does.
SHEETS_UPSERT - HTTP Request
Call any HTTP endpoint, optionally authenticated with a stored credential. URLs support templates.
HTTP_REQUEST - HubSpot Create Contact
Create a contact in HubSpot and store the returned contact object.
HUBSPOT_CREATE_CONTACT - Jira Add Attachment
Attach a file produced earlier in the run — a PDF, an export, a screenshot — to a Jira issue.
JIRA_ADD_ATTACHMENT - Jira Create Issue
Create a Jira issue. The issue type is resolved by name against the project, and the description is converted to Atlassian Document Format, which the v3 API requires.
JIRA_CREATE_ISSUE - Jira Transition Issue
Move an issue to another status by transition name. The name is resolved against the issue's own workflow at run time, so the node keeps working across projects — unlike a hardcoded transition id.
JIRA_TRANSITION - LinkedIn Post
Publish a post, with an optional image. The image goes through LinkedIn's register-then-upload flow and is streamed from the run's file store rather than buffered.
LINKEDIN_POST - MailerLite Add Subscriber
Add a subscriber and put them in groups. MailerLite matches on email and updates rather than duplicating, so re-running is safe — but it will not resubscribe someone who opted out.
MAILERLITE_CREATE_SUBSCRIBER - Mark Employee Active
Emit the employee.active handoff as onboarding wraps up — moves the ONBOARDING (or OFFERED) employee to ACTIVE once and is a no-op on replay, so a re-run never double-transitions the record.
EMPLOYEE_ACTIVE - Notion Create Page
Add a row to a Notion database. Column values are wrapped to match the database's own schema, so you write plain strings rather than Notion's property union.
NOTION_CREATE_PAGE - Postgres Query
Run a parameterized SQL query against a PostgreSQL database and store the rows.
POSTGRES_QUERY - QuickBooks Attach File
Attach a stored file to a QuickBooks record — a supplier invoice on a bill, a receipt on an expense. Optionally include it on the copy QuickBooks emails.
QBO_ATTACH - QuickBooks Create Customer
Create a QuickBooks customer. Display names are unique per company, so pair this with a Find Customer on the branch where nothing was found.
QBO_CREATE_CUSTOMER - QuickBooks Create Estimate
Raise a QuickBooks estimate (quote) for a customer. Same line shape as an invoice; nothing posts to the ledger until it is accepted.
QBO_CREATE_ESTIMATE - QuickBooks Create Expense
Record a QuickBooks expense. QuickBooks calls this a Purchase in its API and an Expense on screen; the account ids come from the company's chart of accounts.
QBO_CREATE_EXPENSE - QuickBooks Create Invoice
Raise a QuickBooks invoice for a customer. Lines come from a JSON expression, so a sheet row or an order payload maps straight onto them.
QBO_CREATE_INVOICE - QuickBooks Create Sales Receipt
Record a QuickBooks sales receipt for money already taken — a Stripe charge, a card payment. Unlike an invoice this is paid on creation, so it needs no follow-up.
QBO_CREATE_SALES_RECEIPT - Record New Hire
Emit the employee.hired handoff for a signed candidate — creates the org Employee row as OFFERED the first time and is a no-op on replay, so a re-run never duplicates the hire.
EMPLOYEE_HIRED - Request Background Check
Submit a background check request for a candidate and expose the request reference to downstream nodes.
BACKGROUND_CHECK - Respond to Webhook
Return a response to the caller of a synchronous webhook. Status, content type, headers and body all support templates.
RESPOND_TO_WEBHOOK - Schedule Candidate
Request an interview slot for a candidate from the recruiting calendar and expose the booking link to downstream nodes.
CANDIDATE_SCHEDULE - Schedule Exit Interview
Plan an exit interview for a departing employee and expose the session details to downstream nodes.
EXIT_INTERVIEW - Send Email
Send an email through an SMTP relay and store the delivery result.
EMAIL_SEND - Shopify Create Order
Create an order with line items, customer and shipping. A retried step returns the order it already created rather than billing the customer twice.
SHOPIFY_CREATE_ORDER - SlackDeprecated
Post a message to a Slack channel via incoming webhook. Content supports templates.
SLACK - Slack Create Channel
Create a Slack channel. Names are normalised to Slack's rules first, and a name that already exists returns the existing channel rather than failing.
SLACK_CREATE_CHANNEL - Slack DM by Email
Look a person up by email and send them a direct message. The address must match their Slack profile, which is often not their work address.
SLACK_DM_BY_EMAIL - Slack Invite to Channel
Invite users to a Slack channel by user ID. Someone already in the channel is not an error, so this is safe to re-run.
SLACK_INVITE - Slack Post Message
Post a message to any Slack channel using the connected workspace. Supports Block Kit and threaded replies. Unlike an incoming webhook, the channel is chosen per run.
SLACK_POST - Start Offboarding
Emit the employee.offboarding handoff when an exit is requested — moves the ACTIVE employee to OFFBOARDING once, recording the exit date and reason, and is a no-op on replay so a re-run never double-transitions the record.
EMPLOYEE_OFFBOARDING - Start Onboarding
Emit the employee.onboarding handoff — moves the OFFERED hire to ONBOARDING once and is a no-op on replay, so a re-run never double-transitions the record.
EMPLOYEE_ONBOARDING - Stripe Create Payment Link
Create a shareable payment link for an existing price. A retried step returns the link it already made rather than a second one.
STRIPE_CREATE_PAYMENT_LINK - Stripe Find or Create Customer
Look a customer up by email and create one only if there is none. Stripe allows duplicate emails, so this is the node that stops a billing account collecting four copies of the same person.
STRIPE_FIND_OR_CREATE_CUSTOMER - Submit Benefits Enrollment
Submit a new hire's benefits plan selection and expose the enrollment record to downstream nodes.
BENEFITS_ENROLLMENT - Telegram Get File
Download a document, photo or voice note someone sent the bot and store it as a run file other nodes can attach or upload.
TELEGRAM_GET_FILE - Telegram Send Message
Send a message to a chat, channel or group. Text over Telegram's 4096-character limit is split on a line boundary rather than rejected.
TELEGRAM_SEND_MESSAGE - Upload-Post Publish
Publish media to Instagram and other platforms through Upload-Post. Per-platform results are reported individually, so a partial failure is not read as success.
UPLOAD_POST_PUBLISH - Webhook
Send a templated POST request to a webhook URL and store the delivery response.
WEBHOOK_OUT - WhatsApp Send Message (WAHA)
Send a WhatsApp message through a self-hosted WAHA instance. Phone numbers are normalised to WAHA's chat-id form, which it otherwise accepts silently and never delivers.
WAHA_SEND_MESSAGE - X Post
Publish a post to X. Length is checked the way X counts it — weighted, so emoji count double — before the call rather than after the rejection.
X_POST - YouTube Upload
Upload a video from the run's file store using YouTube's resumable protocol. The bytes are streamed, so a large video costs a buffer rather than its own size in memory.
YOUTUBE_UPLOAD
AI
- AI Chat
Send a prompt to any registered LLM provider (OpenAI, Anthropic, Gemini, Groq, DeepSeek, Ollama) and store the response, or return structured JSON for downstream nodes.
AI_LLM - AI Extract
Extract structured fields from any text using a registered LLM provider. Define the fields you want back and the model returns a clean JSON object — the document-intelligence primitive.
AI_EXTRACT - OpenAI Image
Generate an image and store it as a run file other nodes can attach, upload or publish. Cost is recorded per image in the run trace.
OPENAI_IMAGE - OpenAI-Compatible
Send a chat completion to any OpenAI-compatible endpoint (OpenAI, Groq, Ollama, DeepSeek) and store the reply.
OPENAI_COMPATIBLE_CHAT - Pollinations Image
Generate an image with no API key and no cost, and store it as a run file. Free means rate-limited and occasionally slow, so it retries rather than failing on a busy response.
POLLINATIONS_IMAGE - Retrieve Knowledge
Perform semantic similarity search over knowledge base documents and inject relevant context and citations into the workflow.
AI_RETRIEVE - Summarize Illness
Condense an employee's illness and sick-leave notes into a concise factual briefing, exposing the summary to downstream nodes.
ILLNESS_SUMMARY - Summarize Negotiation Notes
Condense a candidate's compensation and negotiation notes into a concise factual intelligence briefing, exposing the summary to downstream nodes.
NEGOTIATION_IQ_SUMMARY - Veo Generate Video
Generate a short video with Google Veo on Vertex AI and store it as a run file. Generation takes minutes, so the wait is a durable, cancellable step rather than a held worker.
VEO_GENERATE
Logic
- Approval
Ask a person to approve or reject, then continue down the matching branch. The run waits without consuming anything.
APPROVAL - Condition
Evaluate a condition and route to true or false branches.
CONDITION - Merge
Combine data from multiple upstream branches (by input port, append, or merge by key).
MERGE - Switch
Route to one of several output branches based on the first matching rule.
SWITCH - Wait
Pause the run for a fixed duration, or until a timestamp the workflow computed.
WAIT
Data
- Airtable Read Records
Read records from a table, filtered server-side with a formula. Paging is bounded and truncation is reported.
AIRTABLE_READ - Apify Get Dataset
Fetch the items an actor produced, paginated and capped. Truncation is reported, so a partial read never looks like a complete one.
APIFY_GET_DATASET - Apollo Enrich
Look up a person or a company in Apollo and return the matched record. A miss is reported as found: false rather than failing, so a list can be enriched without one unknown contact stopping the run.
APOLLO_ENRICH - Download File
Fetch a URL into file storage and pass a reference downstream. The bytes never enter the run context.
FILE_DOWNLOAD - Drive Download
Download a Drive file into file storage. Google Docs, Sheets and Slides are exported to their Office equivalents.
DRIVE_DOWNLOAD - Extract Document Text
Read the text out of a PDF, DOCX, HTML or plain-text file and pass it downstream.
EXTRACT_DOCUMENT_TEXT - GitHub List Commits
List commits on a branch, optionally since a timestamp or under a path. Useful for release notes and daily digests.
GITHUB_LIST_COMMITS - GitHub Search Pull Requests
Search pull requests with GitHub's query syntax — stale reviews, unmerged branches, PRs by author. Returns the matches with their review state.
GITHUB_SEARCH_PRS - Google Maps Search
Find places by text query and return name, address and rating — with phone and website when asked for. Every request is billed, and the field mask the node sends decides which price tier applies.
GOOGLE_MAPS_SEARCH - Google Search
Run a Custom Search query and return the results. Metered: 100 queries a day are free and every one after that is billed, so the node caps results and says when it stopped.
GOOGLE_SEARCH - Google Sheets Read
Read a range from a spreadsheet as rows, addressable by column name.
SHEETS_READ - HTML to PDF
Render templated HTML into a PDF and pass a file reference downstream. Scripts never run and remote resources are never fetched.
HTML_TO_PDF - Jira Search (JQL)
Run a JQL query and return the matching issues with their status, assignee and labels.
JIRA_SEARCH - MailerLite Find Subscriber
Look a subscriber up by email. A miss is reported as found: false rather than failing, and the subscriber's status is returned — someone who unsubscribed still exists.
MAILERLITE_FIND_SUBSCRIBER - Notion Query Database
Read rows from a Notion database with an optional filter and sort. Property values are flattened to plain strings, numbers and lists.
NOTION_QUERY_DATABASE - QuickBooks Find Customer
Look a QuickBooks customer up by display name or email. Returns found: false rather than failing when there is no match, so a find-or-create branch works.
QBO_FIND_CUSTOMER - QuickBooks Get Record
Read one QuickBooks record by type and id. Pairs with the webhook trigger, which reports what changed but not what it now says.
QBO_GET - QuickBooks Invoice PDF
Fetch a QuickBooks invoice as the PDF QuickBooks itself would email, and store it as a file reference for a later upload or attachment.
QBO_GET_INVOICE_PDF - Slack List Channels
List the workspace's channels, optionally looking for one by name. Pair with Create Channel to make a create-if-absent flow.
SLACK_LIST_CHANNELS - Stripe Get Customer
Read a customer by id, including their metadata and default payment method. A deleted customer is reported rather than treated as missing.
STRIPE_GET_CUSTOMER - Workspace Table
Read or write to a native AutoFlow workspace table.
DATA_TABLE
Transform
- Aggregate
Close a fan-out segment, collecting each item's output into { items, count, failed }.
AGGREGATE - Build Offboarding Checklist
Build a role-aware offboarding checklist and expose the structured task list to downstream nodes.
OFFBOARDING_CHECKLIST - Build Onboarding Checklist
Build a role-aware onboarding checklist and expose the structured task list to downstream nodes.
ONBOARDING_CHECKLIST - Code
Run custom JavaScript against the resolved input inside a hardened sandbox.
CODE - Dedupe
Skip items this workflow has already handled. Remembers keys between runs, scoped to this node.
DEDUPE - Filter
Keep only the items that match a typed condition. Inside a fan-out segment it drops non-matching items; outside one it filters an array.
FILTER - Score & Rank Candidates
Score a list of candidates against a weighted rubric and rank them from best to worst fit.
CANDIDATE_SCORE_RANK - Set
Map or set fields on the workflow context using expressions.
SET - Split Out
Iterate an array: run the nodes between this and its AGGREGATE once per item, with $item in scope.
SPLIT_OUT