# Plex webhook handler request.body sends back {}

**URL:** <https://forums.plex.tv/t/plex-webhook-handler-request-body-sends-back/465148>\
**Category:** General Discussions\
**Tags:** webhooks\
**Created:** [September 22, 2019, 3:43pm UTC](https://forums.plex.tv/t/plex-webhook-handler-request-body-sends-back/465148 "2019-09-22T15:43:33Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![bence056](https://avatars.discourse-cdn.com/v4/letter/b/bb73d2/32.png) [@bence056](https://forums.plex.tv/u/bence056)\
**Post date:** [September 22, 2019, 3:43pm UTC](https://forums.plex.tv/t/plex-webhook-handler-request-body-sends-back/465148/1 "2019-09-22T15:43:33Z")

</div>

Hello Guys. I’m opening this topic because I haven’t found any usable topics about this problem yet.  
I’m running node.js with the script below, and when I activate an event on plex, I get a pair of curly braces back (empty JSON, I think), logging request.body without any information.

Code:  
var express = require(‘express’)  
, request = require(‘request’)  
, bodyParser = require(‘body-parser’);

var app = express();  
app.use(bodyParser.urlencoded({ extended: true }))

app.use(bodyParser.json());

app.post(’/’, function (req, res) {

```
console.log(req.body);

res.sendStatus(200);

```

});

app.listen(1000);

Can anyone help please

---

<div class="post-metadata">

**Author:** ![MattJ](https://avatars.discourse-cdn.com/v4/letter/m/e495f1/32.png) [@MattJ](https://forums.plex.tv/u/MattJ)\
**Post date:** [October 12, 2019, 7:44pm UTC](https://forums.plex.tv/t/plex-webhook-handler-request-body-sends-back/465148/2 "2019-10-12T19:44:14Z")

</div>

I’m having the same issue. Both plex and node server on the same host. I’m definitely getting a POST request but it is coming in with an empty body. You ever sort this one out?

edit:  
nvm pretty sure I figured this out. body-parser urlencoded doesn’t work for for multi-part form data, which is the content type for Plex Webhooks. You need to use a different parser. See here: [https://www.npmjs.com/package/body-parser#readme](https://www.npmjs.com/package/body-parser#readme) They recommend you use something like formidible or multer

---

<div class="post-metadata">

**Author:** ![bence056](https://avatars.discourse-cdn.com/v4/letter/b/bb73d2/32.png) [@bence056](https://forums.plex.tv/u/bence056)\
**Post date:** [October 12, 2019, 8:05pm UTC](https://forums.plex.tv/t/plex-webhook-handler-request-body-sends-back/465148/3 "2019-10-12T20:05:23Z")

</div>

I still can’t solve it, so I’m using PHP. I can post the code if you want to use it as well. It works perfectly. The olny problem is that it’s slow, perhaps because I’m using ZWave devices.

edit: Thanks, I’ll try with multer!

---

<div class="post-metadata">

**Author:** ![MattJ](https://avatars.discourse-cdn.com/v4/letter/m/e495f1/32.png) [@MattJ](https://forums.plex.tv/u/MattJ)\
**Post date:** [October 12, 2019, 11:25pm UTC](https://forums.plex.tv/t/plex-webhook-handler-request-body-sends-back/465148/4 "2019-10-12T23:25:09Z")

</div>

ahh cool. I ended up using busboy actually. Seems to work pretty good. I used it like so:

```auto
import Busboy from 'busboy'
import express from 'express'
const router = new express.Router();

router.post('/plex', async function(req, res, next) {
    const busboy = new Busboy({ headers: req.headers });
    let payload = null;
    busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
        file.resume(); // don't care about saving the poster
    });
    busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated, encoding, mimetype) {
        if (fieldname === 'payload') {
            try {
                payload = JSON.parse(val);
            } catch (e) {
                log.info(e);
            }
        }
    });
    busboy.on('finish', async function() {
        if (payload) {
            if (payload.event === 'media.play'){
                const webhook = new IncomingWebhook(slackConfig.webhookURL);
                const msg = {
                    text: `Server ${payload.Server.title} is playing the following ${payload.Metadata.type} ${payload.Metadata.title}`
                };
                await webhook.send(msg);
                log.info(`sent a message to slack!:${msg}`);
            } else {
                log.info(`noop for ${payload.event}`);
            }
        }
        res.writeHead(303, { Connection: 'close', Location: '/' });
        res.end();
    });
    return req.pipe(busboy);
});

```

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/plex/original/3X/2/a/2acb9765406f63293d357b4ec509ec39aa28f2ad.png) [@system](https://forums.plex.tv/u/system)\
**Post date:** [January 10, 2020, 11:25pm UTC](https://forums.plex.tv/t/plex-webhook-handler-request-body-sends-back/465148/5 "2020-01-10T23:25:10Z")

</div>

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
