A trigger action is a single step that a trigger performs when it runs, such as setting a field value, creating a task, or sending an email. A trigger can have several actions, and they run one after another in the order listed. For example, a trigger that fires when a lab request is submitted could set its due date, create a task for each measurement, and email the assigned technician.
This article describes the most commonly used trigger actions, grouped by what they do. Actions are added to a trigger from its Actions section in Form Admin. To learn how to create and configure triggers and trigger sets, refer to Managing Triggers and Trigger Sets in Form Admin.
How Trigger Actions Work
- Order: Actions run in sequence. A later action can use values produced by an earlier one, such as the ID of an entity created by Create Entity.
- Target entity: By default, an action runs on the entity that fired the trigger. Use Change Target Entity to run it on a different entity, such as a related lab request or project.
- Action Constraints: Each action can have its own conditions. If the conditions are not met, that action is skipped.
- Value specs: Most action settings accept a value spec, an expression that reads field values or computes a result, so the same action can adapt to each entity it runs on.
- Nested actions: Loop, branch, and group actions contain their own list of actions, which run inside them.
Setting and Updating Values
| Action | What it does |
|---|---|
| Set Values | Sets one or more field values on the current entity or a related entity, for example copying a project name onto a lab request. |
| Set Recipe Values | Updates several parts of a recipe at once, including metadata, input values, the recipe name, the assigned spec, tags, and totals. |
| Set Recipe Outputs | Sets measurement values on recipes, including numeric, categorical, and text outputs. |
| Set Phase | Moves an entity to a specific phase in its workflow. |
| Set Tags | Replaces, adds to, or removes the tags on an entity. |
| Update Ingredient | Updates an existing ingredient’s name, category, attributes, tags, or material families. |
| Copy Set to Actual Values | Copies the set (target) values of ingredients and calculations into their actual values, to confirm the planned amounts were the ones used. |
| LLM Set Values | Uses AI to read the provided context and attached files, then fills in entity fields with the values it finds. Fields without enough information are left unchanged. |
Creating and Copying Records
| Action | What it does |
|---|---|
| Create Entity | Creates a new entity from a definition, such as a sample or a sub-request, and makes it available to later actions in the trigger. |
| Create Recipe | Creates a new experiment in a material family, optionally in a project and on the lab request that fired the trigger. |
| Copy Recipes | Copies one or more experiments, optionally into another project, with options to include notebooks and test samples. |
| Copy Entities | Copies entities and can set field values on the copies. |
| Duplicate Request | Duplicates the current lab request, optionally under a different definition or without selected fields. |
| Create Project | Creates a new project, optionally under a parent project, and can link it to the lab request that fired the trigger. |
| Create Tasks | Creates tasks on a lab request, one per measurement request or per measurement group, and can set field values on each task. |
| Create Manual Task | Creates a single task, optionally linked to recipes. |
| Create Report | Creates a new notebook or dashboard, blank or from a template, and links it to the entity that fired the trigger. |
| Create Calendar Event | Creates an event on an entity’s calendar, as a timed or all-day event, optionally repeating daily. |
| Add Outputs to Recipes | Adds outputs or whole output groups to recipes, optionally with a condition. |
| Add Recipe to Project | Adds recipes to, or removes them from, one or more projects. |
Controlling the Flow of a Trigger
These actions decide which actions run, and how many times. Each contains its own list of nested actions.
| Action | What it does |
|---|---|
| Action Group | Groups actions so they run together, optionally only when a condition is met, and can define values shared by every action in the group. |
| Branch | Checks a condition and runs its Then actions if it is true or its Else actions if it is false. |
| Branch Listing | Runs a listing query and branches on the result, for example whether any rows are returned. |
| Iterate Array | Runs its nested actions once for each item in a list, such as a list of values or IDs. Each item, and optionally its position in the list, is available to the nested actions. |
| Iterate Entities | Runs its nested actions once for each entity listed in a reference field on the current entity, for example each test sample on a lab request. Entities are processed in order of ID, and archived entities can be skipped. |
| Iterate Table | Runs its nested actions once for each row of a table field on the current entity. |
| Repeat | Runs its nested actions a set number of times. |
| Run Trigger From ID | Runs another trigger, so common steps can be built once and reused. Values can be passed to the other trigger, and it can run in the background with Asynchronous Execution. |
Batching Loop Operations
Loop actions such as Iterate Array and Iterate Entities have an Allow Batch Operations setting that makes loops over many records run faster. When the setting is checked, the loop holds the Set Values writes of its actions, including writes in nested groups, nested loops, and synchronous Run Trigger From ID actions, and saves them in one operation after the last iteration. For example, a loop that sets a field on 50 records saves all 50 values together instead of writing each one separately.
To turn batching on or off, open the loop action in the trigger editor and check or uncheck Allow Batch Operations next to Select Type.

When Allow Batch Operations is checked, a loop behaves differently in a few cases:
- Actions in the loop read field values from before the loop started, so a value written in one iteration is not visible to later iterations.
- An append or remove on a field that the loop has already written fails.
- If an iteration fails, none of the loop’s held values are written.
- Triggers fired by records created in the loop, and asynchronous Run Trigger From ID actions, do not hold their writes. If one of them writes a field that the loop also writes, the loop’s value can replace it.
- A loop inside a loop that allows batch operations also batches.
Note: Allow Batch Operations is checked by default on new loop actions. Loops in existing triggers keep their previous behavior until the setting is turned on. Leave the setting unchecked for loops that read back values written earlier in the same loop, such as a running total or a list built up one item at a time.
To learn how to add actions to a trigger, refer to Managing Triggers and Trigger Sets in Form Admin.
Running Triggers in the Background
When Asynchronous Execution is turned on for a Run Trigger From ID action, the other trigger runs in the background, so users do not wait for it to finish. Background runs can also include more actions than a standard trigger run.
The Asynchronous Timeframe setting sets the priority of a background run:
- Short Term: The default. Runs at the standard priority.
- Long Term: Runs at a lower priority. Use it for background work that can wait, so Short Term runs in the same account start first.
The timeframe is best effort. It does not guarantee when a run starts or finishes, or the order in which separate runs complete. Actions within a single trigger still run one after another.
Note: Asynchronous Timeframe is a required field. Synchronous runs ignore it, so leave it set to Short Term when Asynchronous Execution is off.
Progress notices: Asynchronous Run Trigger From ID actions and Background ML Job actions can show a progress notice with the trigger name while they run. Progress notices are off by default. An admin turns them on by setting Progress Notices to Enabled in Platform Config > Notifications Settings. Each trigger action also has its own Progress Notice setting: a notice appears only when the action’s Visibility is set to Shown, and an optional Timeout (in seconds) closes the finished notice automatically.

Notifications and Communication
| Action | What it does |
|---|---|
| Sends an email to selected users or groups at a set time, using an email template. To learn more, refer to User Subscriptions and Emails. | |
| External Email | Sends an email to recipients outside the platform. |
| Notice | Shows a message banner to the user, styled by type and optionally closed automatically after a set time. |
| Set Watcher | Adds watchers to an entity, such as a lab request or task, optionally with a role and an email notification. |
| Webhook | Sends data to an external service, using a configured webhook for the address, authentication, and retries. |
| Invite Portal User | Sends an email with a link that lets the recipient create an Uncountable account and access a portal form. Typically used for a Share via Email action on portal forms. |
Files, Notebooks, and Exports
| Action | What it does |
|---|---|
| Export Notebook | Exports a notebook as a Word document (.docx) or PDF, including digitally signed PDFs, and saves the file to an attachments field. |
| Export Runsheet | Exports a runsheet, such as a set of labels, in the background. To learn more, refer to Exporting Labels via Trigger. |
| Transform Files | Merges PDFs from a folder or attachments field into one PDF and saves it to a target folder, such as a COA/SDS packet. |
| Add Page to Notebook | Adds a page to an existing notebook, optionally from a template. |
| Refresh Notebook Cells | Refreshes every cell in a notebook so it shows the latest data. |
Formulation, Inventory, and Locking
| Action | What it does |
|---|---|
| Run Solver | Runs the Solver on recipes with set locks and an objective, and applies the results. |
| Add Inventory | Adds an inventory amount at a location for an ingredient, recipe, or experiment group. |
| Decrement Inventory | Reduces one or more inventory amounts by set quantities. |
| Modify Inventory | Changes an inventory amount’s quantity, location, or units. |
| Lock Recipes / Unlock Recipes | Locks recipes, or only their inputs, to prevent editing, or removes those locks. |
| Lock Entities / Unlock Entities | Locks other entities, such as notebooks, to prevent editing, or removes those locks. |
| Grant Entity Permissions | Gives users or user groups read or write access to an entity. |
| Share Recipes | Shares recipes with users or user groups at a selected permission level. |
Running the Solver with a Trigger
The Run Solver trigger action runs the Solver automatically, so recurring Solver setups do not need to be configured by hand each time. This is especially useful for teams whose users should not need to interact with solver settings directly.
When adding a Run Solver action to a trigger, you can configure:
- Calculation locks (A): Under Solver Aspects, add a TriggerCalculationConstraint to fix a solvable calculation to a specific target value, such as a fixed design volume.
- Workflow step locks (B): Under Solver Aspects, add a TriggerWorkflowStepConstraint to hold every ingredient in a workflow step at its current value. Because the lock applies to the step rather than to individual ingredients, it continues to work when the ingredients in that step vary between experiments.
- Solver Objective (C): Under Solver Objective, set the objective the Solver uses when the trigger runs. For example, a proportional objective keeps the ratios between the remaining ingredients as close to their current values as possible while reaching the calculation targets.

Navigation and Downloads
| Action | What it does |
|---|---|
| UI Entity Action | Opens or navigates to an entity when the trigger runs, such as an experiment created earlier in the trigger. UI Entities Action does the same for several entities of one type. |
| UI Navigation Process | Sends the user into a navigation process and applies the selected behavior there. |
| Download File | Opens a preview of a selected file, from which users can download it directly from the entity page. Each trigger supports one file. |
AI Actions
| Action | What it does |
|---|---|
| Run Agent | Starts an AI agent that works on a task in the background. The rest of the trigger continues without waiting for the agent to finish. |
| Background ML Job | Starts an AI job in the background, such as summarizing a notebook, generating ingredient information, or proposing spec constraints. |
| LLM Set Values | Fills in entity fields from context and attached files. Refer to Setting and Updating Values. |
Note: This article covers the most commonly used actions. More specialized actions are available in the Select Type list when you add an action to a trigger.