Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.elementum.io/llms.txt

Use this file to discover all available pages before exploring further.

This reference covers every action available in the Elementum automation builder. Each section explains what the action does, how to configure it, and walks through a realistic scenario so you can see how it works in practice.
New to automations? Start with the Automation System guide to learn how triggers, conditions, and actions fit together.

Inspect Trigger and Action Outputs While Building

As you build an automation, every trigger and action lists the variables it produces in an Outputs section at the bottom of its configuration pull-out. Each entry shows the variable name (for example, textResult, result.project_name, create_record.id) and its data type (Text, Decimal, Date, and so on), with a checkbox next to each one. Use this section to:
  • Confirm available variables — Verify the exact name and type of every output before referencing it in a later step.
  • Select which outputs to expose — Toggle the checkbox next to each variable to control whether it’s surfaced to downstream actions.
  • Catch missing values early — If a variable you expect isn’t listed, the step isn’t producing it yet (a script may need an Output Schema property, an action may need to be re-tested, and so on).
Checking the Outputs section as you configure each step is the fastest way to confirm that variable names match what you expect — without having to publish and run a full automation trace.

Logic Actions

Logic actions control which path your automation takes. They let you branch based on data values, check multiple criteria, and loop through collections of records.

If / Otherwise If / Otherwise

The If action creates a decision point. You define a condition, and the actions nested beneath it only run when that condition is true. Otherwise If adds additional branches, and Otherwise catches everything that didn’t match a previous branch.

How Conditions Work

Each condition compares a value from your automation (a field on the trigger record, an output from a previous action, or a variable) against a target value using an operator. A single condition has three parts:
PartWhat it meansExample
ValueThe data you want to check — select from trigger fields, action outputs, or variablestrigger.priority
OperatorHow to compare the valueequals, does not equal, greater than, contains, is empty
TargetWhat you’re comparing against — a static value, another field, or a variable"Critical"

Combining Multiple Conditions

When a single comparison isn’t enough, add more conditions to the same If block. You connect them with AND or OR:
  • AND — Every condition must be true. Use this when you need all criteria met.
  • OR — At least one condition must be true. Use this when any one criterion is enough.
Example: Route only high-value enterprise tickets to the priority queue:
ConditionOperatorTargetConnector
customer_tierequalsEnterpriseAND
order_amountgreater than10000
Both must be true for the actions beneath this If to run.

Condition Groups

When your logic mixes AND with OR, use condition groups to control evaluation order — similar to how parentheses work in math. Without groups, the automation evaluates conditions strictly top to bottom, which can produce unexpected results. Groups let you say “evaluate these conditions together first, then combine the result with the rest.” Scenario: You want to escalate a support ticket when the customer is Enterprise tier AND the issue is either Critical priority OR has been open for more than 48 hours. Without condition groups, you’d have no way to express “Critical OR open 48+ hours” as a unit. With groups:
GroupConditionOperatorTargetConnector
customer_tierequalsEnterpriseAND
Group 1priorityequalsCriticalOR
Group 1hours_opengreater than48
This reads as: customer is Enterprise AND (priority is Critical OR hours open is greater than 48). To create a condition group in the automation builder, click Add Condition Group in the If action’s configuration panel. Drag conditions into or out of groups to restructure your logic.

Building Multi-Branch Decisions

Use Otherwise If and Otherwise to handle different outcomes in a single automation instead of building separate automations for each scenario.
An order comes in and needs different approval paths depending on the amount:
  1. If order_amount is greater than 10,000 — route to CFO for approval
  2. Otherwise If order_amount is greater than 1,000 — route to the department manager
  3. Otherwise (all remaining orders) — mark as auto-approved
Variables: Each If and Otherwise If outputs a boolean (true or false) that downstream actions can reference to check which branch ran.

Repeat for Each

Loops through a collection of records or data items and runs the same set of actions on each one. The collection typically comes from a Search Records or Find Related Records action earlier in the automation. Configuration:
FieldDescription
CollectionThe list to iterate over — select from outputs of previous actions that return multiple items
ActionsDrag actions inside the Repeat for Each block to run them on every item
Variables: Inside the loop, you have access to:
VariableDescription
itemThe current record or data item in the loop, with all its fields accessible (e.g., item.email, item.status)
indexThe current iteration number (starting from 0)
An automation runs at the end of each day to send shipping confirmations for all orders placed that day.
  1. Search Records finds all orders with status = "Ready to Ship" and created_date = today
  2. Repeat for Each iterates over the search results
  3. Inside the loop, for each order: Run Calculation computes the shipping cost, Update Record Fields sets the shipping amount and changes status to “Shipped”, and Send Email Notification sends a confirmation to the customer

Record Actions

Record actions create, update, search, and manage records and their relationships.
Creates a new record in a specified element or table, populating fields from trigger data, action outputs, or static values.Configuration:
FieldDescription
Action NameA descriptive name for this action
Element/TableWhich element or table to create the record in
Field MappingsMap fields on the new record to values — select from trigger variables, previous action outputs, or enter static values
Variables: Outputs the new record ID and all field values, accessible as create_record.id, create_record.{field_name}, etc.
When a customer sends an email to your support address, automatically create a support ticket:
  1. Email Received trigger fires
  2. Search Records finds the customer by trigger.sender_email
  3. Create Record creates a new Support Ticket with:
    • Subject → trigger.subject
    • Customer → search_records.customer
    • Description → trigger.body
    • Status → "New"
    • Source → "Email"
Modifies one or more field values on an existing record.Configuration:
FieldDescription
Action NameA descriptive name for this action
RecordWhich record to update — typically the trigger record or a record from a previous action
Field MappingsMap fields to new values from trigger data, action outputs, or static values
Variables: Outputs the updated record with its new field values.
After AI classifies a support ticket, update the ticket with the classification results:
  1. AI Classification analyzes the ticket description and returns category and confidence
  2. Update Record Fields sets:
    • Category → ai_classification.category
    • Priority → ai_classification.confidence > 0.8 ? "High" : "Normal" (via a preceding Run Calculation)
    • Classification Confidence → ai_classification.confidence
Establishes a relationship link between two records, enabling cross-record data access in views and subsequent automation steps.Configuration:
FieldDescription
Action NameA descriptive name for this action
Source RecordThe record to relate from
Target RecordThe record to relate to
RelationshipThe relationship type to create
Variables: Outputs relationship details and connected record information.When to use: After creating a new record that needs to be linked to an existing one — for example, linking a newly created project record to the customer who requested it.
Queries a table and returns records matching your criteria, making them available as variables for downstream actions.Configuration:
FieldDescription
Action NameA descriptive name for this action
Element/TableWhich element or table to search
ConditionsFilter criteria using the same condition builder as If actions — value, operator, and target
Conditions in Search Records work the same way as If conditions: pick a field, choose an operator, and set a target value. You can add multiple conditions with AND/OR connectors and use condition groups for complex queries.Variables: Outputs matching records as a collection. Use search_records.{field_name} to access the first result, or feed the collection into a Repeat for Each to process multiple matches.
When processing an incoming email, find the customer record to link with the new ticket:
  1. Search Records on the Customers element
  2. Condition: email equals trigger.sender_email
  3. If a match is found, use search_records.customer in the Create Record action to link the ticket to the customer
Initiates a configured approval workflow for a record, sending notifications to designated approvers.Configuration:
FieldDescription
Action NameA descriptive name for this action
Approval ProcessSelect an existing approval process configured in the app
RecordThe record to submit for approval
The approval process itself (approvers, stages, escalation rules) is configured separately under the app’s Approval Processes settings. This action starts that process for a specific record.Variables: Outputs the approval process ID and current status.
Changes the status of an active approval process, advancing or halting the workflow.Configuration:
FieldDescription
Action NameA descriptive name for this action
StatusThe new status to set — Approved, Rejected, or Pending
Variables: Outputs the new approval status and workflow state.
Subscribes one or more users to a record so they receive in-platform notifications when the record changes.Configuration:
FieldDescription
Action NameA descriptive name for this action
RecordThe record to add watchers to
UsersWhich users to subscribe — from a previous Search Users action, a static user, or a field on the record
When to use: When someone needs visibility into a record’s progress without being the assignee — for example, adding a department manager as a watcher on all high-priority issues.
Prevents changes to specified fields on a record, protecting data integrity after a process completes.Configuration:
FieldDescription
Action NameA descriptive name for this action
RecordThe record to lock fields on
FieldsWhich fields to lock
When to use: After an approval process completes, lock the approved values (price, terms, quantities) so they can’t be changed without going through the approval process again.
Assigns a record to a specific user or team.Configuration:
FieldDescription
Action NameA descriptive name for this action
RecordThe record to assign
AssigneeA user or team — from a Search Users result, a static value, or a field reference
When to use: After classification or routing logic determines who should handle a record. Often paired with an If action or AI Classification to route to the right team based on the record’s content.
Route support tickets to the right team based on AI classification:
  1. AI Classification categorizes the ticket as Technical, Billing, or General
  2. If ai_classification.category equals "Technical"Make Assignment to Technical Support team
  3. Otherwise If ai_classification.category equals "Billing"Make Assignment to Billing team
  4. OtherwiseMake Assignment to General Support queue
Compiles data into a formatted Excel or PDF report file that subsequent actions can reference.
Generate Report creates the file but does not save it to a record. Use Save Attachment after this action to persist the file, or include it in a Send Email Notification as an attachment.
Configuration:
FieldDescription
Action NameA descriptive name for this action
ReportSelect an existing report configured in the app
Variables:
VariableTypeDescription
generated_reportFileThe report file (Excel or PDF) for use in Save Attachment, Send Email, or other file-accepting actions
Generate and distribute a monthly performance report:
  1. Time-Based trigger fires on the first of each month
  2. Generate Report creates the Sales Performance Summary
  3. Save Attachment attaches the report to the monthly reporting record
  4. Send Email Notification sends the report to stakeholders with the file attached

Elementum Intelligence Actions

Intelligence actions use AI to analyze, classify, summarize, transform, and search your data. They accept unstructured input and return structured output that subsequent actions can use.
Passes a task to a configured AI agent, which works autonomously and returns structured or text output. This is the most flexible intelligence action — use it when the other specialized actions (Classification, Summarization, etc.) don’t cover your needs.Configuration:
FieldDescription
Action NameDescriptive name for the agent task
AI AgentSelect an existing agent or create a new one
Task DefinitionWhat the agent should accomplish — supports {{value_references}} from trigger data and previous actions
Output TypeText (free-form response) or Structured (specific fields you define)
Output Fields(Structured mode only) The fields the agent should return, with names and types
Variables:
VariableDescription
run_agent_task.successBoolean — whether the task completed
run_agent_task.error_messageError details if the task failed
run_agent_task.{custom_fields}Your defined output fields (Structured mode)
The agent runs in a headless environment with no user interaction, so the task definition must include all necessary context. Built-in retry logic (up to 3 attempts) handles cases where the agent doesn’t return output in the expected format.
For a detailed guide on using this action, see the Agent Task Automation Guide.
Reads an uploaded document and extracts structured data into fields you define, without manual parsing.Configuration:
FieldDescription
Action NameDescriptive name for this action
FileThe file to analyze — from a trigger attachment, Read File output, or file field
Output FieldsThe specific data points to extract, with field names and types
Variables: Outputs each extracted field as an individual variable.
Automatically process uploaded invoices:
  1. Attachment is Added trigger fires when a PDF is uploaded to a vendor record
  2. AI File Analysis extracts: vendor name, invoice number, line items, total amount, due date
  3. Create Record creates an Invoice record with the extracted values
  4. If total_amount is greater than 5000Start Approval Process
Cleans, normalizes, and reformats input data into a consistent format.Configuration:
FieldDescription
Action NameDescriptive name for this action
InputThe data to transform — from trigger fields, action outputs, or variables
Transformation InstructionsWhat transformation to apply
Variables: Outputs the transformed data in the specified format.When to use: When incoming data is inconsistent — addresses in different formats, phone numbers with or without country codes, company names with varying abbreviations — and you need it standardized before writing to records or sending to external systems.
Assigns a category or label to input content based on meaning and context, returning the result with a confidence score.Configuration:
FieldDescription
Action NameDescriptive name for this action
InputThe content to classify — from trigger fields, action outputs, or variables
CategoriesThe set of categories the AI should choose from
Variables: Outputs the selected category and a confidence score (0–1). Use the confidence score in a downstream If action to handle low-confidence classifications differently — for example, routing to a human reviewer when confidence is below 0.7.
Classify incoming support emails and route them:
  1. Email Received trigger fires
  2. AI Classification analyzes trigger.body against categories: Bug Report, Feature Request, Billing Question, General Inquiry
  3. If category equals "Bug Report" AND confidence is greater than 0.8Make Assignment to Engineering
  4. Otherwise If category equals "Billing Question"Make Assignment to Finance
  5. OtherwiseMake Assignment to General Support
Distills lengthy input into a concise summary.Configuration:
FieldDescription
Action NameDescriptive name for this action
InputThe content to summarize — from trigger fields, action outputs, or variables
Variables: Outputs the summary text.When to use: When a downstream action needs a brief version of long-form content — for example, generating a one-line ticket description from a multi-paragraph customer email, or creating an executive summary from a detailed report before sending it via Teams.

Communication Actions

Communication actions send notifications, messages, and updates to users inside and outside of Elementum.
Sends an in-platform notification about a record to specified users. No external email is sent — notifications appear within Elementum.Configuration:
FieldDescription
Action NameDescriptive name for this action
RecordThe record to notify about
RecipientsUsers to notify — from a Search Users result, static users, or field references
When to use: For internal status updates that don’t warrant an email — for example, notifying a team that a record is ready for review.
Sends a formatted email with dynamic content from automation variables. Supports up to 25 recipients and multiple attachment sources.Configuration:
FieldDescription
Action NameDescriptive name for this action
From Display NameThe sender name that appears to recipients
FromThe email address prefix (before @yourdomain.com)
To / BccRecipients and blind carbon copy (up to 25 total)
SubjectEmail subject line — supports {{value_references}}
Notification BodyEmail content with HTML formatting — supports {{value_references}}
Email AttachmentsOptional files to include
Email Attachments can come from three sources:
SourceDescription
RecordFiles from specific file fields on the trigger record
AttachmentsAll files from the attachments block on the trigger record
FileFiles from the workflow context — such as a generated report from an earlier action
You can combine multiple attachment sources in a single email.
Total attachment size is limited to 25MB. If attachments exceed this limit, the email will fail to send.
For transactional emails only. Marketing use may result in restrictions or loss of access.
Adds a timestamped comment to a record, creating a visible log of what the automation did.Configuration:
FieldDescription
Action NameDescriptive name for this action
RecordThe record to comment on
CommentThe comment text — supports {{value_references}}
Variables: Outputs the comment ID and timestamp.When to use: To create an audit trail on the record itself. Especially useful for logging AI decisions — for example, posting “AI classified as Bug Report with 92% confidence” so users can see why the ticket was routed a certain way.
Posts a message to a Microsoft Teams channel.Configuration:
FieldDescription
Action NameDescriptive name for this action
ChannelThe Teams channel to post to
MessageMessage content — supports {{value_references}}
Variables: Outputs message delivery status and channel information.When to use: For real-time team notifications — critical issue alerts, escalation notices, or workflow completion updates that need immediate visibility in your team’s collaboration space.
Triggers an outbound phone call from a configured AI agent. The call runs asynchronously — the workflow continues immediately without waiting for the call to complete.Configuration:
FieldDescription
Action NameDescriptive name for this action
AI AgentWhich agent will conduct the call
Phone ServicePhone service provider
Phone NumberNumber to call — from a record field, action output, or static value
Related Record(Optional) Record this call relates to, for context
Additional Context(Optional) Extra information for the AI agent
Default LanguageLanguage for the conversation
Variables: Outputs call initiation status and call ID.
The workflow does not pause for the call to complete. Use the Agent Conversation Ended trigger in a separate automation to process call outcomes like transcripts, sentiment analysis, or follow-up actions.

File Actions

File actions process documents, extract text content, and manage file storage on records.
File Size Limits: Elementum supports file uploads up to 250MB per file. Email attachments have a lower limit of 25MB due to email provider restrictions.
Extracts the text content of an uploaded file, making it available as a variable for downstream actions. Supports PDF, DOC, DOCX, TXT, CSV, and Excel formats.Configuration:
FieldDescription
Action NameDescriptive name for this action
FileThe file to read — from a trigger attachment, file field, or previous action output
Variables: Outputs the file content as text and file metadata.When to use: When you need the text content of a file for AI analysis, script processing, or conditional logic — for example, reading a contract PDF before passing its content to AI File Analysis or an Execute Script action.
Extracts text from multiple files simultaneously, returning their contents as an array without needing a Repeat for Each loop.Configuration:
FieldDescription
Action NameDescriptive name for this action
FilesThe files to read — from a trigger’s attachment collection or a file field that accepts multiple files
Variables: Outputs an array of file contents and processing results.
Saves a file to the attachments block on a specified record. Files generated or received during an automation are not persisted automatically — this action is required to keep them.
Use this action after Generate Report to attach the generated file to a record. Without this step, the report exists only as a temporary reference within the automation.
This action processes one file at a time. When an email includes multiple attachments, use a Repeat for Each action to save each one individually.
Configuration:
FieldDescription
Action NameDescriptive name for this action
FileThe file to save — from a generated report, email attachment, API response, or other source
RecordWhich record to attach the file to
Extracts files from a ZIP archive and makes the individual files available for subsequent actions.Configuration:
FieldDescription
Action NameDescriptive name for this action
FileThe ZIP file to extract
Variables: Outputs a list of extracted files.

Data Actions

Data actions perform calculations, run scripts, set variables, and invoke other automations.
Executes custom JavaScript in a secure, sandboxed environment. Your code receives named input values and returns a result object that subsequent actions can reference.Configuration:
FieldDescription
Action NameDescriptive name for this action
InputsNamed values from triggers, previous actions, or static values
CodeJavaScript that processes inputs and returns a result object. Click Execute to test.
When you add an Execute Script action, the code editor starts with a template:
/**
 * Access your input values from the `input.parameters` object
 * Example:
 *
const {
  recordType,
  id,
  title
} = input.parameters;
**/

return {};
As you add input parameters in the sidebar, they are automatically added to the example destructuring statement, showing you which variables are available.
Execution Environment:
  • Server-side, isolated sandbox — consistent behavior between testing and production
  • No access to file system, network, or external resources
  • Execution timeout: 10 seconds
  • Statement limit: 50,000 JavaScript statements
  • Console output captured (maximum 20 KB)
Built-in Utilities:
Encode and decode Base64 strings directly in your scripts.
const encoded = btoa("Hello, World!");
const decoded = atob("SGVsbG8sIFdvcmxkIQ==");

return { encoded, decoded };
Useful for preparing data for APIs that expect Base64-encoded payloads, or decoding Base64 content from external systems.
Variables:
VariableTypeDescription
resultJSONThe object returned by your JavaScript code
textResultTextJSON string representation of the result
The script must return a JavaScript object. Arrays, null, undefined, and primitive values are not valid return values. Wrap arrays in an object property if needed.
Output Schema:Execute Script includes a built-in schema editor (similar to a JSON File Reader) that describes the shape of the object your script returns. Defining the schema is what makes individual properties available as value references in downstream actions — without it, downstream steps can’t see the structure of result.Open the Outputs panel on the right side of the Script Configuration pull-out and select the Schema tab to manage it.
FieldDescription
Property nameThe key your script returns in the result object (for example, project_name, version)
TypeThe data type for that property — Text (String), Number, Boolean, Date, Object, or Array
Add PropertyAdd a new top-level property to the schema. Nested objects can be expanded to define their own properties.
After running your script with Execute, switch to the Result tab to see the actual returned values, then update the schema to match. Add a property for every key your script returns that you want a later action (Update Record Fields, If, Send API Request, etc.) to reference.
Whenever you change what your script returns — adding, renaming, or removing a key — update the Output Schema to match. Downstream actions reference these properties by name, so a stale schema will silently break value references.
Calculate tiered discounts for an order:
const orders = input.parameters.orderData;
const discountTier = input.parameters.customerTier;

const discountRates = {
  "Enterprise": 0.20,
  "Professional": 0.10,
  "Standard": 0.05
};

const discount = discountRates[discountTier] || 0;
const subtotal = orders.reduce((sum, order) => sum + order.amount, 0);
const discountAmount = subtotal * discount;

return {
  subtotal: subtotal,
  discountPercent: discount * 100,
  discountAmount: discountAmount,
  total: subtotal - discountAmount,
  orderCount: orders.length
};
Evaluates a mathematical or logical expression using values from triggers or previous actions.Configuration:
FieldDescription
Action NameDescriptive name for this action
ExpressionThe calculation to evaluate — supports standard math operators and value references
Variables: Outputs the calculated value.When to use: For straightforward math — totaling order amounts, computing tax, determining percentages. For anything more complex (conditionals, loops, string operations), use Execute Script instead.
Stores a value under a named variable that any subsequent action can reference.Configuration:
FieldDescription
Action NameDescriptive name for this action
Variable NameThe name to store the value under
ValueThe value to store — from trigger data, action outputs, or a static value
When to use: When you need to reference the same computed value in multiple downstream actions, or when you want to give a descriptive name to a value for readability. For example, storing the result of a calculation as total_with_tax so it’s clear what the value represents when used later.
Invokes a separate automation as a step in the current workflow, enabling reuse of shared logic.Configuration:
FieldDescription
Action NameDescriptive name for this action
AutomationSelect the automation to invoke
Variables: Outputs the invoked automation’s execution status.When to use: When the same sequence of actions is needed in multiple automations — for example, a “Notify Stakeholders” automation that sends Teams messages and emails. Instead of duplicating those steps everywhere, build it once and call it with Run Automation.

User Actions

User actions find users and user groups for assignments and notifications.
Queries the user directory and returns matching users.Configuration:
FieldDescription
Action NameDescriptive name for this action
ConditionsFilter criteria — department, role, name, email, or other user attributes
Variables:
VariableTypeDescription
usersUser (array)All users matching the criteria
userUserThe first matching user (convenient for single-user lookups)
countNumberTotal matching users
Each user has sub-properties: user.id, user.name, user.email.
To process multiple users from the users array, use a Repeat for Each action. Inside the loop, each item has item.id, item.name, and item.email.
Queries the user group directory and returns matching groups.Configuration:
FieldDescription
Action NameDescriptive name for this action
ConditionsFilter criteria — group name or attributes
Variables: Outputs matching user groups and their member details.When to use: When you need to assign a record to a team rather than a specific person, or when routing decisions depend on group membership.

External Actions

External actions connect your automations to third-party systems.
Sends an HTTP request to any REST API and returns the response for downstream actions.Configuration:
FieldDescription
Action NameDescriptive name for this action
MethodGET, POST, PUT, or DELETE
URLThe API endpoint — supports {{value_references}}
HeadersRequest headers (key-value pairs)
BodyRequest body for POST/PUT — supports {{value_references}}
AuthorizationAuthentication method (see below)
Authorization options:
TypeDescription
No AuthNo authorization header
Basic AuthUsername and password, sent as Base64-encoded Authorization header. Credentials encrypted at rest.
Bearer TokenStatic token (encrypted at rest) or dynamic reference from a previous action output
OAuthClient Credentials flow — provide OAuth URL, Client ID, and Client Secret. Tokens are cached and refreshed automatically.
OAuth Configuration:
FieldDescription
OAuth URLThe token endpoint URL
Client IDYour OAuth client identifier (encrypted at rest)
Client SecretYour OAuth client secret (encrypted at rest)
Request TypeHow credentials are sent — HTTP Basic (Authorization header) or Form URL Encoded (request body)
Custom HeadersAdditional headers for the token request (optional)
Variables:
VariableTypeDescription
responseJSONParsed JSON response body
successBooleanWhether the request succeeded
textResponseTextRaw text response body
statusCodeNumberHTTP status code (200, 404, 500, etc.)
fileFileDownloaded file (when response type is FILE)
Check inventory before processing an order:
  1. Record is Created trigger fires for a new order
  2. Send API Request sends a GET to the inventory system with the product IDs from the order
  3. If send_api_request.success equals true AND response.in_stock equals true → continue processing
  4. OtherwiseUpdate Record Fields sets status to “Backordered” and Send Email Notification alerts the customer
Invokes a pre-built custom function with input parameters for specialized processing.Configuration:
FieldDescription
Action NameDescriptive name for this action
FunctionSelect the custom function to invoke
InputsInput parameters for the function
Variables: Outputs the function result and any computed values.When to use: For specialized business logic or integrations that aren’t covered by built-in actions — custom pricing algorithms, proprietary system integrations, or reusable processing routines.

For design principles, performance strategies, and proven patterns, see Automation Best Practices. For trigger configuration and use cases, see the Automation Triggers Reference.