GetExternalContactAction returning empty contact data for phone number lookup

We are trying to set up a screen pop based on the caller’s phone number using the Architect GetExternalContactAction. The goal is simple. We want to fetch customer details from our internal CRM API when a call comes in.

I have configured the Data Action in Architect. The input mapping takes the from.phoneNumber from the trigger and passes it to the external request. Here is the JSON configuration for the Data Action:

{
 "type": "GetExternalContactAction",
 "key": "crmLookup",
 "configuration": {
 "endpointUrl": "https://api.internal.company.com/v1/customers/phone",
 "method": "GET",
 "headers": {
 "Authorization": "Bearer ${ENV.CRM_API_KEY}"
 },
 "queryParams": {
 "number": "${trigger.from.phoneNumber}"
 }
 }
}

The issue is that the action completes without error, but the output fields are empty. The CRM API definitely returns data when I test it in Postman with the same query parameters. I checked the logs in Genesys Cloud and see the HTTP 200 OK response from our endpoint, but the Architect flow doesn’t seem to parse the JSON body into the contact fields.

Our API returns this payload:

{
 "id": "12345",
 "name": "John Doe",
 "email": "john.doe@example.com",
 "phone": "+15550199"
}

I am not sure if I need to specify a response mapping schema in the Data Action configuration. I’ve tried adding a responseFields array, but I don’t see documentation on the exact structure for GetExternalContactAction. Is there a specific way to map the JSON response keys to the contact attributes? The default behavior seems to ignore the body entirely.

Check the responsePath in your JSON config. If the CRM returns a nested object, you need to specify the exact path like $.customer.name instead of just name, otherwise the action returns null. I usually trace these with New Relic to see the raw payload structure.