I found an answer if your app is running on Express.js
The Survey Monkey Webhook POST declares a header 'application/vnd.surveymonkey.response.v1+json'
If you don't handle this in Express, the request.body object will be empty.
You can use body-parser and define the header:
app.use(bodyParser.json({
type: 'application/vnd.surveymonkey.response.v1+json'
}));
See documentation here - body-parser types
I should also mention that when I created my Webhook with Survey Monkey, I did include 'content-type' but it wasn't until I added this extra configuration in my app that it started showing me POST data.
Example Webhook creation:
{
"name": "My Survey Completed Webhook",
"event_type": "response_completed",
"object_type": "survey",
"object_ids": ["1234"],
"subscription_url": "https://APP_URL/survey-responses",
"content_type": "application/json"
}