Triggers are the core unit of user-definable logic in the Tulip system. Triggers wait for events to fire then they check various values and compare them inside clauses to determine whether to perform actions. This document describes triggers as they relate to Apps; Refer to Machine Triggers for triggers as they relate to machines.


EventThe event that triggers the execution of logic (i.e. 'When' in the App Editor). See below for possible events.
ClausesThe conditions that control the execution of logic (i.e. 'If', 'If/Else', 'Then'). See below for more details.
ValuesExisting data inside the Tulip system such as 'Part Count' or 'Order Number'. See below for possible value types.
ActionsWhat the trigger does. Many actions are possible in the Tulip system. See below for possible actions.


An event can be triggered from multiple sources. Possible sources and examples below:

Trigger EventDescription
On Step EnterA new step has been displayed to the user
TimersRepeated at some interval, e.g. every 30 seconds
Machines and DevicesA signal has been received from a device or machine
On Step ExitThe user is navigating away from a step
App StartedRun once when the App starts before other logic
App CompletedRun each time the App is completed
App CancelledRun if the App is cancelled
Button is PressedA user has pressed a button object in the App
A Row is SelectedA user has selected a row in a table widget in the App


Clauses allow users to define a series of boolean logic expressions (if/then statements) that must all evaluate to true before a given action is performed in response to a trigger event. A user can define a series of comparisons and then decide to execute a number of actions if one of the statements evaluates to true of if all of the statements evaluate to true.


Values can be any data-store that is maintained in the context of an App execution. Values can come from a number of sources, including:

  • Table - Checks if a specified Tulip Table has or does not have a record by ID.
  • Table Record - A record placeholder holding the value of an entry in a Tulip Table. See Record Placeholder
  • Table Aggregations - The result of aggregating a field in a Table (e.g. sum, average). See Table Aggregation
  • Expression - An expression defined via the expression editor. See Expression Editor
  • Machine Activity Field - checks the up/down of a given machine. See Machine Type
  • Machine - Compares two specified machines. See Machine
  • Last Machine Output - Evaluates the last output of a specified machine and attribute. Machine can be set statically, dynamically by station, or dynamically by machine variable.
  • Users - Values associated with a given Tulip user.
  • Static Value - Can be set to any unchanging value.
  • Station - Compares two specified stations.
  • App Info - Set of information about the App itself. The default App Info fields include:
    • Logged In User: Select from a list of Tulip users
    • Logged In User/Badge ID: The badge ID of the logged-in user
    • Logged In User/Name: The name of the logged-in user
    • Time Elapsed on Step: The total amount of time spent on a specific step
    • Time Elapsed on Current Step: The total amount of time spent on the current step
    • Time Elapsed on App: The total amount of time spent in the app during this runtime
    • App Name: The name of the app
    • App Version: The current version of the app
    • Station Name: The name of the station where the app is running
    • Step Name: The name of the current step
    • Step Group Name: The name of the current step group
    • Shift Name: The name of the current shift, as defined in the Schedules tool
    • Current Date And Time: The date/time when the app was started
    • Target Cycle Time For Current Step: The specified expected cycle time for the step that the operator is viewing
    • Target Cycle Time for App: The specified cycle time for the whole app
  • Variable - A named value held in the given App context. Each variable has a type, see variables


There are two categories of actions that triggers can cause: transition actions and regular actions. Transitions are changes to the flow state of the App. Transitions can occur by changing the current step, canceling the current App (resetting completion data) or completing the App. In a trigger there can only be one transition per action section. Once a transition has been executed by the App, any triggers for that same event will not fire. For example, if a user defines two separate triggers for a barcode scan and they both contain a transition, only the first to execute will be run.

Available transition actions:

  1. Go to Step - Users can enter the step name or select next or previous as defined in the step list panel.
  2. Go To Step by Name - User can use a variable value to determine the next step, rather than a predefined value.
  3. Go To Next Step Group - Navigate to the next Step Group in the order listed in the App Editor.
  4. Cancel App execution - current App context will be cleared and completion data will be reset.
  5. Complete App execution - current App context and execution state will be persisted. See completion.
  6. Change App - The ‘cancel App’ and ‘complete App’ actions both have an option to change Apps. If this action is selected the system will route to the App selected in the trigger. It will open the App to the version assigned at the station. If there is no assignment of the App at the station, then it will open the most recently published. If there is no published version then the system will error. The destination has the following options:
  • Logout Current User: Return to the operator login screen in the Player
  • Change to App: Change to the first step of a different app
  • Change To Step: Change to a specific step in a different app
  • Go To Splash Screen: Return to the introductory screen of the app, which requires an operator to press "Begin" before reaching the first step.
  • Change to App by Name: Dynamically define the next app within the context of the current app and go to first step of that app
  • Go To Step By Name: Go to a dynamically defined step within the same app after completion

Available regular actions:

  1. App
    • Save All App Data Saves the current execution state of an app as a completion. Saves data only - does not clear/reset variables or Table Placeholders and does not restart the app.
  2. Arrays
    • Clear Array Clears the values stored in an array value.
    • Concatenate Array Combines a source array with a destination array value.
    • Get from index in Array Gets the item at a specified index from an array value.
    • Get length of Array Returns a number that corresponds to the number of items in the array.
    • Insert at index in Array Add a new value after a specified index within an array variable
    • Join to String Returns a string of all values combined by a specified delimiter.
    • Pop from Array Returns the last item of an array and removes it from the array.
    • Push onto Array Adds an item to the end of an array.
    • Remove and store element at index in Array Remove an element at a specific index from an array and store it in a specific variable
    • Remove at index in Array Remove an element at a specific index from an array
    • Set index in Array Adds an item at a specified index. If there was already an item at that index it will be overwritten.
    • Sum Array Sum all integers or floats in an array and return in one value
    • Swap elements in Array Swap the elements in an array at 2 given indices
  3. Copy Copies a value from App to system clipboard
  4. Data Manipulation

    • Clear - Set a value to its initial zero-value.
    • Decrement Variable - Increments a specified numeric value.
    • Increment Variable - Increments a specified numeric value.
    • Reset All App Variables to Defaults - Resets app variables to the defaults defined for each variable.
    • Set Downtime Reason - Set the reason a specified machine is down.
    • Store - Store a new value in the context of the current execution.
  5. Logout Current User - Logout the current user and cancel the current App execution.

  6. Open File - Open a specified file path using the default program on your computer (Windows only).
  7. Open Link - Open a specified link in another window.
  8. Play Sound - Play a short audio snippet. Options include: Warning, Overtime, Doorbell, Three notes, Xylophone.
  9. Player Menu - Display player menu to a specific section. The 3 menu options are Open Comments Menu, Pause App, or Open Regular Menu.
  10. Print Steps - Print the specified step or step groups during an App execution.
  11. Print Using System Dialog - Bring up the system print menu for the current step.
  12. Run Connector Function - Users can select from one of the connector functions defined in the Tulip system, and specify which value to save the results to. For more information on connector functions see Connector functions.
  13. Run Device Function - Users can select from the set of device integrations available in the Tulip system.
  14. Save Image - Downloads an image to the local filesystem. Accepts an Image URL data type for the image and a string for the filepath.
  15. Scan Optical Barcode - Triggers a scan action at a specified barcode.
  16. Send Email - Sends an email to the specified user (with either a static value or user variable) with a configurable message to include in the email body.
  17. Send SMS - Sends an SMS to a specified user (with either a static value or user variable)with a specified message as the content of the SMS.
  18. Send SMS With Image - Sends an SMS to a specified user with a specified message and a specified image as the content of the SMS.
  19. Show Error - Brings up the error toast in the player with a specified message. Can be translated into multiple languages after enabling App Translations NOTE: this action will not be available if errors have been disabled in the Account Settings.
  20. Show Message - Brings up the message toast in the player with a specified message. Can be translated into multiple languages after enabling App Translations
  21. Split String - A function that takes two strings, the 'split' string and the 'by' string, and returns an array of strings that can be saved to a variable. The resulting array splits the split string by every instance of the by string.
  22. Table Records - A collection of actions for how Apps utilize table record placeholders. See Record Placeholder


QA-T57Variable Widget : 02 - Record View: Compound variables can be used with triggers
QA-T62Variable widget : 07 - Testing variables and compound variables in app
QA-T98Record Placeholders : 04 - Load Table Records Trigger, and Table Record Widget
QA-T99Record Placeholders : 05 - Create and Load Table Record Trigger
QA-T100Record Placeholders : 06 - Table Data Tab
QA-T116Machine Monitoring : 06 - Machine Outputs
QA-T148SQL Connectors : 02 - Add Function to SQL Connector
QA-T183Triggers - Print Using System Dialog Trigger
QA-T235User Table : 01 - User Table
QA-T240HTTP Connectors : 02 - Add several functions to HTTP Connector
QA-T258Machine Monitoring : 08 - App Triggers For Machines
QA-T30507: Apps can use Vision Cameras and Regions
QA-T352Triggers - Basic Triggers App
QA-T399Table Links : 03 - Linking Records via App Triggers
QA-T40414: Test Jig Enter/Exit region and Appear/Disappear events
QA-T469Schedules and Shifts : 02 - Applying shifts in apps
QA-T497Expression Editor : 01 - Create an expression in an app trigger
QA-T501Copying Triggers : 01 - Copying and pasting triggers between buttons
QA-T502Copying Triggers : 02 - Copying and pasting triggers between image widgets
QA-T504Copying Triggers : 03 - Copying and pasting triggers between Interactive Tables
QA-T505Copying Triggers : 04 - Copying and pasting Step Triggers
QA-T506Copying Triggers : 05 - Copying and pasting App Triggers between apps
QA-T515Master Layout - Widget triggers
QA-T516Master Layout - Step and App Triggers
QA-T521Expression Editor : 02 - Running the "Expressions" app
QA-T679Triggers - Sleep Trigger
QA-T728HTTP Connectors : 05 - Non-2xx Responses


PLAT-8729 (260)Ability to track equipment use in production execution by material unit and work order.
PLAT-8732 (258)Ability to complete steps with process values that are not within the predefined limits if appropriate exception/deviation information and approval is entered
PLAT-8735 (293)Track process execution of the Production Models by Apps
PLAT-8738 (291)Provide sequence management of process steps so that Apps can get required information for execution of a specific process step
PLAT-8745 (295)Verify that all required data has been entered and collected as prescribed by the step on completion. Disallow to progress on execution path if verification fails
PLAT-8747 (302)Ability to re-execute process step with override of constraints of the process step configuration in the Master Recipe or material workflow. In such a case an extra e-signature can be required.
PLAT-8748 (301)Ability to re-execute process step respecting any constraints of the process step configuration in the process flow.
PLAT-8754 (358)Provide configurable way to review exceptions
PLAT-8757 (327)Ability to route and disposition materials based on results of sample testing (off-line) and/or quality testing (in-line) Eg. hold, reject, scrap, or release materials based on sample result
PLAT-8759 (326)Ability to route and disposition materials based on sampling plans Eg. hold or future hold materials until sample testing results are available
PLAT-8761 (290)Provide managed process execution that guides the user through the production process as defined in a Production Model including the workflow, process logic, validation requirements, process parameters, material inputs and material outputs.
PLAT-8763 (406)Ability to consume by pre-configured unit of measure (UoM) quantities such as weight, volume, etc.
PLAT-8778 (12)Ability to assign and notify multiple users for a given approval workflow of all content.
PLAT-8789 (66)Tulip can be used in environment where operators wear gloves. i.e. sterile or clean areas where the operator is gowned up and has gloves on
PLAT-8793 (836)Ability to retrieve information from external a system of record so that Apps can get the required information for execution fo a specific process step.
PLAT-8799 (75)Ability to send notifications from any content screen. Ie. email, txt message, alarms.
PLAT-8804 (150)Ability to define steps and procedural elements that are triggered by time-based events such as timers or date-time.
PLAT-8810 (133)Ability to parameterize a process and production model definitions. Ie. create generic definition using parameterization that are substituted by specific production order information prior to release to production.
PLAT-8811 (255)Ability to verify that equipment (room, suite, area, etc.) meets routine cleaning requirements and prevent process start if cleaning status requirement is not met prior to start of processing.
PLAT-8815 (154)Ability to use process values from previous process steps in any procedural element or step workflow.
PLAT-8817 (151)Ability to configure allowed overrides for steps and procedural elements. An override can be allowed for out of spec conditions and can require additional approval using e-signature
PLAT-8839 (457)Ability to define work order types to indicate special processing or release procedures. Ie normal, testing, prototype, validation, rush, etc.
PLAT-8840 (456)Ability to define and dispatch work orders for the different segments of the manufacturing operation.
PLAT-8845 (371)Ability to control automated equipment state (start, stop, pause, resume, etc.) during the execution of a process step.
PLAT-8847 (119)Ability to configure procedural elements for work on orders, materials or equipment in a workflow
PLAT-8850 (118)Ability to configure steps and states for work on orders, materials or equipment in a workflow
PLAT-8852 (378)Ability to assign operators to equipment or equipment group at login.
PLAT-8853 (426)Ability to transfer sample material as defined in sampling plan
PLAT-8854 (124)Ability to define procedural elements in process and material workflows that can be repeated in sequence, ie configurable number of iteration of the same step both min. and max. number of iterations.
PLAT-8855 (391)All materials must be identifiable through auto-id (e.g. barcodes)
PLAT-8856 (123)Ability to define process and material workflows structures that can be executed in sequence with one another
PLAT-8857 (122)Ability to define process flows that can be executed in parallel with one another
PLAT-8859 (121)Ability to define procedural sequences with relevant process information that can guide an operator through task execution.
PLAT-8862 (127)Disallow completion of work until all required processing steps have been performed. i.e. disallow batch close when there are incomplete processing steps.
PLAT-8864 (125)Ability to define conditions to route process between steps in the workflow. These conditions can be based on state change in other steps or time constraints, equipment status, critical alarms, completion of other steps or defined timers.
PLAT-8869 (856)Continuous signing sessions require two signature components for first signing but only one (secret) component for subsequent signings
PLAT-8870 (100)Ability to retrieve, examine, and view batch/lot and material attributes used in the processing step (e.g. potency), from external source.
PLAT-8876 (427)Ability to track material attributes during production operations with associated capabilities to browse their history and their trending e.g. temperature, assays, etc.
PLAT-8877 (274)Ability to start processing for work orders by starting to track material (batches, lots, units, etc.). Tracking information should respect tracking hierarchy (kits, trays, wells, flasks, jigs, etc.)
PLAT-8878 (253)Disallow steps from completing until the correct material, material quantity, has been consumed or identified
PLAT-8879 (288)Ability to track dispatching of work orders and materials to production once they are released.
PLAT-8880 (278)Dispatch priority of work orders and batches/lots can be controlled using predefined configurable dispatching strategies
PLAT-8881 (277)Ability to view dispatching list by equipment. Ie for any element of the equipment hierarchy such as area, machine, work center, etc.
PLAT-8882 (276)Work order have to be approved and released for production before any material can be started. Ie starting batches/lots
PLAT-8887 (190)Ability to define a UoM and the conversion formulas and rules between UoMs
PLAT-8895 (180)Ability to propagate material attributes to associated materials in the material tracking hierarchies. e.g. assigning material attributes to final product from intermediates.
PLAT-8909 (394)Ability to track unloading of material from a load-carrier
PLAT-8911 (393)Ability to track loading of material to a load-carrier and its location within the load carrier. Ie. material in a well, plate, flask, tank, tote, etc.
PLAT-8913 (392)Ability to track materials handled in load-carriers.
PLAT-8914 (99)Ability to display the acceptable quality limits to the operator during the execution with an indication of whether the current value is inside/outside the limits.
PLAT-8916 (803)All records shall be Accurate. there must be the ability to build accuracy checks into the design of the system or configure verification for manually entered data as necessary.
PLAT-8919 (407)Ability to track of material waste and scrap as part of the production process execution.
PLAT-8921 (330)Ability to automatically or manually log an exception when data is not within configured limits and tolerances. Disallow process completion until exceptions have been logged with configured e-signatures and any authorized overrides have been processed
PLAT-8923 (405)Ability to manage and track material consumption as part of a process step. Material consumption may include processing, weighing, dispensing, etc.
PLAT-8924 (93)App has to provide navigation between process steps from external input. Ie. scanner, button, switch, I/O triggers, etc.
PLAT-8925 (390)Ability to track materials associations using the material tracking model. Ie. track physical material in tray location, trays in batches (Cohorts).
PLAT-8928 (388)Ability to track material inventory and its physical location.
PLAT-8929 (90)Ability to configure job aids for assistance. e. click on "help" to get instructions or show how-to procedure
PLAT-8930 (385)Ability to track equipment location for mobile equipment. The equipment log will include the equipment's location history or path.
PLAT-8948 (805)All records shall be Consistent, ie capture and recorded in the same manner and in the correct sequence of the acitivities or action being recroded.
PLAT-8954 (857)Ability to print configured labels for sample materials
PLAT-8959 (317)Ability to track multiple dispensing of the same material continuously for different work orders or batches/lots as part of a campaign
PLAT-8960 (309)Ability to track use of one source material or load-carrier used for multiple orders Eg. bulk material that is used for different products.
PLAT-8963 (303)Ability to track batch/lot and material rework based on the Master Recipe or material workflow configuration.
PLAT-8964 (261)Ability to track equipment substitution during process execution.
PLAT-8966 (78)All contents have to guide operators thru the process steps in an easy intuitive manner. Ie. easy navigation between process steps
PLAT-8970 (84)Ability for content to guide operator thru the execution of a process flow model
PLAT-8971 (354)Ability to track material association to work order and production order at all levels of material tracking hierarchy
PLAT-8972 (83)Ability to configure signature to complete a process step.
PLAT-8976 (350)All material tracking history will include context of material hierarchy levels
PLAT-8978 (89)Ability to configure alerts based on criteria of the entered data
PLAT-8980 (88)Ability to designate certain content fields to be required for data entry
PLAT-8981 (357)Ability to track material consumption and use at all levels of the material tracking hierarchy.
PLAT-8990 (337)Ability to track material consumption in a process step. Material consumption may include processing, assembly, weighing, dispensing, etc.