# Data and Mapping Problems

> Fix literal references, missing values, wrong data shapes, and list/item mapping problems.

Use this page when a step ran with the wrong value or stopped because its input did not match what it expected. Compare the mapped value with the upstream step's output before changing the destination step.

## A step succeeded but sent the reference as literal text

**Symptom:**
The step is green and the run completed. But the email went to nobody, the record has braces in a field, or the message body shows the reference instead of a value.

**The Cause:**
Two reference forms are not step references at all, so Glow leaves them exactly as you typed them: a bare `{{ $index }}` where `{{ item.$index }}` was meant, and `{{ item }}` used in a Filter rule, which needs `{{ $item }}` instead. A reference that does start with a step number fails the step instead. See the next entry.

**The Fix:**

1. Look at where the value ended up: the message that was sent, the row that was written. Braces still visible in the output mean the reference never resolved, rather than resolving to something empty.
2. Open the step you were referencing, run it in **Test & Debug**, and read its output. Compare the path you wrote against what is actually there. The path follows the object that particular step stored: app actions and [HTTP Request](/build/action-steps/http-request) use `ret`, AI answers use `result`, and triggers expose their payload at the top level. [Referencing step output](/reference/variable-syntax#referencing-step-output) explains the common shapes.
3. Delete the reference and re-insert it from the **Workflow data** panel (the data icon in the field) rather than retyping it. See [Variable Reference Syntax](/reference/variable-syntax).

## "Placeholder 5.email didn't find data"

**Symptom:**
The run stops on a step, and the step records a message like _"Placeholder 5.email didn't find data"_. Open the run in **Executions** and expand the row to read it.

**The Cause:**
The reference found nothing: either the step number is not on the canvas, or the path after it is not in that step's output. Both stop the run rather than sending an empty value onward, and both carry this message.

A step's number is its identity, not its position on the canvas. Moving or renaming a step does not change it, and deleting a step does not make its number available again. Read the number from the step you mean rather than assuming a sequence.

**The Fix:**

1. Read the reference in the message, `5.email`, and look for a step carrying that number on the canvas. No step with it means the number is the problem.
2. If the step is there, open it and read its output. The path after the number has to match what that step actually produces. Use [Referencing step output](/reference/variable-syntax#referencing-step-output) as a guide, then confirm against the step's latest output.
3. Rather than retyping, delete the reference and insert it from the **Workflow data** panel, opened from the data icon in the field. It writes both the number and the path correctly.

## The step sent a whole record where one field was wanted

**Symptom:**
A step fails with a type error. It expected a `String` but received an `Object`, or expected a `Number` but received a `String`.

**The Cause:**
You picked the whole record instead of one field inside it. A field that wants an email address wants just the address. Select the customer pill and the step sends the customer's name, email and ID all together. The other service does not know which part to use.

**The Fix:**

1. Click the failing step on the canvas to open the App drawer.
2. Look at what arrived at the far end: the message, the row, the request body. Where a single value should be, you will see a whole block of fields instead.
3. Back in the settings tab, delete the variable pill and open the Workflow data panel again. Open the record up and pick the one field you want: `email` rather than the customer it belongs to.

## The step ran but the value came through empty

**Symptom:**
A step runs successfully but the output is empty. Or it fails outright, because a required API field was missing.

**The Cause:**
The upstream step you are referencing did not produce the data you expected in that specific run. This happens frequently with conditional logic or webhooks where some payloads contain certain fields, and others do not.

**The Fix:**

1. Check the **Executions** tab of the _upstream_ step (the one providing the data).
2. Look at its **Output Data**. Verify if the field you are trying to reference actually existed in this specific run.
3. Sometimes the data is missing by design. Add a **Conditions** step to check that it exists before routing it to the action step.

## AI output has the wrong shape

Open the AI step's **Executions** tab and inspect the value under `result`. AI Prompt, AI Transform, and AI Agent store their answer there, so a structured field is referenced as `{{ N.result.field }}`.

If `result` contains prose when the next step expects fields, configure a response shape or enable the step's JSON option, then test the AI step again. Insert the field from **Workflow data** after the successful test rather than typing the path. Do not route an irreversible action from a field until the tested output shows that field in the expected type.

## Only the first item was processed

**Symptom:**
You are trying to insert multiple items into a database, or send multiple emails. But only the first item processes, or the step throws an error about receiving an Array instead of an Object.

**The Cause:**
You mapped a list (array) pill into a field that only accepts a single item.

**The Fix:**
Click the step's repeat badge on the canvas, choose **Each item**, and select the list. Map the current item into the step's fields with `{{ item.… }}`. See [Run for Each Item](/build/action-steps/loops/run-for-each-item) for the full setup.

## What's Next?

- Confirm the supported forms in [Variable Syntax](/reference/variable-syntax).
- Trace the value to its source with [Debug a Run](/reference/debug-a-run).
- Reproduce the mapping safely with [Testing & Debugging](/build/the-canvas/testing-and-debugging).
