Notification API WebSocket subscription not receiving 'conversation:updated' events

I am building a custom agent desktop extension using the Client App SDK and I need to listen for real-time updates when a conversation’s wrap-up code changes. I’ve been reading the docs on the Notification API and I think I understand how to get the WebSocket connection started, but the actual data flow seems broken. I can get the connection open and I see the ‘connected’ event in my console, but when I update a conversation in the web client, my extension receives nothing. No errors, just silence.

Here is the logic I am using to subscribe. First, I fetch the WebSocket URL using the REST API:

const response = await fetch('/api/v2/analytics/eventstreams/ws', {
 headers: { 'Authorization': 'Bearer ' + accessToken }
});
const data = await response.json();
const wsUrl = data.url;

Then I initialize the WebSocket and send the subscription payload:

const ws = new WebSocket(wsUrl);
ws.onopen = () => {
 const subscribeMsg = {
 'eventSubscriptions': [
 {
 'entityId': 'conversations',
 'eventType': 'conversation:updated',
 'filter': 'type eq "voice"'
 }
 ]
 };
 ws.send(JSON.stringify(subscribeMsg));
};

The onopen callback fires without issues. I also have an onmessage handler that logs everything it receives:

ws.onmessage = (event) => {
 console.log('WS Message:', event.data);
};

But the log is empty after the connection. I tried changing the eventType to conversation:created and that worked fine when I started a new call. The problem seems specific to conversation:updated. Is the filter syntax wrong? Or maybe I need to include a specific field in the subscription request to trigger updates for metadata changes like wrap-up codes? I’ve been staring at this for two days and I’m running out of ideas. The docs say ‘updated’ fires for any change, but nothing happens. Can anyone spot what I’m missing in the payload?