---
title: "Event-Based App Triggers via ‘Virtual’ Tulip Machine"
slug: "event-based-app-triggers-via-tulip-machine"
updated: 2025-10-02T22:56:09Z
published: 2025-10-02T22:56:09Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://support.tulip.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Event-Based App Triggers via ‘Virtual’ Tulip Machine

*Using a virtual ‘Tulip*Machine*’ to enable event-based*Trigger*logic in an app.*

## Background

Some Tulip customers have legitimate use cases wherein an operator-centric app needs to rapidly react to some context (i.e. some event) outside of: the app or any connected device or Shop Floor machine. In service of such use cases, some customers have developed Tulip apps that use high-frequency (i.e. less than 30 seconds) Timer triggers wherein a timer may be checking for some context (e.g. in a 3rd party system via a Connector Function, or a changed value in a Tulip Table record).

## Problem Statement - High-Frequency Timer Triggers

A high volume of high frequency Timer-based triggers (especially those dependent on response from a 3rd party system or machine) can accumulate in the Trigger Queue faster than they can be executed.

## Solution - Event-Based Triggers via a ‘Virtual’ Tulip Machine

Rather than using high-frequency Timer-based triggers to enable app triggers that respond to events that occur outside of the Tulip app, an alternative (and more reliable and resilient) solution consists of the following:

- A virtual ‘Tulip Machine’ modeled to act as an event stream.
- Machine Attributes mapped to the Tulip API
  - Usage of the Tulip [Machine Monitoring API](/r230/docs/use-the-machine-attributes-api) enabling Tulip Apps (or third party systems) to POST “events”.
- [Machine-based triggers](/r230/docs/use-machine-outputs-in-triggers) in the relevant Tulip apps to initiate the logic related to the ‘event’.

## High-Level Solution Architecture

Below you will find a high-level diagram of the components involved in implementing such a solution. Following the diagram is an itemized explanation.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Event Based App Triggers.svg)

1. **“Event”**: This is very much a case-by-case definition. An ‘event’ in this context might be an updated value in a Tulip Table Record, or new content in a third-party system.
2. **Event Source:** The ‘event’ may occur in a Tulip solution (Tulip app, Automation, or Function), or even a third-party system. The remainder of this explanation assumes the event occurs within Tulip. An event outside of Tulip would still use the ‘Machine Attributes API’ and an API Token with the ‘attributes:write’ scope, but not use a Connector nor Connector Function.
3. [**Tulip Machine**](/r230/docs/set-up-your-first-machine)**‘Event Stream 1’:** This Tulip Machine acts as a conduit for event signals transmitted as values on the configured Machine Attributes.
4. **Connector: “Event Stream”:** This Connector is configured similar to a Tulip Table API Connector, however note that the Connector Function “Post Machine Attribute” uses the [Machine Monitoring API](/r230/docs/use-the-machine-attributes-api) endpoint POST **/attributes/report** which requires an API Token configured with the ‘**attributes:write**’ scope.
5. **Machines Trigger:** When the ‘Event Source’ POSTs a new ‘event’ via the Machine Monitoring /attributes/report API, a Tulip app can then initiate a [Machines trigger](/r230/docs/use-machine-outputs-in-triggers) to perform the necessary logic.

---

Did you find what you were looking for?

You can also head to [community.tulip.co](https://community.tulip.co/?utm_source=intercom&amp;utm_medium=article-link&amp;utm_campaign=all) to post your question or see if others have faced a similar question!

**Machine**

A **Machine**is a digital representation of a physical datasource. Machines have **Attributes**that are updated through an OPC-UA Connector or the Tulip API.

**Trigger**

**Triggers** are groups of logic that are tied to an app event, such as step open, timer, widget interaction, etc. App builders can add triggers to **widgets**, **machines**, **devices**, **apps**, and **steps**.

**Triggers** can contain **actions**, **transitions**, and **conditions**.

**Shop Floor**

The area of the platform responsible for moving applications into production. Under the shop floor, you can manage **Stations**, **Edge Devices,**and the app publication details such as which **Version** is accessible to users, which **Devices**are connected to the app, and which **Interface (display device)******the app is run on.

**Trigger Queue**

All triggers executing in an app are in one sequential single-threaded first-in, first-out queue.

*Example*: All the triggers executed on a button click.

**Machine Attribute**

**Machine Attributes**are setpoints and actual values for different parameters of your **Machine.**Attributes can be mapped to OPC-UA datasource Tags.

**Table Record**

A **Table Record** is a reference to a row in a **Tulip Table**. Table Records can be created either from the Table UI or from with an App Trigger.

To edit a record it must be loaded into a **Table Record Placeholder.**

**Automation**

**Workflow** that performs tasks in the background, without an interface. Automations run logic every time an **event** occurs.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Glossary/Automations1.gif)

**Connectors**

**Connectors** enable real-time connectivity between your Tulip solution and a transactional system (e.g. an ERP). The output of a Connector Function can be used in Tulip Apps, Automations, and Functions.

- **HTTP Connectors** utilize HTTP API endpoints.
- **SQL Connectors** can enable connectivity with certain SQL databases.
- **MQTT Connectors** can connect to MQTT brokers for machine monitoring.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/connector.gif)

**Connector Function**

**Connector Functions** are individual operations to interact with an HTTP or SQL Datasources. Connector Functions can have inputs and outputs, and can be called from: Triggers, Functions, Automations, and AI Agents.

Once pulled, data can be used throughout your applications.

**Tulip Tables**

**Tulip Tables** are a global location to store your production data. **Tables** are made up of **Records** (rows). A single can be accessed from multiple apps or stations at the same time. ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Tulip%20Tables%20Overview%20-%20Feature%20Overview(1).gif)

**API Token (Bot)**

**Note:**From LTS11 onwards, bots are renamed API tokens.

A unique string that provides permission to access an API with select scopes.
