Data Ops Nodes
Data ops nodes let you filter, sort, transform, query, and manipulate data as it flows through your workflow. There are 24 data ops nodes in total.
Querying and Writing
Query
Icon: Database
Pull data from any table in your database. Specify filters, sort order, and limits to get exactly the records you need.
Inputs: data-in (optional filter parameters)
Outputs: data-out (query results)
Config:
- Table: Which database table to query
- Filters: Conditions to narrow results (e.g., status equals "active")
- Sort: Which field to sort by and in which direction
- Limit: Maximum number of records to return
Example: Query all bookings for this week where status is "confirmed" and sort by date.
Write Record
Icon: PenLine
Create or update records in your database. Choose insert, update, or upsert (insert if new, update if exists).
Inputs: data-in (record data)
Outputs: data-out (the created or updated record)
Config:
- Table: Which database table to write to
- Operation: Insert, update, or upsert
- Fields: Which fields to set and their values
Example: After a booking is confirmed, create a corresponding invoice record in the database.
HTTP Request
Icon: Globe
Make HTTP requests to any external URL. Supports GET, POST, PUT, and DELETE methods.
Inputs: data-in (request parameters)
Outputs: data-out (response data), error (if request failed)
Config:
- URL: The endpoint to call
- Method: GET, POST, PUT, or DELETE
- Headers: Custom HTTP headers
- Body: Request body (for POST/PUT)
Example: Fetch weather data from an external API before scheduling an outdoor service.
Filtering and Sorting
Filter
Icon: Filter
Remove items from an array that do not match your criteria. Only matching items pass through.
Inputs: data-in (array to filter)
Outputs: data-out (filtered array)
Config:
- Expression: The filter condition (e.g.,
status == "active") - Field: Which field to evaluate
Example: From a list of all customers, filter down to only those with overdue invoices.
Sort
Icon: ArrowUpDown
Reorder an array by a specific field, either ascending or descending.
Inputs: data-in (array to sort)
Outputs: data-out (sorted array)
Config:
- Field: Which field to sort by
- Direction: Ascending (A-Z, 0-9) or descending (Z-A, 9-0)
Example: Sort a list of bookings by date so the most recent ones appear first.
Unique
Icon: Fingerprint
Remove duplicate items from an array. You can deduplicate by a specific field or by comparing entire items.
Inputs: data-in (array with potential duplicates)
Outputs: data-out (deduplicated array)
Config:
- Field: Which field to use for comparison (or whole item)
Example: After merging customer lists from two sources, remove duplicates by email address.
Transforming Data
Transform
Icon: Wand2
Apply an expression to transform your data. Can reshape objects, compute new fields, or extract specific values.
Inputs: data-in (data to transform)
Outputs: data-out (transformed data)
Config:
- Expression: The transformation to apply (e.g.,
{fullName: first + " " + last})
Example: Combine first name and last name fields into a single full name field.
Map
Icon: Repeat
Apply a transformation to each item in an array, producing a new array of the same length with transformed items.
Inputs: data-in (array to transform)
Outputs: data-out (transformed array)
Config:
- Expression: The transformation for each item
Example: Take a list of prices and apply a 10% discount to each one.
Reduce
Icon: Calculator
Collapse an array down to a single value by accumulating results. Common operations include sum, count, average, min, and max.
Inputs: data-in (array to reduce)
Outputs: data-out (single accumulated value)
Config:
- Operation: Sum, count, average, min, max, or custom expression
- Field: Which field to aggregate
Example: Calculate the total revenue from a list of payments.
Condenser
Icon: Sigma
Aggregate an array to a single value — similar to Reduce but with a simpler configuration for common aggregation operations.
Inputs: data-in (array to aggregate)
Outputs: data-out (aggregated value)
Config:
- Operation: Sum, count, average, min, max, first, last
- Field: Which field to aggregate
Example: Count the number of bookings in the current month.
Group By
Icon: Layers
Group array items by a field value, producing an object where each key contains an array of matching items.
Inputs: data-in (array to group)
Outputs: data-out (grouped object)
Config:
- Field: Which field to group by
Example: Group bookings by service type to see how many of each type were booked this week.
Flatten
Icon: Minimize2
Flatten nested arrays into a single-level array. Useful when you have arrays of arrays and need one flat list.
Inputs: data-in (nested array)
Outputs: data-out (flat array)
Config:
- Depth: How many levels to flatten (default: 1)
Example: Multiple zones each return an array of bookings. Flatten them into one combined list.
Field Operations
Pick / Omit
Icon: ListFilter
Select specific fields from an object (pick) or remove specific fields (omit). Useful for cleaning up data before passing it downstream.
Inputs: data-in (object)
Outputs: data-out (object with selected/removed fields)
Config:
- Mode: Pick (keep only listed fields) or Omit (remove listed fields)
- Fields: Which fields to pick or omit
Example: Before logging customer data, omit the phone number and address fields for privacy.
Null Check
Icon: CircleSlash
Check whether a value is null or undefined. Route data differently based on whether a field has a value.
Inputs: data-in (data to check)
Outputs: has-value (field exists and is not null), is-null (field is null/undefined)
Config:
- Field: Which field to check
- Default value: Optional value to use if the field is null
Example: Check if a customer has an email address. If they do, send an email. If not, send an SMS instead.
Variables
Set Variable
Icon: BoxSelect
Store a value in a workflow variable that persists across all nodes in the current run. Useful for accumulating state.
Inputs: data-in (passes through)
Outputs: data-out (same data, variable is now set)
Config:
- Name: Variable name
- Value: The value to store (static or from data fields)
Example: Store the customer's preferred contact method at the start of the workflow so later nodes can reference it.
Get Variable
Icon: BoxSelect
Read a workflow variable that was set by a Set Variable node earlier in the workflow.
Inputs: data-in (passes through)
Outputs: data-out (data plus the variable value)
Config:
- Name: Which variable to read
Example: Retrieve the preferred contact method stored earlier to decide whether to send an email or SMS.
String and Date Operations
String Ops
Icon: Type
Perform string operations — concatenate, split, trim, replace, change case, and more.
Inputs: data-in (data containing strings)
Outputs: data-out (data with transformed strings)
Config:
- Operation: Concat, split, trim, replace, uppercase, lowercase, template, and more
- Parameters: Operation-specific settings
Example: Convert a customer name to title case before including it in an email template.
Date Ops
Icon: Clock
Perform date operations — add or subtract time, format dates, calculate differences, and parse date strings.
Inputs: data-in (data containing dates)
Outputs: data-out (data with transformed dates)
Config:
- Operation: Add, subtract, format, diff, parse
- Parameters: Operation-specific settings (amount, unit, format string)
Example: Calculate the date 30 days from the invoice date to set the payment due date.
Comparison and Math
Compare
Icon: Scale
Compare two values using operators like equals, greater than, less than, and more. Routes data to true or false outputs.
Inputs: data-in (data to compare)
Outputs: true (comparison passed), false (comparison failed)
Config:
- Left value: The first value
- Operator: Equals, not equals, greater than, less than, contains, starts with, etc.
- Right value: The second value
Example: Check if the booking total exceeds the customer's credit limit.
Math
Icon: Sigma
Perform arithmetic operations on data fields — add, subtract, multiply, divide, and modulo.
Inputs: data-in (data with numeric fields)
Outputs: data-out (data with computed result)
Config:
- Operation: Add, subtract, multiply, divide, modulo
- Left value: First operand
- Right value: Second operand
- Output field: Where to store the result
Example: Calculate the total price by multiplying the unit price by the quantity.
Batching and Rate Limiting
Batch Process
Icon: Layers
Process large arrays in smaller chunks with progress tracking. Prevents timeouts when working with big data sets.
Inputs: data-in (large array)
Outputs: data-out (processed results), progress (batch progress updates)
Config:
- Batch size: How many items per chunk
- Delay between batches: Optional pause between chunks
Example: Send marketing emails to 5,000 customers in batches of 50, with a 1-second delay between batches.
Rate Limit
Icon: Gauge
Throttle the flow of data through the workflow. Limit how many items pass through per time window.
Inputs: data-in (data to throttle)
Outputs: data-out (data that passes the limit), limited (data that was throttled)
Config:
- Limit: Maximum items per window
- Window: Time window (per second, minute, hour)
Example: Limit API calls to an external service to 100 per minute to avoid hitting rate limits.
Validation
Validate
Icon: ShieldCheck
Validate data against rules before letting it continue. Checks field types, required fields, ranges, and patterns.
Inputs: data-in (data to validate)
Outputs: valid (data passed), invalid (data failed with error details)
Config:
- Rules: List of validation rules (required, type, min/max, regex pattern)
Example: Before creating a booking, validate that all required fields are present and the date is in the future.
Chat Memory
Chat Memory
Icon: Brain
Store and retrieve conversation context for chatbot workflows. Keeps track of what has been discussed across multiple messages.
Inputs: data-in (conversation data)
Outputs: data-out (data enriched with conversation history)
Config:
- Operation: Get (retrieve memory), set (store memory), append (add to memory), or clear (reset memory)
- TTL: How long to keep the memory before it expires
Example: Store the customer's booking ID when they mention it, so later messages can reference it without asking again.
On this page