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

# Quickstart

> Build and run a live HTTP workflow in a few minutes.

Build a workflow that receives a browser request and responds with a message
containing the request method and path.

The finished URL returns a message such as:

```text theme={null}
Hello! You made a GET request to /.
```

## Before you begin

Sign in at [workflow.dog/login](https://workflow.dog/login). A new account starts
with a project. If you already have several projects, select the one where this
workflow should live.

## 1. Create a workflow

Open **Workflows**, select **Create a Workflow**, and choose:

**HTTP → When a request is received at a URL**

WorkflowDog creates the workflow and opens its editor. The trigger panel shows
the public URL assigned to this workflow.

<Note>
  A workflow has one trigger. The trigger is chosen during creation, while
  actions are added on the canvas afterward.
</Note>

## 2. Add a Text action

Press <kbd>/</kbd> or select **Search actions** in the bottom toolbar. Search
for **Text**, then choose:

**Core → Text**

Enter this template in the action:

```handlebars theme={null}
Hello! You made a {{method}} request to {{path}}.
```

The Text action detects `method` and `path` and creates a dynamic input for
each one.

## 3. Connect the trigger data

The workflow includes **Trigger Data**, which exposes values from the incoming
request.

Create these two connections:

| From                      | To                |
| ------------------------- | ----------------- |
| **Trigger Data → Method** | **Text → method** |
| **Trigger Data → Path**   | **Text → path**   |

Drag from an output handle to its matching input handle. A connection carries
the value and makes the Text action wait for that trigger output.

<Tip>
  If a handle is hard to find, select the node to read its field descriptions in
  the configuration panel.
</Tip>

## 4. Return the message

Open the action search again and choose:

**HTTP → Respond Text**

Connect:

| From            | To                      |
| --------------- | ----------------------- |
| **Text → Text** | **Respond Text → Body** |

The response action sends the generated text back to the browser request that
started the workflow.

## 5. Wait for the workflow to save

WorkflowDog saves graph changes automatically. Watch the status beside the
workflow name and wait for **Saved!** before triggering a run.

<Warning>
  Triggering while the editor still says **Saving...** can run the previous
  saved graph.
</Warning>

## 6. Enable the workflow

Open the **Paused** menu and choose **Enable Workflow**. The status changes to
**Live**.

New workflows begin paused. While paused, incoming events do not wait to be
processed later; they produce failed runs. See
[Live and Paused workflows](/essentials/enable-and-pause) for the full
behavior.

## 7. Send a request

Open the trigger panel at the top-left of the editor and select **Go to URL**.
The page should display:

```text theme={null}
Hello! You made a GET request to /.
```

Add a path or query string to the URL and reload to create another run.

## 8. Inspect the run

Open **Run History** from the top-right of the editor. Select the latest run,
then inspect the graph:

* Trigger Data contains the HTTP method and path.
* Text shows the rendered output.
* Respond Text shows the response body it sent.

Use **Snapshot (Read-Only)** when you need the graph exactly as it existed for
that run. Learn more in [Workflow runs](/essentials/workflow-runs).

## What you learned

You have used the complete automation lifecycle:

1. A trigger received an event.
2. Connections carried event values into an action.
3. An action produced a new value.
4. A response action completed the HTTP request.
5. Run History recorded the execution.

Continue with [Connect data](/building/connect-data), or browse the exact
[URL trigger](/reference/triggers/http/url),
[Text action](/reference/actions/core/text), and
[Respond Text action](/reference/actions/http/respond) behavior.
