Quick question about PII masking consistency in Performance Dashboards. We are observing a discrepancy between the raw conversation logs and the aggregated metrics displayed in the standard Agent Performance view. The business requirement is strict GDPR compliance, necessitating that all personally identifiable information be redacted before reaching the dashboard layer. Currently, the transcription data appears correctly masked in the Conversation Detail view, yet the underlying JSON payload used for custom dashboard widgets retains the original text segments.
The environment is EU-West-1. The flow configuration is set to enforce transcription privacy as follows:
flow:
name: Main_Inbound_Routing
transcription:
mode: automatic
privacy:
enabled: true
pii_detection: true
redaction_level: full
Despite this, the dashboard metric ‘Sentiment Score’ seems to be calculated on the unredacted text, leading to potential compliance violations if the widget data is exported. Is there a specific API endpoint or configuration flag required to ensure the dashboard ingestion pipeline respects the redaction_level setting defined in Architect? The current behavior suggests a gap between the UI rendering logic and the backend data processing for reporting purposes.
TL;DR: The dashboard aggregates from the analytics store, not the raw transcription store. You need to enable PII masking at the analytics ingestion level, not just the transcription layer.
You need to adjust the data flow configuration because the standard Agent Performance view pulls from the aggregated analytics database, which is separate from the raw conversation logs where you confirmed masking works. The transcription API handles redaction for the detail view, but the analytics pipeline often ingests the original text before the masking rule is applied in the UI layer. To fix this discrepancy, you have to ensure the PII masking rules are active on the analytics ingestion endpoint or use the specific masked fields in your dashboard widget configuration.
In Genesys Cloud, you can force the dashboard to use the masked transcription by selecting the masked_text field instead of text when building custom metrics or reports. If you are using the default widgets, check if your org has the “Mask PII in Analytics” setting enabled in the admin console under Data Privacy. If that toggle is off, the analytics store retains the original PII for calculation purposes, causing the leak you are seeing.
Here is a quick JMeter test setup to verify if the analytics API is returning masked data:
<httpSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler">
<elementProp name="HTTPsampler.Arguments">
<collectionProp>
<elementProp name="uri" elementType="Argument">
<stringProp name="Argument.Value">/api/v2/analytics/conversations/details/query</stringProp>
</elementProp>
</collectionProp>
</elementProp>
</httpSampler>
Run this with a high concurrency to see if the response payload contains the raw PII. If it does, the issue is definitely in the analytics ingestion config, not the dashboard rendering. The documentation suggests enabling the global masking policy for all data stores to ensure consistency across both real-time and historical views.