Just a question though, do you do any kind of validation of the Webhook POST? I can't see it in your code, so if I found out where your Webhooks send their data to, I could flood your sites with updates.
Not that it's a big problem in closed source projects, but I've been doing this in open source and it is absolutely necessary to validate a secret. I've done it very crudely with a GUID in a querystring but I know it can be done better by signing the message properly.