Fundamental Concepts
Rollout executes automated workflows, called Automations, that transfer data between your App and other Apps on behalf of users.
To enable your users to create Automations involving your App, you create a Typescript Rollout Project in which you define the Triggers and Actions that your App exposes, and deploy it to a Project Environment.
This page describes the core concepts that explain how Rollout works.
Apps#
Apps are SaaS products, including both those managed by Rollout partners (like you!), as well as third-party Apps such as Slack or Salesforce. Apps are uniquely identified within Rollout by an appKey
.
Consumers#
Consumers are the users or customers that will integrate other products they use with your App. A consumer may correspond to a single user or a larger entity like a "team" or "organization", depending on the level at which you'd like to enable users to configure integrations.
Each Consumer is identified by a consumerKey
, which is any unique identifier you choose for a given Consumer (such as its primary key in your database) and is provided as the sub
claim of the Rollout JWT.
Automations#
An Automation is an automated workflow, which belongs to a particular Consumer. Automations consist of:
- The Trigger, which starts the Automation. For example, when a form is submitted in your App.
- The Action, which is an operation to be performed in another App. For example, sending a message to a channel in Slack.
Credentials#
Credentials are the secrets associated with a user account for a given App that allow Rollout to make requests on behalf of that account. Each Credential is identified by a unique credentialKey
.
Triggers#
Triggers are the types of events that occur in an App and can start an Automation. For example, "New Order" is a Trigger in the e-commerce App Shopify.
Triggers are identified by the appKey
of their respective Apps (e.g. Shopify
), along with a triggerKey
which is unique among all of the Triggers belonging to a given App (e.g. new-order
).
When an Automation is created, the Trigger is specified by appKey
and triggerKey
along with:
- A
credentialKey
that corresponds to the account in which the event will occur (e.g. the Shopify store) inputParams
that filter the events that will start the Automation (e.g. only new orders for a specific product)
Triggers have a payloadSchema
that defines the data that will be present for each Trigger Event (e.g. the products ordered, the email address of the customer who placed the order).
Trigger Events#
Trigger Events are the specific occurrences of a Trigger that start an Automation (e.g. a specific order in Shopify). Trigger Events have a payload
that conforms to the associated Trigger's payloadSchema
(e.g. a value like { product_ids: [1, 2, 3], customer_email: '[email protected]' }
)
Actions#
Actions are operations performed within an App. For example, "Send Channel Message" is an Action in the messaging App Slack.
Actions are identified by the appKey
of their respective Apps (e.g. slack
), along with an actionKey
which is unique among all of the Actions belonging to a given App (e.g. send-channel-message
).
When an Automation is created, the Action is specified by appKey
and actionKey
along with:
- A
credentialKey
that corresponds to the account in which the operation will be performed (e.g. the Slack account that will send the message) inputParams
that configure the behavior of the action (e.g. the Slack channel to which the message will be sent and the message content).
Mapping Data Between Triggers and Actions#
Action inputParams
may reference data in the Trigger's payloadSchema
For example, if the Automation is "when a new order is created in Shopify, send a Slack message", then the Slack message content (specified in the Action inputParams
) will be able to reference the order detail (from the Trigger payload
schema) to send a message such as "New order: 50 Jellybeans were purchased by John Smith for $10.00 🔥"
Automation Runs#
An Automation Run corresponds to the execution of an Automation's Action in response to a specific Trigger Event and records the result of that execution, such as the response from an API request or an error message.
Connectors#
Connectors are abstractions over an App's API that allow you to more easily enable your users to connect your App to others. Connectors manage authentication with an App and define the Triggers and Actions that the App exposes.
The Triggers and Actions defined in a Rollout Connector simplify working with an App's API by abstracting over the implementation details and exposing only the relevant inputs and outputs.
Rollout Project#
A Rollout Project is a Typescript project in which you define a Connector to your App (and optionally to Apps for which Rollout does not currently provide a pre-built Connector, or to extend or customize the functionality of a pre-built Connector) using Rollout's Typescript framework. Rollout Projects are deployed to one or more Project Environments.
Project Environments#
You can think of a Project Environment as an "integration service" that moves data between your App and others on behalf of your users. A Project Environment runs the code for any Connectors you define in your Rollout Project, as well as Rollout's prebuilt Connectors.
Each Project Environment has a dedicated database where the Automations created by your users and associated data are stored.
A Project Environment typically corresponds to an environment of your App (e.g. "Development", "Sandbox" or "Production"). This enables you to develop your Rollout project in a non-production environment, before rolling it out to live users.