Skip to Content
BuildAction StepsParse JSON

Parse JSON

Turn a raw JSON string into structured fields that downstream Steps can pick and map directly.

At a glanceVerified in app · Oct 29, 2026
Use it to
Turn a raw JSON string into individual fields for downstream Steps
Find it
Tools → Data → Convert → Parse JSON
Cost
1 Step credit per execution
Output
Parsed fields directly ({{ N.field }}, {{ N.items.0.sku }}) or {{ N.$full_result }}
Instead
Inline pipe ({{ 1.rawJson | parse_json }}) or Parse JSON Result toggle on AI Prompt

Keyboard shortcut: t then p

Use it when an earlier step outputs a JSON string wrapped in quotes and braces. This often happens with webhook text fields, API strings, database JSON columns, or .json files. When the data picker shows only the raw string, Parse JSON exposes the inner fields and unescapes \" and \n.

HTTP RequestConditions (is not empty)Parse JSONDownstream Step

Setting it up

Add the step

Press t+p, or open Tools → Data → Convert in the dock and select Parse JSON.

Select the JSON string

In the Input field, select the data reference that contains your JSON string (for example, the response body from a previous HTTP Request step).

Save and map fields

Save the step. Glow detects the structure of the parsed JSON so downstream steps can pick individual fields.

What it passes on

The Step returns the parsed value directly. It can be a record, list or scalar, depending on the input JSON. Use {{ 4.$full_result }} for the whole value from Step 4, including a scalar or a root-level list.

  • A record inside a record is reached with another dot: {{ 4.customer.name }}.
  • A list uses the item’s position counting from zero, with either a dot or square brackets, so {{ 4.items.0.sku }} and {{ 4.items[0].sku }} both resolve the first item.
  • Deeper than that follows the same pattern all the way down: {{ 4.results.2.metadata.tags.0 }}.

Examples to copy

Reading an app’s answer

Suppose an HTTP Request step calls https://api.example.com/orders/12345 and returns the following response body as a string:

{ "order_id": 12345, "customer": { "name": "Acme Corp", "email": "[email protected]" }, "items": [ { "sku": "WIDGET-A", "quantity": 10 }, { "sku": "WIDGET-B", "quantity": 5 } ], "total": 249.99 }

If Parse JSON is Step 4, the example above exposes these fields directly:

ReferenceValue
{{ 4.order_id }}12345
{{ 4.customer.name }}"Acme Corp"
{{ 4.customer.email }}"[email protected]"
{{ 4.items.0.sku }}"WIDGET-A"
{{ 4.items.0.quantity }}10
{{ 4.items.1.sku }}"WIDGET-B"
{{ 4.total }}249.99

You can now use {{ 4.customer.name }} in a Slack message Step, or {{ 4.total }} in a Conditions Step.

The data picker shows these as customer.name and total, without the step number. That is the label, not the reference. Pick the value from the picker and Glow inserts the full form for you.

Limits

Input ProblemBehaviorHow to Handle It
Malformed JSONFails the Step with a parsing error.Inspect the raw input in the source Step’s Executions tab, or clean reliably malformed text first with Code editor.
Empty input ("" or missing)Fails parsing (whereas valid JSON like null, {}, or [] parses without named fields).Gate optional fields with Conditions using {{ 2.payload | default:"" }} and is not empty before Parse JSON.
Very large payloadsSubject to step output and memory limits.Request only needed fields or paginate at the source.
Verify it works
Run
Select a JSON string in Input and click Run step in Test & Debug
You should see
The Step's Executions tab shows the parsed object or list, and downstream Steps can pick individual fields like {{ N.customer.name }}.

What’s Next?

Last updated on

Search documentation

Start with a guide, or search by Step, task or error.