Messaging.conversation.updated payload nesting breaking Express middleware on 2024-12.960.0

Problem
GC sits at 2024-12.960.0. The Express middleware catches messaging.conversation.updated events, but the payload structure shifted again. JWT signs match up, yet the route handler keeps throwing a TypeError when trying to parse the message body. The downstream Lambda consumer expects a flat messages array, but the webhook is now wrapping everything in a nested history object.

app.post('/webhooks/messaging', verifyJwt, (req, res) => {
 const payload = req.body;
 const msgText = payload.messages[0].text; // TypeError: Cannot read properties of undefined (reading 'text')
 console.log('Processing digital msg:', msgText);
 res.status(200).send('OK');
});

Console logs show the actual body shape looks completely different now. The channelType stays as whatsapp, but the messages key is gone. Instead there’s a conversation object with an interactions array buried three levels deep. Doing jack all to catch it before it hits the EventBridge queue. The JWT validation layer using jsonwebtoken 9.0.2 passes without a hitch, so the signature isn’t the culprit. Just the payload shape breaking the ingestion pipeline.

Architect flow is standard digital routing, nothing fancy with bot handoffs. The event fires every time an agent replies or the customer sends a sticker. Middleware runs on Node 20.11.0, Express 4.18.2. Checked the release notes for 2024-12.960.0 and didn’t see any mention of digital payload restructuring. WebSocket Notification API shows the same nested shape, so it’s not just a webhook quirk.

Parsing the interactions array manually works, but feels like patching a leaky pipe. The type field inside interactions defaults to message instead of text, which breaks the existing switch statement. Doesn’t look like a documented change anywhere. The direction field also flipped to INBOUND instead of inbound.

{
 "conversation": {
 "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
 "interactions": [
 {
 "type": "message",
 "direction": "INBOUND",
 "content": "hello from whatsapp"
 }
 ]
 }
}

Node process crashes after 30 requests. Memory usage spikes because the error handler keeps retrying the same malformed payload. EventBridge consumer sits idle waiting for the flattened structure. The schema version field in the header just says v1.