# Getting started | Docs - nodulz

Source: https://nodulz.com/docs/getting-started

Language: en

Build a workflow that receives a request, prepares its data and chooses a branch based on its amount. By the end, you will know how to read input, reuse an output and verify both paths.

## Before you start

Open an editable workflow in your nodulz instance. This tutorial uses internal nodes only: no provider account, API key or publication is required.

> [!FLOW] The workflow to build
>
> 1. **Manual trigger** <!-- node: manual -->
>    Receives `name`, `email` and `amount`.
> 2. **Edit fields** <!-- node: set -->
>    Prepares `message` and preserves `amount`.
> 3. **IF** <!-- node: if -->
>    `amount ≥ 100`
>    - **True** <!-- node: set -->
>      Priority response.
>    - **False** <!-- node: set -->
>      Standard response.

Both responses will also use **Edit fields** nodes. No message will be sent to a real recipient.

## Supply a test request

1. Add a [Manual trigger](/docs/nodes/manual).
2. Paste this JSON object into its **Test payload** field:

```json
{
  "name": "Ada",
  "email": "ada@example.test",
  "amount": 120
}
```

These values will be accessible through `input.name`, `input.email` and `input.amount`. The manual trigger does not wrap this object in a `body` property.

## Prepare the data

Add [Edit fields](/docs/nodes/set), then connect the trigger output to its input. Enable **Mapped fields only** and add these four rows:

- Name `name`, value `{{ input.name }}`.
- Name `email`, value `{{ input.email }}`.
- Name `amount`, value `{{ input.amount }}`.
- Name `message`, value `Hello {{ input.name }}`.

Run the workflow with **Execute**, then open this node’s output. It should contain:

```json
{
  "name": "Ada",
  "email": "ada@example.test",
  "amount": 120,
  "message": "Hello Ada"
}
```

`amount` stays a number because its value is a standalone expression. `message` is a string combining text and an expression.

> [!TIP] Use the name shown in mapping
>
> The following steps assume this node has the technical name `set1`. Select its output through editor mapping and replace `set1` if your workflow shows a different name.

## Choose a branch

1. Add [IF](/docs/nodes/if) after the preparation node.
2. Add a condition: field `nodes.set1.amount`, operator **Greater than or equal** (`gte`), value `100`.
3. Connect the **true** output to an Edit fields node. Enable **Mapped fields only** and set `status` to `priority` and `message` to `{{ nodes.set1.message }}`.
4. Connect the **false** output to another Edit fields node. Enable the same option and set `status` to `standard` and `message` to `{{ nodes.set1.message }}`.

Run the workflow again. The condition should produce `result: true`, only the **true** branch should run, and its response should be:

```json
{
  "status": "priority",
  "message": "Hello Ada"
}
```

The IF node outputs the comparison result. To read the request within a branch, use the preparation output `nodes.set1`, rather than assuming the IF output still contains all its fields.

## Check the other path

In the manual payload, replace `amount: 120` with `amount: 40`, then run the full workflow again. This time, expect `result: false` and a response containing `status: "standard"`.

If a value is missing or a branch does not run, compare the manual payload, preparation output, values evaluated by IF and its connections, in that order. The [troubleshooting guide](/docs/troubleshooting) walks through these checks.

## Use real data

- To receive an HTTP request, follow the [Webhook example](/docs/nodes/webhook). Adapt the expressions: a webhook JSON body is generally read as `input.body.name`, instead of `input.name`.
- For an external action, choose its node and prepare the [matching credential](/docs/credentials). Start with a test destination.
- For several requests at once, continue with [Process a list](/docs/working-with-lists): filter contacts, then produce a response for each one.
- To run at a fixed time, add a [Schedule](/docs/nodes/schedule) and check the timezone.

Before enabling an automatic trigger, read [Test and publish](/docs/workflows#test-and-publish). A simulated payload checks data processing; only a real event checks delivery from the service.

## Explore further

- [Features - nodulz](https://nodulz.com/product/overview)
- [Node catalog - nodulz](https://nodulz.com/product/catalog)
- [MCP server - nodulz](https://nodulz.com/product/mcp)
- [Pricing - nodulz](https://nodulz.com/pricing)
- [Use cases and workflow automation - nodulz](https://nodulz.com/use-cases)
- [Choose what your workflows can do. - nodulz](https://nodulz.com/compare)
- [Documentation - nodulz](https://nodulz.com/docs)
