Docs
JSON Parser Pro adds one action, Parse JSON, to your GoHighLevel workflows. It reads a JSON payload, pulls out the values you name, and hands them to later steps. Everything is configured on the workflow node itself — there is no separate settings screen to keep in sync.
Setting up a node
Add Parse JSON after whatever produces the JSON: an inbound webhook, a custom webhook response, or a custom field holding a payload. Then fill in:
json: the payload itself, usually a merge field.path_1…path_10— the paths to pull. Leave the ones you do not need empty.label: a name for this step. GoHighLevel does not send node names, so this is what identifies the node in your history. Setting it to something like{{workflow.name}} — order parseworks well.
Each path fills the matching output: path_1 producesvalue_1, and so on. Reference those in any later step.
Path syntax
Four styles work, and the action picks the right engine automatically.
- Plain key:
email— matches a key at the top level only. If the key sits deeper, a bare name resolves to empty rather than erroring, so use recursive descent ($..email) instead. - Dot notation:
order.customer.email. - Array index:
order.items[0].sku. Negative indexes count from the end, soitems[-1].skuis the last one. - JSONPath: used automatically when the path contains
$,[*],..,[?or@.. That covers wildcards ($.items[*].sku), recursive descent ($..sku) and filters ($.items[?(@.qty>1)].sku).
Not sure what a path should be? Open the app inside GoHighLevel and usePath finder: paste a payload, click the value you want, and it writes the path for you and shows what it resolves to.
Arrays, separators and fallbacks
When a path matches several values — a wildcard or a filter, they are joined into one string. Three optional fields per slot change that, if your marketplace action exposes them. Leave any of them blank to keep the default.
array_N:join(default),first,lastorcount. A typo falls back tojoinrather than failing the run.separator_N: what to glue joined values with. Defaults to a comma and a space.fallback_N: what to return when the path matches nothing. Defaults to empty.
What the outputs mean
value_1…value_10: the extracted values.count: how many paths actually resolved.success: false only when the payload itself could not be read. A path that matches nothing does not make this false.error: why the payload could not be read, if it could not.
When something does not match
A path that finds nothing returns empty and the workflow carries on. That is deliberate: a vendor dropping an optional field should not stop your automation. The trade-off is that a broken extraction is quiet, so check the history page — it records every run, the payload it received and what came back.
If the payload arrives malformed (smart quotes from a copy-paste, a stray code fence, a small syntax error) the action repairs what it can before parsing. Runs that needed repair are flagged in history.
Limits
- Ten values per action. Need more? Add a second Parse JSON step. Note that each step is a separate GoHighLevel premium execution.
- History is kept 30 days, then deleted automatically.
- The history page only opens inside GoHighLevel. It reads your account context from the page around it, so a direct link has nothing to show.
Getting help
Email dev@appexpertly.com and we will reply within24 hours. Including the node label and roughly when the run happened makes it much faster to look into.
Not installed yet? Install JSON Parser Pro.