GetExternalContactAction returning empty payload for known DID

We’ve got a flow that kicks off on inbound voice calls. The goal is simple: grab the from number, hit our internal CRM via the GetExternalContactAction data action, and populate a few custom attributes for the agent screen.

The issue is that the action completes successfully (status 200), but the output payload is just an empty object {}. This happens for numbers that definitely exist in our DB. I’ve checked the external service endpoint directly with Postman using the same phone number format, and it returns the expected JSON record. So the backend is fine.

Here’s the relevant snippet from the Architect flow:

{
 "type": "GetExternalContactAction",
 "settings": {
 "requestUrl": "https://api.ourcrm.com/v1/contacts?phone={{from}}",
 "method": "GET",
 "headers": {
 "Authorization": "Bearer {{secret.token}}"
 }
 }
}

I’ve tried the following:

  • Verified the {{from}} variable contains the correct E.164 format by logging it to a debug attribute.
  • Checked the Data Action logs in Architect. It shows Status: 200 and Response: {}.
  • Confirmed the CRM returns Content-Type: application/json.
  • Tried adding Accept: application/json to the headers in the action.

The CRM response looks like this:

{
 "id": "12345",
 "name": "John Doe"
}

Is there a specific schema requirement for GetExternalContactAction that I’m missing? It feels like it’s swallowing the response body. Checking the docs now but thought I’d ask here in case someone hit this wall before.