OpenTelemetry context lost in Genesys Cloud Data Action external API call

We’re trying to maintain a continuous OpenTelemetry trace from our Node.js backend through a Genesys Cloud Architect Data Action that calls an external REST API. The goal is to have the trace context propagate smooth so we can view the entire flow in Jaeger.

Here’s the setup:

  1. Node.js service makes a request to GC, injecting traceparent in the header.
  2. GC Data Action triggers and calls our external API (https://api.example.com/user/profile).
  3. External API responds with JSON.

The issue is that the trace context isn’t making it into the external API call from the Data Action. The Data Action configuration looks like this:

{
 "inputs": [
 {
 "name": "userId",
 "value": "${user.id}"
 }
 ],
 "outputs": [
 {
 "name": "profileData",
 "value": "${response.body}"
 }
 ],
 "configuration": {
 "url": "https://api.example.com/user/profile?id=${userId}",
 "method": "GET",
 "headers": {
 "Authorization": "Bearer ${token}"
 }
 }
}

I’ve tried injecting the traceparent header manually in the configuration, but it seems to get stripped or ignored. Is there a standard way to pass custom headers from a Data Action to an external API? Or is this a limitation of the GC platform?

The external API is definitely receiving the request, but without the trace context. I’ve verified the headers on the outbound call using a proxy, and they’re not there.

doesn’t pass custom headers by default. You’ll need a REST Proxy to handle the header mapping. Set up a simple Node.js proxy that accepts the traceparent and forwards it to your backend. It’s messy but works.

// logic
const headers = { 'traceparent': event.headers.traceparent };