Under the covers, it send the json property as a string. As long as after replacing {{PARTICLE_EVENT_VALUE}} and other variables the string ends up being valid JSON it will work.
The secret is in the syntax used in the JSON. For example, a, b, and c are numbers and ts is a string.
{{a}} would give you a number.
"{{a}}" would give a string.
And of course, you would upload this webhook using particle CLI:
particle webhook create name.json
Good luck!
EDIT: totally skipped over @jvanier post. That is awesome that you’ve made improvements to the Console. Well needed, thanks!
In fact, if you paste this in the Custom Template tab of the new webhook screen in the Console and go back to the Webhook Editor, you’ll get a nice JSON editor for your custom data.