Architect Data Action returning undefined despite 200 OK from external API

I’ve got a custom Data Action in Architect that calls a simple REST endpoint to fetch customer tier data. The external service is returning a valid JSON payload with a 200 status, but the success output in the Data Action configuration is consistently showing undefined for the mapped fields.

Here’s the response body I’m seeing in the debug logs:

{
 "status": "success",
 "data": {
 "tier": "gold",
 "points": 4500
 }
}

My JSON path mapping in the Data Action is set to $.data.tier for the output variable customerTier. I’ve double-checked the spelling and the case sensitivity. I’ve also tried using $.tier assuming the top-level object might be flattened, but that also returns undefined.

The request headers include the necessary authentication tokens, and the connection test passes. I’m wondering if there’s a specific parsing issue with how Architect handles nested objects in the response body, or if I need to adjust the content-type handling in the request configuration.

Does anyone have an example of a working nested JSON mapping for a Data Action? I’m stuck on why the path isn’t resolving.

The Data Action parser in Architect expects the root response to match the schema you defined. Your payload wraps the actual data in a data object, but if your mapping is pointing directly to tier and points, it’s looking at the wrong level. The parser doesn’t automatically unwrap nested objects unless you tell it to.

Check your Data Action configuration. You need to use dot notation to drill down into the nested structure. If your success output field is named tier, the expression shouldn’t just be tier. It needs to be data.tier. Same for pointsdata.points.

Here’s how the mapping should look in the Data Action success output:

{
 "tier": "{{data.tier}}",
 "points": "{{data.points}}"
}

If you’re still seeing undefined, verify that the external API is actually returning application/json in the Content-Type header. Architect’s parser can be finicky with text/plain responses that look like JSON. Also, make sure there’s no trailing whitespace or BOM in the response body, which can break the JSON.parse step silently.

Another common gotcha is case sensitivity. If the API returns Data instead of data, the expression data.tier will fail. Double-check the exact casing in the raw response.

If the structure is deeper, like data.customer.tier, just extend the path accordingly. Don’t try to parse it in a script step unless you have to. The built-in mapper handles simple nesting just fine.

Also, check the timeout setting. If the external service is slow, Architect might timeout before the full response is received, resulting in a partial or empty object. Set the timeout to at least 5 seconds for testing.

If it’s still broken, paste the exact Data Action configuration JSON here. Specifically the successOutput section.