URL Encoded Form Data

Webhook Relay detects application/x-www-form-urlencoded requests and automatically parses them so your function can use it. Parsed form data can be accessed through r.RequestFormData variable.

Using decoded values

For example if the payload looks like this:

name=john&lastname=wick

Then you can access the form elements and use them to create a new payload:

local json = require("json")

local encoded_payload = {
  name= r.RequestFormData.name[1],
  lastname=r.RequestFormData.lastname[1]
}
local encoded_payload, err = json.encode(encoded_payload)
if err then error(err) end

r:SetRequestHeader("Content-Type", "application/json")
r:SetRequestBody(encoded_payload)

This would transform the webhook into:

{
  "name": "john",
  "lastname": "wick"
}

Nested forms

If your form contains nested fields such as &campaign%5Bid%5D=98 you can access them directly as well:

r:SetRequestBody(r.RequestFormData["campaign[id]"][1])

Prerequisites

For the decoding to work, Webhook Relay expects a header Content-Type that includes application/x-www-form-urlencoded and the boundary.