# 2. The Basics: Build It Yourself

> Build the same kind of workflow by hand: placing steps, connecting them, and mapping data between them.

**About ten minutes.** This time you pass data from one step into another. Use Slack to send the result to a real app, or follow the no-account path with AI Prompt.

> **What you will learn**
>
> - Placing steps on the canvas and connecting them
> - Connecting an app so a workflow can act on your behalf, if you use Slack
> - Mapping data from one step into another

> **Before you start:** this tutorial connects Slack. In many companies
> installing a Slack app needs an administrator's approval, so it is worth
> checking first. If you cannot connect Slack, follow the **AI Prompt path** in
> Steps 2–4. It needs no connected account and teaches the same mapping skill.

---

## Step 1: Add a trigger

Start a fresh workflow for this: in the sidebar open **Automations** and click **Create new**, as in Tutorial 1. Every workflow starts with a trigger: the event that wakes it up.

### Replace the trigger placeholder

On the empty canvas, click **+ Add Trigger** on the left-hand placeholder. The dock's catalogue opens.

### Add a Webhook

Under **Tools → Start**, click **Webhook**. It takes the placeholder's spot on the canvas.

### Give it test data

Click the step and open the **Test & Debug** tab. **Testing data** shows a
sample object as a small structured editor. Hover over its top line and click
the pencil icon: the object turns into editable text. Replace it with:

```json
{
  "visitor_name": "Alice",
  "message": "I would like a demo!"
}
```

Press **Cmd+Enter** (Ctrl+Enter on Windows) to apply. The editor folds back
into the structured view with your two fields.

### Run it

Click **Run step**, then open the **Executions** tab. You will see the two fields you just entered. Glow now knows the shape of the data this trigger produces. That is what makes the next step possible.

> A trigger with no data is hard to build against. You would be mapping fields
> you cannot see. Giving it test data first is the normal way to work, not a
> shortcut for tutorials.

---

## Step 2: Add an action

A trigger on its own does nothing. Choose the path that fits what you can connect.

### Add a Slack step
Open **Apps** in the dock at the bottom, search for **Slack**, and pick **Send Message**. It lands on the canvas; place it to the right of your Webhook.

### Connect the steps

Drag from the dot on the right edge of the Webhook step to the dot on the left edge of the Slack step. That line is the execution order: Webhook first, Slack second.

### Connect your account

Click the Slack step and choose **Connect new account…** in its Account field. After authorising, pick the channel the message should go to.

### Add an AI Prompt step

Open **AI** in the dock and choose **AI Prompt**. It needs no connected account. Place it to the right of your Webhook.

### Connect the steps

Drag from the dot on the right edge of the Webhook step to the dot on the left edge of the AI Prompt step.

---

## Step 3: Map the data

This is the part worth slowing down for. You will make the action use what arrived at the trigger rather than fixed text.

Click the data icon beside the field you are editing to open the **Workflow data** panel, then pick `visitor_name` under the Webhook step. Glow inserts the reference with the Webhook's step number in front.

The snippets below write that number as `1`. **Read the real number off your Webhook step** and use it instead, exactly as Tutorial 1 taught.

In the Slack step, put this in the **Message** field:

```text
New inbound request from {{ 1.visitor_name }}:
{{ 1.message }}
```

In the AI Prompt step, put this in the **Instructions** field:

```text
Write a one-line greeting for {{ 1.visitor_name }} that responds to this message:
{{ 1.message }}
```

> **Why a number and not a name?** Because renaming a step never breaks
> anything. `{{ 1.message }}` keeps working however you label step 1. Full
> syntax in [Variable Reference Syntax](/reference/variable-syntax).

---

## Step 4: Run it, then set it Live

### Run the whole workflow

Click **Run** in the dock. Glow executes both steps using the test data from Step 1.

- **Slack path:** confirm the message arrived in your chosen channel.
- **AI Prompt path:** open the AI Prompt step, select **Executions**, expand the latest run, and read its `result`.

### Set it Live

Click the status control on the workflow (it currently reads **Draft**) and choose **Live**.

In **Draft** the workflow only runs when you run it: _triggers disabled, manual runs only_. Once it is **Live**, anything that sends a request to the Webhook's URL starts it automatically. See [Webhook Triggers](/build/triggers/webhook) for how to point a real system at it.

---

## What's Next?

You can now build a workflow by hand and move data through it. If you used Slack, you also connected an app that acts on your behalf. Next: branching, so a workflow can take different paths depending on what arrives.

👉 **[Continue to Tutorial 3: Branching →](/getting-started/tutorials/lead-routing-tutorial)**
