Skip to main content

Workflow designer

Learn about designing your own workflows in Actioner.


Follow our manual and automated workflow tutorials to build your first workflow.

Workflows make it easy to integrate your whole toolset and data - all with no servers or infrastructure to manage.

  • Workflows are composed of nodes that is organized and executed as a sequence of linear steps in top-down order.

  • Trigger your workflow on any event (e.g., Webhook events, e.g., Integration events) or manually in Slack, or on a specific or on a recurring schedule.

  • Add steps to run actions or to run JavaScript functions or to add condition, branch, loop or delay logic to your workflows.

  • Nodes are executed in the top-down order they appear in your workflow.

  • For manual triggers, access input fields in your form via input object.

  • For webhook-based or integration-based triggers, access the event's payload via event object.

  • Access values for steps after the trigger node via the nodes object.


Every workflow begins with a single trigger step. Trigger steps initiate the execution of a workflow; i.e., workflows execute on each trigger event. For example, you can create a Webhook trigger to accept HTTP requests from Stripe or use triggers from integrations; such as New ticket created event from Zendesk integration. We give you a unique URL where you can send POST requests, and your workflow is executed on each request.

Slack and HubSpot events

There is no URL provided for Slack and HubSpot events since Actioner starts to listen these events when you complete your connection. To start your workflow with a Slack or HubSpot event, you can simply add the corresponding trigger from the related integration in your canvas.


Nodes are the building blocks you use to design workflows. You can easily combine multiple node into a workflow to integrate your tools, data and APIs.

  • Nodes are executed linearly, in the top-down order they appear in your workflow.

  • You can pass data between steps using nodes objects.

  • You can observe the execution results for each step, logs and errors.

Node names and aliases

Each node have a name and an alias. They appear at the top of the node detail panel, when you click on a node in your canvas.

Renaming a node

You can rename a node by clicking on its name but it is not possible to update the alias of a node.

Alias of your node can be referenced when you want to use data generated by that node in a later step in your workflow. For example, nodes.action0.response contains the response generated by action0.

Passing data to nodes from inputs

You can generate form based inputs for manual triggers and reference to them via input. For example, returns the data entered for name input.

Learn more about using inputs in your workflows.

input object in manual workflows

Passing input values to workflow nodes are only available for manual workflows.

Passing data to nodes from your events

You can access the data of your event by referencing to them via event.

  • event.body returns the body of your trigger event.
  • event.headers returns the headers of your trigger event.
  • event.params returns the params in your trigger event.
event object in automated workflows

Passing event values to workflow nodes are only available for automated workflows.

Referencing to other nodes

Referencing to other nodes in your workflows allow you to pass data between steps. Any data from a node must be JSON serializable, the data must be able to stored as JSON so it can be read by downstream steps.

  • nodes.action0.response returns the response generated by action0. It may contain a text string, an object, or any other data type that represents the result or output of the action performed by action0.
  • nodes.loop0.item returns the item being processed or iterated upon within loop0. It contains the value or reference of the current item being processed during the iteration.
  • nodes.loop0.iterationCount returns count or number of iterations performed within loop0. It contains the total number of times the loop has executed or iterated.
  • nodes.condition0.conditionMatched returns the outcome of a condition check within condition0. It contains a boolean value indicating whether the condition evaluated to true or false. If the condition is matched or true, then nodes.condition0.conditionMatched would hold the value true. Otherwise, it would hold the value false.


Triggers define the type of event that runs your workflow. For example, webhook triggers expose a URL where you can send POST requests. Actioner will run your workflow on each request.

Actioner supports the following triggers:

Contact with Actioner team

If there's a specific trigger you'd like supported, please let us know.

Integration triggers

You can trigger a workflow on events from apps like Zendesk, HubSpot, Slack, and more using integration triggers. Integration triggers run as separate resources from your workflow, which allows you to trigger multiple workflows using the same source. Here, we'll refer to event sources and workflow triggers interchangeably.

When you create a workflow, you'll see your available triggers.

Search by integration name to find triggers associated with your tool. For HubSpot, for example, you can run your workflow every time a new contact is created in your account, or each time a deal is updated.

Once you select your trigger, you'll be asked to connect any necessary accounts (for example, HubSpot event require you authorize Actioner access to your HubSpot account).

Some sources are configured to retrieve an initial set of events when they're created. Others require you to generate events in your tool to trigger your workflow, such as sending data to Actioner via a webhook.

When you select your integration as the trigger, you can see the list of events in the Select events dropdown of the Trigger node.

Then you can select a specific event and perform a test operation to trigger your workflow with test event and click Capture event to use its data. Afetr that, you're ready to build your workflow with the selected event.

Difference between an integration trigger and a webhook trigger

Integration triggers run code that collects events from some tool or service and emits events as the source produces them. An event source can be used to trigger any number of workflows.

For example, you might create a single source to listen for new Zendesk tickets with a specific tag, then trigger multiple workflows each time a new ticket is created with that tag, one to notify your support team, another to notify the assignee.

This model allows you to separate the data produced by a service (the event source) from the logic to process those events in different contexts (the workflow).

Shape of the event object

In automated workflows, you have access to event data using the variable event.

The shape of the event is specific to the source. For example, HubSpot sources produce events with a object name, owner, etc.

Webhook triggers

When you select the Webhook trigger, Actioner creates a URL endpoint specific to your workflow:

You can send any POST requests to this endpoint. You can configure the endpoint as the destination URL for a webhook or send HTTP traffic from your application - we'll accept any valid HTTP POST request.

Accessing HTTP request data

You can access properties of the HTTP request, like the body, headers, and URL params, in the event object, accessible in any workflow nodes.

Valid requests

You can send a request to your endpoint using only POST method.

You can only send data of application/json and text/plain media types in the body of your request.

The primary limit we impose is on the size of the request body: we'll issue a 413 Payload Too Large status when the body exceeds our specified limit.

How Actioner handles JSON payloads

JSON is the defacto data exchange format on the web today. Actioner optimizes for the case where you've sent JSON as the trigger event to a workflow.

When you send JSON in the HTTP payload, or when JSON data is sent in the payload from a webhook provider, Actioner converts that JSON to its equivalent JavaScript object. The trigger data can be referenced using event object.

Actioner jobs

Actioner allows you to run hosted recurring or scheduled taks. We call these jobs. When you use jobs, workflows just become the tasks that run on a schedule.

Actioner manages the servers where these cron jobs run, so you don't have to worry about setting up a server of your own or operating some service just to run your workflow on a schedule. You design the workflow and the job, we take care of the rest.


Actions are reusable steps that integrate your tools, data and APIs. For example, you can send HTTP requests to an external service by adding your own actions through a custom integration, or use our HubSpot actions to add new data. You can use hundreds of actions across multiple apps today.

Typically, integrating with these services requires custom code to manage connection logic, error handling, and more. Actions handle that for you. You only need to specify the parameters required for the action.

You can also create your own actions that can be shared across your own workflows.

Using existing actions

Adding existing actions to your workflow is easy:

  1. Click the + button below any node.
  2. Search for the tool you're looking for and select it from the list.
  3. On the opening left panel, select for action from dropdown.

For example, you can add the Create deal action from HubSpot integration.

Creating your own actions

You can author your own actions on Actioner, too. Anytime you need to reuse the same steps across your workflows, consider making that an action.

Start with our action designer.

Entering expressions

Expressions make it easy to pass data exported from previous nodes into an action, function, operator, workflow, AI or a response node. For example, if your workflow is triggered on new contacts and you want to send that contact info to Slack, you would reference {{}} to do that.

While the data expected by each field depends on the data type (e.g., string, integer, array, etc), the format for entering expressions is always the same; expressions are always enclosed in {{ ... }}.

To manually enter or edit an expression, just enter or edit a value between double curly braces {{ ... }}. Actioner provides auto-complete support as soon as you type {{.

You can also run JavaScript code in {{ ... }}. For example, if is a JSON object and you want to pass it to a param as a string, you can run {{JSON.stringify(}}.