GetExternalContactAction returning empty payload for valid phone lookup

We’ve hit a wall with the GetExternalContactAction in our Architect flow. We need to pull customer details based on the inbound caller ID before routing to a skill group. The external system is a simple HTTP endpoint that accepts a phone number and returns a JSON object with customer metadata.

I’ve configured the action to POST to our internal API. The request body is mapped to the incoming interaction’s phone number. When I test the flow in Architect, the action completes without throwing an error, but the response payload is completely empty. No fields are populated in the context data.

Here is the JSON configuration for the external contact action:

{
 "url": "https://internal-api.example.com/v1/customer/lookup",
 "method": "POST",
 "headers": {
 "Content-Type": "application/json"
 },
 "body": "{
 \"phoneNumber\": \"{{interaction.from.phoneNumber}}\"
 }"
}

The external service returns a 200 OK with valid JSON. I’ve verified this via Postman. The issue seems to be how Architect parses the response. I’ve tried mapping specific fields in the action output configuration, but nothing sticks. Is there a specific format required for the response body? We’re running the latest Architect version. Any ideas on why the payload isn’t sticking?

1 Like

docs state “the external system must return a JSON object matching the expected schema.” if your payload is empty, check the content-type header. you might be sending form-urlencoded instead of json.

  • set the header Content-Type: application/json in the data action node.
  • ensure the body is a valid JSON string. use this expression for the body:
{"phone": "{{interaction.telephony.phoneNumber}}" }
  • verify the external API returns 200 OK with a JSON body. if it returns 204 No Content, the action fails silently.
  • check the timeout. default is 3s. if your API is slow, increase it in the node settings.

if it still fails, add a debug step before the action to log the phone number. make sure it’s not null.