Architect GetExternalContactAction returning empty result set for valid phone number

We are trying to implement a customer lookup flow in Architect using the GetExternalContactAction. The goal is simple: take the inbound caller’s phone number, query our external CRM via the configured External Contact integration, and populate the conversation attributes with the customer’s name and tier.

I have verified the external integration configuration in the admin console. The endpoint is returning a 200 OK when I test it manually with Postman using the same phone number format. The JSON response from the CRM looks like this:

{
 "results": [
 {
 "id": "cust-12345",
 "attributes": {
 "name": "John Doe",
 "tier": "Gold"
 }
 }
 ]
}

In Architect, I have the action set up to map conversation.participant.phone_number to the search key phone_number. The action completes without throwing an error. However, the downstream IF condition checking for contact.result always evaluates to false, and the contact.attributes map remains empty.

I’ve checked the logs for the specific execution ID. The action status is COMPLETE but the result count is 0. I suspect there might be a mismatch in how Architect serializes the phone number string before sending it to the external endpoint. I tried wrapping the input in toString() and even replace("+", "") just in case the leading plus sign was causing issues, but the behavior is identical.

Has anyone seen this specific behavior with GetExternalContactAction? Is there a specific format required for the search key payload that isn’t documented clearly? We’ve been debugging this for two days and it feels like we are missing a trivial configuration detail.