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

# Workflows

> Build automated flows to send WhatsApp messages, make phone calls, create tickets, and more — triggered by webhooks, schedules, or events.

Workflows let you automate tasks without writing code. You design a flow with a trigger and a series of actions. When the trigger fires, Astradial executes each action in order.

## Examples of what workflows can do

* When a hotel booking comes in via webhook, send a WhatsApp welcome message
* Schedule a reminder call 1 day before check-in
* When a call is missed, create a ticket and send a notification
* Every morning at 7am, make an automated call to a list of guests

## Create a workflow

<Steps>
  <Step title="Open the Workflows page">
    Click **Workflows** in the sidebar under **Automate**.
  </Step>

  <Step title="Click New Workflow">
    Click the **New Workflow** button in the top-right corner.
  </Step>

  <Step title="Configure the basics">
    | Field            | What to enter                                          |
    | ---------------- | ------------------------------------------------------ |
    | **Name**         | A descriptive name (e.g., "Guest Check-in Automation") |
    | **Description**  | What this workflow does                                |
    | **Trigger Type** | How the workflow starts (see below)                    |
  </Step>

  <Step title="Click Create">
    The workflow is created and you can start adding actions.
  </Step>
</Steps>

## Trigger types

| Trigger       | How it works                                                          |
| ------------- | --------------------------------------------------------------------- |
| **Webhook**   | Fires when an HTTP POST request is sent to the workflow's trigger URL |
| **Event**     | Fires when a call event happens (call started, ended, missed, etc.)   |
| **Scheduled** | Fires once at a specific date and time                                |
| **Recurring** | Fires daily between a start and end date                              |

### Webhook trigger

When you create a webhook workflow, you get a trigger URL:

```
POST https://your-server/trigger/{workflow_id}
```

Send a POST request with JSON data to trigger the workflow. The data you send becomes available as `{trigger.field_name}` in your actions.

**Example webhook data:**

```json theme={null}
{
  "name": "John Doe",
  "phone": "9944421125",
  "checkin_date": "2026-04-20",
  "checkout_date": "2026-04-25"
}
```

### Event trigger

Choose from these events:

* Call Started
* Call Answered
* Call Ended
* Call Missed
* Ticket Created

## The flow editor

Click on a workflow to open the visual editor. The editor has:

* **Canvas** — Where you place and connect nodes
* **Inspector panel** — Configure the selected node (right side, resizable)
* **Toolbar** — Add nodes, view runs, test, and save

### Add nodes

Click **Add Node** in the toolbar and choose from:

**Actions:**

| Node type         | What it does                                  |
| ----------------- | --------------------------------------------- |
| **HTTP Request**  | Call an external API                          |
| **Send WhatsApp** | Send a WhatsApp message via MSG91             |
| **Place Call**    | Make a phone call (optionally with an AI bot) |
| **Create Ticket** | Create a support ticket                       |
| **Send Email**    | Send an email                                 |
| **Log**           | Write a log message                           |

**Flow:**

| Node type          | What it does                               |
| ------------------ | ------------------------------------------ |
| **Delay/Schedule** | Wait for a period (30 seconds to 1 day)    |
| **Condition**      | Branch the flow based on a value (if/else) |
| **Repeat Daily**   | Loop daily between two dates               |

### Connect nodes

Drag from a node's output handle to another node's input handle to create a connection. Nodes execute in the order they are connected.

### Condition branching

The Condition node splits the flow into two paths:

* **True** (green) — When the condition is met
* **False** (red) — When the condition is not met

You can check values using operators: equals, not equals, greater than, less than, contains, exists.

## Using trigger variables

In any action field, use `{trigger.field_name}` to reference data from the trigger. For example:

* `{trigger.name}` → "John Doe"
* `{trigger.phone}` → "9944421125"
* `{trigger.checkin_date}` → "2026-04-20"

You can also reference output from previous steps: `{step.nodeId.field}`.

## Timing options

Most action nodes support three timing modes:

| Mode          | Description                                                            |
| ------------- | ---------------------------------------------------------------------- |
| **Immediate** | Run right away                                                         |
| **Scheduled** | Run at a specific date/time (with optional offset like "1 day before") |
| **Recurring** | Run daily between two dates at a specific time                         |

This lets you build complex automations like "Send a WhatsApp message 3 days before check-in, then call the morning of check-in."

## Activate a workflow

Use the **Active/Pause** toggle in the editor toolbar. Only active workflows respond to triggers.

## Test a workflow

Click the **Test** button to manually execute the workflow once. This helps you verify it works before activating.

## View execution history

Click **Runs** to see past executions. Each run shows:

* Status (completed, failed, running)
* Timestamp
* Error details (if any)
* Step-by-step breakdown

## Scheduled jobs

Click the **Scheduled** tab on the Workflows page to see all pending scheduled and recurring jobs. You can:

* Filter by status (Queued, Pending, Executed, Cancelled, Failed)
* Filter by date
* Cancel pending jobs
