[{"data":1,"prerenderedAt":1618},["ShallowReactive",2],{"content-query-frbLksQIcV":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"layout":10,"head":11,"author":13,"tags":14,"categories":20,"date":22,"image":23,"faq":24,"excerpt":34,"body":59,"_type":1611,"_id":1612,"_source":1613,"_file":1614,"_stem":1615,"_extension":1616,"sitemap":1617},"/blog/jotform-webhook-form-data-json","blog",false,"","Jotform Webhooks: Convert Form Data to JSON","Set up a Jotform webhook, parse its multipart form fields and rawRequest value, convert the submission to clean JSON, and forward it to any API.","post",{"title":12},"Jotform Webhook to JSON: Setup and Transformation","Karolis Rusenas",[15,16,17,18,19],"jotform","webhooks","form data","json","transformations",[21],"integrations","2026-09-06 09:45:00","/images/blog/heroes/route.jpg",[25,28,31],{"q":26,"a":27},"What format does a Jotform webhook use?","Jotform submissions commonly arrive as form fields and include rawRequest, a JSON string containing the submitted answers. Parse the multipart form data first, then JSON.parse the first rawRequest value.",{"q":29,"a":30},"How do I convert a Jotform webhook to JSON?","Use a Webhook Relay JavaScript function to read r.formData.rawRequest[0], parse it with JSON.parse, select and rename the fields your API needs, then call r.setBody and set Content-Type to application/json.",{"q":32,"a":33},"Can Jotform send one submission to multiple APIs?","Yes. Jotform supports multiple webhook endpoints, or you can send it to one Webhook Relay input and fan the event out to several outputs with a different transform for each.",{"type":35,"children":36},"root",[37,54],{"type":38,"tag":39,"props":40,"children":41},"element","p",{},[42,45,52],{"type":43,"value":44},"text","Jotform can send every form submission to a webhook URL, but the receiving API often expects a clean JSON document rather than multipart form fields. The practical solution is to receive the Jotform webhook, parse its ",{"type":38,"tag":46,"props":47,"children":49},"code",{"className":48},[],[50],{"type":43,"value":51},"rawRequest",{"type":43,"value":53}," field, select the values you need, and forward a new JSON body.",{"type":38,"tag":39,"props":55,"children":56},{},[57],{"type":43,"value":58},"This guide uses a Webhook Relay JavaScript function, so there is no parsing server to deploy.",{"type":35,"children":60,"toc":1592},[61,71,75,82,113,126,213,218,224,238,251,257,262,309,314,325,337,478,483,489,494,1121,1156,1295,1301,1306,1371,1376,1382,1387,1418,1423,1429,1434,1439,1467,1473,1486,1499,1511,1523,1529,1540,1546,1559,1586],{"type":38,"tag":39,"props":62,"children":63},{},[64,65,70],{"type":43,"value":44},{"type":38,"tag":46,"props":66,"children":68},{"className":67},[],[69],{"type":43,"value":51},{"type":43,"value":53},{"type":38,"tag":39,"props":72,"children":73},{},[74],{"type":43,"value":58},{"type":38,"tag":76,"props":77,"children":79},"h2",{"id":78},"what-jotform-sends",[80],{"type":43,"value":81},"What Jotform sends",{"type":38,"tag":39,"props":83,"children":84},{},[85,87,96,98,104,106,111],{"type":43,"value":86},"Jotform's ",{"type":38,"tag":88,"props":89,"children":93},"a",{"href":90,"rel":91},"https://www.jotform.com/help/245-how-to-send-submission-data-via-a-webhook/",[92],"nofollow",[94],{"type":43,"value":95},"webhook setup guide",{"type":43,"value":97}," shows that you add an endpoint under ",{"type":38,"tag":99,"props":100,"children":101},"strong",{},[102],{"type":43,"value":103},"Settings > Integrations > WebHooks",{"type":43,"value":105},". It also documents a ",{"type":38,"tag":46,"props":107,"children":109},{"className":108},[],[110],{"type":43,"value":51},{"type":43,"value":112}," value that can be JSON-decoded to access the submitted answers.",{"type":38,"tag":39,"props":114,"children":115},{},[116,118,124],{"type":43,"value":117},"In Webhook Relay, parsed multipart or URL-encoded fields are available under ",{"type":38,"tag":46,"props":119,"children":121},{"className":120},[],[122],{"type":43,"value":123},"r.formData",{"type":43,"value":125},". Each key holds an array because a form may submit the same name more than once:",{"type":38,"tag":127,"props":128,"children":132},"pre",{"className":129,"code":130,"language":131,"meta":7,"style":7},"language-javascript shiki shiki-themes github-dark","const rawRequest = r.formData.rawRequest[0]\nconst submission = JSON.parse(rawRequest)\n","javascript",[133],{"type":38,"tag":46,"props":134,"children":135},{"__ignoreMap":7},[136,175],{"type":38,"tag":137,"props":138,"children":141},"span",{"class":139,"line":140},"line",1,[142,148,154,159,165,170],{"type":38,"tag":137,"props":143,"children":145},{"style":144},"--shiki-default:#F97583",[146],{"type":43,"value":147},"const",{"type":38,"tag":137,"props":149,"children":151},{"style":150},"--shiki-default:#79B8FF",[152],{"type":43,"value":153}," rawRequest",{"type":38,"tag":137,"props":155,"children":156},{"style":144},[157],{"type":43,"value":158}," =",{"type":38,"tag":137,"props":160,"children":162},{"style":161},"--shiki-default:#E1E4E8",[163],{"type":43,"value":164}," r.formData.rawRequest[",{"type":38,"tag":137,"props":166,"children":167},{"style":150},[168],{"type":43,"value":169},"0",{"type":38,"tag":137,"props":171,"children":172},{"style":161},[173],{"type":43,"value":174},"]\n",{"type":38,"tag":137,"props":176,"children":178},{"class":139,"line":177},2,[179,183,188,192,197,202,208],{"type":38,"tag":137,"props":180,"children":181},{"style":144},[182],{"type":43,"value":147},{"type":38,"tag":137,"props":184,"children":185},{"style":150},[186],{"type":43,"value":187}," submission",{"type":38,"tag":137,"props":189,"children":190},{"style":144},[191],{"type":43,"value":158},{"type":38,"tag":137,"props":193,"children":194},{"style":150},[195],{"type":43,"value":196}," JSON",{"type":38,"tag":137,"props":198,"children":199},{"style":161},[200],{"type":43,"value":201},".",{"type":38,"tag":137,"props":203,"children":205},{"style":204},"--shiki-default:#B392F0",[206],{"type":43,"value":207},"parse",{"type":38,"tag":137,"props":209,"children":210},{"style":161},[211],{"type":43,"value":212},"(rawRequest)\n",{"type":38,"tag":39,"props":214,"children":215},{},[216],{"type":43,"value":217},"Use the request log to inspect a real sample from your form. Question keys differ between forms and can change when fields are renamed.",{"type":38,"tag":76,"props":219,"children":221},{"id":220},"_1-create-the-webhook-destination",[222],{"type":43,"value":223},"1. Create the webhook destination",{"type":38,"tag":39,"props":225,"children":226},{},[227,229,236],{"type":43,"value":228},"Open ",{"type":38,"tag":88,"props":230,"children":233},{"href":231,"rel":232},"https://my.webhookrelay.com/new-public-destination",[92],[234],{"type":43,"value":235},"Webhook Relay public forwarding",{"type":43,"value":237},", create a destination for your API, and copy the generated input URL.",{"type":38,"tag":39,"props":239,"children":240},{},[241,243,249],{"type":43,"value":242},"For initial testing, use ",{"type":38,"tag":88,"props":244,"children":246},{"href":245},"/webhook-bin",[247],{"type":43,"value":248},"Webhook Bin",{"type":43,"value":250}," as the destination so you can see both the original form fields and the transformed request without touching a production API.",{"type":38,"tag":76,"props":252,"children":254},{"id":253},"_2-add-the-webhook-in-jotform",[255],{"type":43,"value":256},"2. Add the webhook in Jotform",{"type":38,"tag":39,"props":258,"children":259},{},[260],{"type":43,"value":261},"In the Jotform Form Builder:",{"type":38,"tag":263,"props":264,"children":265},"ol",{},[266,277,288,299,304],{"type":38,"tag":267,"props":268,"children":269},"li",{},[270,271,276],{"type":43,"value":228},{"type":38,"tag":99,"props":272,"children":273},{},[274],{"type":43,"value":275},"Settings",{"type":43,"value":201},{"type":38,"tag":267,"props":278,"children":279},{},[280,282,287],{"type":43,"value":281},"Select ",{"type":38,"tag":99,"props":283,"children":284},{},[285],{"type":43,"value":286},"Integrations",{"type":43,"value":201},{"type":38,"tag":267,"props":289,"children":290},{},[291,293,298],{"type":43,"value":292},"Search for ",{"type":38,"tag":99,"props":294,"children":295},{},[296],{"type":43,"value":297},"WebHooks",{"type":43,"value":201},{"type":38,"tag":267,"props":300,"children":301},{},[302],{"type":43,"value":303},"Paste the Webhook Relay input URL.",{"type":38,"tag":267,"props":305,"children":306},{},[307],{"type":43,"value":308},"Complete one test submission.",{"type":38,"tag":39,"props":310,"children":311},{},[312],{"type":43,"value":313},"Jotform allows multiple webhook URLs, but a single Webhook Relay input is easier to manage when the same submission must go to several systems.",{"type":38,"tag":76,"props":315,"children":317},{"id":316},"_3-inspect-rawrequest",[318,320],{"type":43,"value":319},"3. Inspect ",{"type":38,"tag":46,"props":321,"children":323},{"className":322},[],[324],{"type":43,"value":51},{"type":38,"tag":39,"props":326,"children":327},{},[328,330,335],{"type":43,"value":329},"Open the received request in the Webhook Relay log. A simplified ",{"type":38,"tag":46,"props":331,"children":333},{"className":332},[],[334],{"type":43,"value":51},{"type":43,"value":336}," value may decode to:",{"type":38,"tag":127,"props":338,"children":341},{"className":339,"code":340,"language":18,"meta":7,"style":7},"language-json shiki shiki-themes github-dark","{\n  \"q3_fullName\": { \"first\": \"Ada\", \"last\": \"Lovelace\" },\n  \"q4_email\": \"ada@example.test\",\n  \"q5_company\": \"Analytical Engines Ltd\",\n  \"q6_message\": \"Please contact me about the API.\"\n}\n",[342],{"type":38,"tag":46,"props":343,"children":344},{"__ignoreMap":7},[345,353,406,429,451,469],{"type":38,"tag":137,"props":346,"children":347},{"class":139,"line":140},[348],{"type":38,"tag":137,"props":349,"children":350},{"style":161},[351],{"type":43,"value":352},"{\n",{"type":38,"tag":137,"props":354,"children":355},{"class":139,"line":177},[356,361,366,371,376,382,387,392,396,401],{"type":38,"tag":137,"props":357,"children":358},{"style":150},[359],{"type":43,"value":360},"  \"q3_fullName\"",{"type":38,"tag":137,"props":362,"children":363},{"style":161},[364],{"type":43,"value":365},": { ",{"type":38,"tag":137,"props":367,"children":368},{"style":150},[369],{"type":43,"value":370},"\"first\"",{"type":38,"tag":137,"props":372,"children":373},{"style":161},[374],{"type":43,"value":375},": ",{"type":38,"tag":137,"props":377,"children":379},{"style":378},"--shiki-default:#9ECBFF",[380],{"type":43,"value":381},"\"Ada\"",{"type":38,"tag":137,"props":383,"children":384},{"style":161},[385],{"type":43,"value":386},", ",{"type":38,"tag":137,"props":388,"children":389},{"style":150},[390],{"type":43,"value":391},"\"last\"",{"type":38,"tag":137,"props":393,"children":394},{"style":161},[395],{"type":43,"value":375},{"type":38,"tag":137,"props":397,"children":398},{"style":378},[399],{"type":43,"value":400},"\"Lovelace\"",{"type":38,"tag":137,"props":402,"children":403},{"style":161},[404],{"type":43,"value":405}," },\n",{"type":38,"tag":137,"props":407,"children":409},{"class":139,"line":408},3,[410,415,419,424],{"type":38,"tag":137,"props":411,"children":412},{"style":150},[413],{"type":43,"value":414},"  \"q4_email\"",{"type":38,"tag":137,"props":416,"children":417},{"style":161},[418],{"type":43,"value":375},{"type":38,"tag":137,"props":420,"children":421},{"style":378},[422],{"type":43,"value":423},"\"ada@example.test\"",{"type":38,"tag":137,"props":425,"children":426},{"style":161},[427],{"type":43,"value":428},",\n",{"type":38,"tag":137,"props":430,"children":432},{"class":139,"line":431},4,[433,438,442,447],{"type":38,"tag":137,"props":434,"children":435},{"style":150},[436],{"type":43,"value":437},"  \"q5_company\"",{"type":38,"tag":137,"props":439,"children":440},{"style":161},[441],{"type":43,"value":375},{"type":38,"tag":137,"props":443,"children":444},{"style":378},[445],{"type":43,"value":446},"\"Analytical Engines Ltd\"",{"type":38,"tag":137,"props":448,"children":449},{"style":161},[450],{"type":43,"value":428},{"type":38,"tag":137,"props":452,"children":454},{"class":139,"line":453},5,[455,460,464],{"type":38,"tag":137,"props":456,"children":457},{"style":150},[458],{"type":43,"value":459},"  \"q6_message\"",{"type":38,"tag":137,"props":461,"children":462},{"style":161},[463],{"type":43,"value":375},{"type":38,"tag":137,"props":465,"children":466},{"style":378},[467],{"type":43,"value":468},"\"Please contact me about the API.\"\n",{"type":38,"tag":137,"props":470,"children":472},{"class":139,"line":471},6,[473],{"type":38,"tag":137,"props":474,"children":475},{"style":161},[476],{"type":43,"value":477},"}\n",{"type":38,"tag":39,"props":479,"children":480},{},[481],{"type":43,"value":482},"The values above are synthetic. Copy the keys from your own test submission before writing the mapping.",{"type":38,"tag":76,"props":484,"children":486},{"id":485},"_4-convert-the-jotform-submission-to-json",[487],{"type":43,"value":488},"4. Convert the Jotform submission to JSON",{"type":38,"tag":39,"props":490,"children":491},{},[492],{"type":43,"value":493},"Attach this function to the output:",{"type":38,"tag":127,"props":495,"children":497},{"className":129,"code":496,"language":131,"meta":7,"style":7},"const values = r.formData || {}\nconst rawRequest = values.rawRequest && values.rawRequest[0]\n\nif (!rawRequest) {\n  r.stopForwarding()\n  return\n}\n\nlet submission\n\ntry {\n  submission = JSON.parse(rawRequest)\n} catch (error) {\n  r.stopForwarding()\n  return\n}\n\nconst name = submission.q3_fullName || {}\nconst payload = {\n  source: \"jotform\",\n  submission_id: values.submissionID && values.submissionID[0],\n  name: [name.first, name.last].filter(Boolean).join(\" \"),\n  email: submission.q4_email,\n  company: submission.q5_company,\n  message: submission.q6_message\n}\n\nif (!payload.submission_id || !payload.email) {\n  r.stopForwarding()\n  return\n}\n\nr.setMethod(\"POST\")\nr.setHeader(\"Content-Type\", \"application/json\")\nr.setBody(JSON.stringify(payload))\n",[498],{"type":38,"tag":46,"props":499,"children":500},{"__ignoreMap":7},[501,532,570,579,602,620,628,636,644,658,666,680,710,729,745,753,761,769,799,820,838,865,904,913,922,931,939,947,982,998,1006,1014,1022,1050,1085],{"type":38,"tag":137,"props":502,"children":503},{"class":139,"line":140},[504,508,513,517,522,527],{"type":38,"tag":137,"props":505,"children":506},{"style":144},[507],{"type":43,"value":147},{"type":38,"tag":137,"props":509,"children":510},{"style":150},[511],{"type":43,"value":512}," values",{"type":38,"tag":137,"props":514,"children":515},{"style":144},[516],{"type":43,"value":158},{"type":38,"tag":137,"props":518,"children":519},{"style":161},[520],{"type":43,"value":521}," r.formData ",{"type":38,"tag":137,"props":523,"children":524},{"style":144},[525],{"type":43,"value":526},"||",{"type":38,"tag":137,"props":528,"children":529},{"style":161},[530],{"type":43,"value":531}," {}\n",{"type":38,"tag":137,"props":533,"children":534},{"class":139,"line":177},[535,539,543,547,552,557,562,566],{"type":38,"tag":137,"props":536,"children":537},{"style":144},[538],{"type":43,"value":147},{"type":38,"tag":137,"props":540,"children":541},{"style":150},[542],{"type":43,"value":153},{"type":38,"tag":137,"props":544,"children":545},{"style":144},[546],{"type":43,"value":158},{"type":38,"tag":137,"props":548,"children":549},{"style":161},[550],{"type":43,"value":551}," values.rawRequest ",{"type":38,"tag":137,"props":553,"children":554},{"style":144},[555],{"type":43,"value":556},"&&",{"type":38,"tag":137,"props":558,"children":559},{"style":161},[560],{"type":43,"value":561}," values.rawRequest[",{"type":38,"tag":137,"props":563,"children":564},{"style":150},[565],{"type":43,"value":169},{"type":38,"tag":137,"props":567,"children":568},{"style":161},[569],{"type":43,"value":174},{"type":38,"tag":137,"props":571,"children":572},{"class":139,"line":408},[573],{"type":38,"tag":137,"props":574,"children":576},{"emptyLinePlaceholder":575},true,[577],{"type":43,"value":578},"\n",{"type":38,"tag":137,"props":580,"children":581},{"class":139,"line":431},[582,587,592,597],{"type":38,"tag":137,"props":583,"children":584},{"style":144},[585],{"type":43,"value":586},"if",{"type":38,"tag":137,"props":588,"children":589},{"style":161},[590],{"type":43,"value":591}," (",{"type":38,"tag":137,"props":593,"children":594},{"style":144},[595],{"type":43,"value":596},"!",{"type":38,"tag":137,"props":598,"children":599},{"style":161},[600],{"type":43,"value":601},"rawRequest) {\n",{"type":38,"tag":137,"props":603,"children":604},{"class":139,"line":453},[605,610,615],{"type":38,"tag":137,"props":606,"children":607},{"style":161},[608],{"type":43,"value":609},"  r.",{"type":38,"tag":137,"props":611,"children":612},{"style":204},[613],{"type":43,"value":614},"stopForwarding",{"type":38,"tag":137,"props":616,"children":617},{"style":161},[618],{"type":43,"value":619},"()\n",{"type":38,"tag":137,"props":621,"children":622},{"class":139,"line":471},[623],{"type":38,"tag":137,"props":624,"children":625},{"style":144},[626],{"type":43,"value":627},"  return\n",{"type":38,"tag":137,"props":629,"children":631},{"class":139,"line":630},7,[632],{"type":38,"tag":137,"props":633,"children":634},{"style":161},[635],{"type":43,"value":477},{"type":38,"tag":137,"props":637,"children":639},{"class":139,"line":638},8,[640],{"type":38,"tag":137,"props":641,"children":642},{"emptyLinePlaceholder":575},[643],{"type":43,"value":578},{"type":38,"tag":137,"props":645,"children":647},{"class":139,"line":646},9,[648,653],{"type":38,"tag":137,"props":649,"children":650},{"style":144},[651],{"type":43,"value":652},"let",{"type":38,"tag":137,"props":654,"children":655},{"style":161},[656],{"type":43,"value":657}," submission\n",{"type":38,"tag":137,"props":659,"children":661},{"class":139,"line":660},10,[662],{"type":38,"tag":137,"props":663,"children":664},{"emptyLinePlaceholder":575},[665],{"type":43,"value":578},{"type":38,"tag":137,"props":667,"children":669},{"class":139,"line":668},11,[670,675],{"type":38,"tag":137,"props":671,"children":672},{"style":144},[673],{"type":43,"value":674},"try",{"type":38,"tag":137,"props":676,"children":677},{"style":161},[678],{"type":43,"value":679}," {\n",{"type":38,"tag":137,"props":681,"children":683},{"class":139,"line":682},12,[684,689,694,698,702,706],{"type":38,"tag":137,"props":685,"children":686},{"style":161},[687],{"type":43,"value":688},"  submission ",{"type":38,"tag":137,"props":690,"children":691},{"style":144},[692],{"type":43,"value":693},"=",{"type":38,"tag":137,"props":695,"children":696},{"style":150},[697],{"type":43,"value":196},{"type":38,"tag":137,"props":699,"children":700},{"style":161},[701],{"type":43,"value":201},{"type":38,"tag":137,"props":703,"children":704},{"style":204},[705],{"type":43,"value":207},{"type":38,"tag":137,"props":707,"children":708},{"style":161},[709],{"type":43,"value":212},{"type":38,"tag":137,"props":711,"children":713},{"class":139,"line":712},13,[714,719,724],{"type":38,"tag":137,"props":715,"children":716},{"style":161},[717],{"type":43,"value":718},"} ",{"type":38,"tag":137,"props":720,"children":721},{"style":144},[722],{"type":43,"value":723},"catch",{"type":38,"tag":137,"props":725,"children":726},{"style":161},[727],{"type":43,"value":728}," (error) {\n",{"type":38,"tag":137,"props":730,"children":732},{"class":139,"line":731},14,[733,737,741],{"type":38,"tag":137,"props":734,"children":735},{"style":161},[736],{"type":43,"value":609},{"type":38,"tag":137,"props":738,"children":739},{"style":204},[740],{"type":43,"value":614},{"type":38,"tag":137,"props":742,"children":743},{"style":161},[744],{"type":43,"value":619},{"type":38,"tag":137,"props":746,"children":748},{"class":139,"line":747},15,[749],{"type":38,"tag":137,"props":750,"children":751},{"style":144},[752],{"type":43,"value":627},{"type":38,"tag":137,"props":754,"children":756},{"class":139,"line":755},16,[757],{"type":38,"tag":137,"props":758,"children":759},{"style":161},[760],{"type":43,"value":477},{"type":38,"tag":137,"props":762,"children":764},{"class":139,"line":763},17,[765],{"type":38,"tag":137,"props":766,"children":767},{"emptyLinePlaceholder":575},[768],{"type":43,"value":578},{"type":38,"tag":137,"props":770,"children":772},{"class":139,"line":771},18,[773,777,782,786,791,795],{"type":38,"tag":137,"props":774,"children":775},{"style":144},[776],{"type":43,"value":147},{"type":38,"tag":137,"props":778,"children":779},{"style":150},[780],{"type":43,"value":781}," name",{"type":38,"tag":137,"props":783,"children":784},{"style":144},[785],{"type":43,"value":158},{"type":38,"tag":137,"props":787,"children":788},{"style":161},[789],{"type":43,"value":790}," submission.q3_fullName ",{"type":38,"tag":137,"props":792,"children":793},{"style":144},[794],{"type":43,"value":526},{"type":38,"tag":137,"props":796,"children":797},{"style":161},[798],{"type":43,"value":531},{"type":38,"tag":137,"props":800,"children":802},{"class":139,"line":801},19,[803,807,812,816],{"type":38,"tag":137,"props":804,"children":805},{"style":144},[806],{"type":43,"value":147},{"type":38,"tag":137,"props":808,"children":809},{"style":150},[810],{"type":43,"value":811}," payload",{"type":38,"tag":137,"props":813,"children":814},{"style":144},[815],{"type":43,"value":158},{"type":38,"tag":137,"props":817,"children":818},{"style":161},[819],{"type":43,"value":679},{"type":38,"tag":137,"props":821,"children":823},{"class":139,"line":822},20,[824,829,834],{"type":38,"tag":137,"props":825,"children":826},{"style":161},[827],{"type":43,"value":828},"  source: ",{"type":38,"tag":137,"props":830,"children":831},{"style":378},[832],{"type":43,"value":833},"\"jotform\"",{"type":38,"tag":137,"props":835,"children":836},{"style":161},[837],{"type":43,"value":428},{"type":38,"tag":137,"props":839,"children":841},{"class":139,"line":840},21,[842,847,851,856,860],{"type":38,"tag":137,"props":843,"children":844},{"style":161},[845],{"type":43,"value":846},"  submission_id: values.submissionID ",{"type":38,"tag":137,"props":848,"children":849},{"style":144},[850],{"type":43,"value":556},{"type":38,"tag":137,"props":852,"children":853},{"style":161},[854],{"type":43,"value":855}," values.submissionID[",{"type":38,"tag":137,"props":857,"children":858},{"style":150},[859],{"type":43,"value":169},{"type":38,"tag":137,"props":861,"children":862},{"style":161},[863],{"type":43,"value":864},"],\n",{"type":38,"tag":137,"props":866,"children":868},{"class":139,"line":867},22,[869,874,879,884,889,894,899],{"type":38,"tag":137,"props":870,"children":871},{"style":161},[872],{"type":43,"value":873},"  name: [name.first, name.last].",{"type":38,"tag":137,"props":875,"children":876},{"style":204},[877],{"type":43,"value":878},"filter",{"type":38,"tag":137,"props":880,"children":881},{"style":161},[882],{"type":43,"value":883},"(Boolean).",{"type":38,"tag":137,"props":885,"children":886},{"style":204},[887],{"type":43,"value":888},"join",{"type":38,"tag":137,"props":890,"children":891},{"style":161},[892],{"type":43,"value":893},"(",{"type":38,"tag":137,"props":895,"children":896},{"style":378},[897],{"type":43,"value":898},"\" \"",{"type":38,"tag":137,"props":900,"children":901},{"style":161},[902],{"type":43,"value":903},"),\n",{"type":38,"tag":137,"props":905,"children":907},{"class":139,"line":906},23,[908],{"type":38,"tag":137,"props":909,"children":910},{"style":161},[911],{"type":43,"value":912},"  email: submission.q4_email,\n",{"type":38,"tag":137,"props":914,"children":916},{"class":139,"line":915},24,[917],{"type":38,"tag":137,"props":918,"children":919},{"style":161},[920],{"type":43,"value":921},"  company: submission.q5_company,\n",{"type":38,"tag":137,"props":923,"children":925},{"class":139,"line":924},25,[926],{"type":38,"tag":137,"props":927,"children":928},{"style":161},[929],{"type":43,"value":930},"  message: submission.q6_message\n",{"type":38,"tag":137,"props":932,"children":934},{"class":139,"line":933},26,[935],{"type":38,"tag":137,"props":936,"children":937},{"style":161},[938],{"type":43,"value":477},{"type":38,"tag":137,"props":940,"children":942},{"class":139,"line":941},27,[943],{"type":38,"tag":137,"props":944,"children":945},{"emptyLinePlaceholder":575},[946],{"type":43,"value":578},{"type":38,"tag":137,"props":948,"children":950},{"class":139,"line":949},28,[951,955,959,963,968,972,977],{"type":38,"tag":137,"props":952,"children":953},{"style":144},[954],{"type":43,"value":586},{"type":38,"tag":137,"props":956,"children":957},{"style":161},[958],{"type":43,"value":591},{"type":38,"tag":137,"props":960,"children":961},{"style":144},[962],{"type":43,"value":596},{"type":38,"tag":137,"props":964,"children":965},{"style":161},[966],{"type":43,"value":967},"payload.submission_id ",{"type":38,"tag":137,"props":969,"children":970},{"style":144},[971],{"type":43,"value":526},{"type":38,"tag":137,"props":973,"children":974},{"style":144},[975],{"type":43,"value":976}," !",{"type":38,"tag":137,"props":978,"children":979},{"style":161},[980],{"type":43,"value":981},"payload.email) {\n",{"type":38,"tag":137,"props":983,"children":985},{"class":139,"line":984},29,[986,990,994],{"type":38,"tag":137,"props":987,"children":988},{"style":161},[989],{"type":43,"value":609},{"type":38,"tag":137,"props":991,"children":992},{"style":204},[993],{"type":43,"value":614},{"type":38,"tag":137,"props":995,"children":996},{"style":161},[997],{"type":43,"value":619},{"type":38,"tag":137,"props":999,"children":1001},{"class":139,"line":1000},30,[1002],{"type":38,"tag":137,"props":1003,"children":1004},{"style":144},[1005],{"type":43,"value":627},{"type":38,"tag":137,"props":1007,"children":1009},{"class":139,"line":1008},31,[1010],{"type":38,"tag":137,"props":1011,"children":1012},{"style":161},[1013],{"type":43,"value":477},{"type":38,"tag":137,"props":1015,"children":1017},{"class":139,"line":1016},32,[1018],{"type":38,"tag":137,"props":1019,"children":1020},{"emptyLinePlaceholder":575},[1021],{"type":43,"value":578},{"type":38,"tag":137,"props":1023,"children":1025},{"class":139,"line":1024},33,[1026,1031,1036,1040,1045],{"type":38,"tag":137,"props":1027,"children":1028},{"style":161},[1029],{"type":43,"value":1030},"r.",{"type":38,"tag":137,"props":1032,"children":1033},{"style":204},[1034],{"type":43,"value":1035},"setMethod",{"type":38,"tag":137,"props":1037,"children":1038},{"style":161},[1039],{"type":43,"value":893},{"type":38,"tag":137,"props":1041,"children":1042},{"style":378},[1043],{"type":43,"value":1044},"\"POST\"",{"type":38,"tag":137,"props":1046,"children":1047},{"style":161},[1048],{"type":43,"value":1049},")\n",{"type":38,"tag":137,"props":1051,"children":1053},{"class":139,"line":1052},34,[1054,1058,1063,1067,1072,1076,1081],{"type":38,"tag":137,"props":1055,"children":1056},{"style":161},[1057],{"type":43,"value":1030},{"type":38,"tag":137,"props":1059,"children":1060},{"style":204},[1061],{"type":43,"value":1062},"setHeader",{"type":38,"tag":137,"props":1064,"children":1065},{"style":161},[1066],{"type":43,"value":893},{"type":38,"tag":137,"props":1068,"children":1069},{"style":378},[1070],{"type":43,"value":1071},"\"Content-Type\"",{"type":38,"tag":137,"props":1073,"children":1074},{"style":161},[1075],{"type":43,"value":386},{"type":38,"tag":137,"props":1077,"children":1078},{"style":378},[1079],{"type":43,"value":1080},"\"application/json\"",{"type":38,"tag":137,"props":1082,"children":1083},{"style":161},[1084],{"type":43,"value":1049},{"type":38,"tag":137,"props":1086,"children":1088},{"class":139,"line":1087},35,[1089,1093,1098,1102,1107,1111,1116],{"type":38,"tag":137,"props":1090,"children":1091},{"style":161},[1092],{"type":43,"value":1030},{"type":38,"tag":137,"props":1094,"children":1095},{"style":204},[1096],{"type":43,"value":1097},"setBody",{"type":38,"tag":137,"props":1099,"children":1100},{"style":161},[1101],{"type":43,"value":893},{"type":38,"tag":137,"props":1103,"children":1104},{"style":150},[1105],{"type":43,"value":1106},"JSON",{"type":38,"tag":137,"props":1108,"children":1109},{"style":161},[1110],{"type":43,"value":201},{"type":38,"tag":137,"props":1112,"children":1113},{"style":204},[1114],{"type":43,"value":1115},"stringify",{"type":38,"tag":137,"props":1117,"children":1118},{"style":161},[1119],{"type":43,"value":1120},"(payload))\n",{"type":38,"tag":39,"props":1122,"children":1123},{},[1124,1126,1132,1133,1139,1140,1146,1148,1154],{"type":43,"value":1125},"Replace ",{"type":38,"tag":46,"props":1127,"children":1129},{"className":1128},[],[1130],{"type":43,"value":1131},"q3_fullName",{"type":43,"value":386},{"type":38,"tag":46,"props":1134,"children":1136},{"className":1135},[],[1137],{"type":43,"value":1138},"q4_email",{"type":43,"value":386},{"type":38,"tag":46,"props":1141,"children":1143},{"className":1142},[],[1144],{"type":43,"value":1145},"q5_company",{"type":43,"value":1147}," and ",{"type":38,"tag":46,"props":1149,"children":1151},{"className":1150},[],[1152],{"type":43,"value":1153},"q6_message",{"type":43,"value":1155}," with the keys from your form. The result is a predictable API request:",{"type":38,"tag":127,"props":1157,"children":1159},{"className":339,"code":1158,"language":18,"meta":7,"style":7},"{\n  \"source\": \"jotform\",\n  \"submission_id\": \"6000000000000000000\",\n  \"name\": \"Ada Lovelace\",\n  \"email\": \"ada@example.test\",\n  \"company\": \"Analytical Engines Ltd\",\n  \"message\": \"Please contact me about the API.\"\n}\n",[1160],{"type":38,"tag":46,"props":1161,"children":1162},{"__ignoreMap":7},[1163,1170,1190,1211,1232,1252,1272,1288],{"type":38,"tag":137,"props":1164,"children":1165},{"class":139,"line":140},[1166],{"type":38,"tag":137,"props":1167,"children":1168},{"style":161},[1169],{"type":43,"value":352},{"type":38,"tag":137,"props":1171,"children":1172},{"class":139,"line":177},[1173,1178,1182,1186],{"type":38,"tag":137,"props":1174,"children":1175},{"style":150},[1176],{"type":43,"value":1177},"  \"source\"",{"type":38,"tag":137,"props":1179,"children":1180},{"style":161},[1181],{"type":43,"value":375},{"type":38,"tag":137,"props":1183,"children":1184},{"style":378},[1185],{"type":43,"value":833},{"type":38,"tag":137,"props":1187,"children":1188},{"style":161},[1189],{"type":43,"value":428},{"type":38,"tag":137,"props":1191,"children":1192},{"class":139,"line":408},[1193,1198,1202,1207],{"type":38,"tag":137,"props":1194,"children":1195},{"style":150},[1196],{"type":43,"value":1197},"  \"submission_id\"",{"type":38,"tag":137,"props":1199,"children":1200},{"style":161},[1201],{"type":43,"value":375},{"type":38,"tag":137,"props":1203,"children":1204},{"style":378},[1205],{"type":43,"value":1206},"\"6000000000000000000\"",{"type":38,"tag":137,"props":1208,"children":1209},{"style":161},[1210],{"type":43,"value":428},{"type":38,"tag":137,"props":1212,"children":1213},{"class":139,"line":431},[1214,1219,1223,1228],{"type":38,"tag":137,"props":1215,"children":1216},{"style":150},[1217],{"type":43,"value":1218},"  \"name\"",{"type":38,"tag":137,"props":1220,"children":1221},{"style":161},[1222],{"type":43,"value":375},{"type":38,"tag":137,"props":1224,"children":1225},{"style":378},[1226],{"type":43,"value":1227},"\"Ada Lovelace\"",{"type":38,"tag":137,"props":1229,"children":1230},{"style":161},[1231],{"type":43,"value":428},{"type":38,"tag":137,"props":1233,"children":1234},{"class":139,"line":453},[1235,1240,1244,1248],{"type":38,"tag":137,"props":1236,"children":1237},{"style":150},[1238],{"type":43,"value":1239},"  \"email\"",{"type":38,"tag":137,"props":1241,"children":1242},{"style":161},[1243],{"type":43,"value":375},{"type":38,"tag":137,"props":1245,"children":1246},{"style":378},[1247],{"type":43,"value":423},{"type":38,"tag":137,"props":1249,"children":1250},{"style":161},[1251],{"type":43,"value":428},{"type":38,"tag":137,"props":1253,"children":1254},{"class":139,"line":471},[1255,1260,1264,1268],{"type":38,"tag":137,"props":1256,"children":1257},{"style":150},[1258],{"type":43,"value":1259},"  \"company\"",{"type":38,"tag":137,"props":1261,"children":1262},{"style":161},[1263],{"type":43,"value":375},{"type":38,"tag":137,"props":1265,"children":1266},{"style":378},[1267],{"type":43,"value":446},{"type":38,"tag":137,"props":1269,"children":1270},{"style":161},[1271],{"type":43,"value":428},{"type":38,"tag":137,"props":1273,"children":1274},{"class":139,"line":630},[1275,1280,1284],{"type":38,"tag":137,"props":1276,"children":1277},{"style":150},[1278],{"type":43,"value":1279},"  \"message\"",{"type":38,"tag":137,"props":1281,"children":1282},{"style":161},[1283],{"type":43,"value":375},{"type":38,"tag":137,"props":1285,"children":1286},{"style":378},[1287],{"type":43,"value":468},{"type":38,"tag":137,"props":1289,"children":1290},{"class":139,"line":638},[1291],{"type":38,"tag":137,"props":1292,"children":1293},{"style":161},[1294],{"type":43,"value":477},{"type":38,"tag":76,"props":1296,"children":1298},{"id":1297},"add-destination-authentication",[1299],{"type":43,"value":1300},"Add destination authentication",{"type":38,"tag":39,"props":1302,"children":1303},{},[1304],{"type":43,"value":1305},"Store the destination credential in the function's configuration variables and add it at delivery time:",{"type":38,"tag":127,"props":1307,"children":1309},{"className":129,"code":1308,"language":131,"meta":7,"style":7},"r.setHeader(\"Authorization\", \"Bearer \" + cfg.get(\"DESTINATION_API_TOKEN\"))\n",[1310],{"type":38,"tag":46,"props":1311,"children":1312},{"__ignoreMap":7},[1313],{"type":38,"tag":137,"props":1314,"children":1315},{"class":139,"line":140},[1316,1320,1324,1328,1333,1337,1342,1347,1352,1357,1361,1366],{"type":38,"tag":137,"props":1317,"children":1318},{"style":161},[1319],{"type":43,"value":1030},{"type":38,"tag":137,"props":1321,"children":1322},{"style":204},[1323],{"type":43,"value":1062},{"type":38,"tag":137,"props":1325,"children":1326},{"style":161},[1327],{"type":43,"value":893},{"type":38,"tag":137,"props":1329,"children":1330},{"style":378},[1331],{"type":43,"value":1332},"\"Authorization\"",{"type":38,"tag":137,"props":1334,"children":1335},{"style":161},[1336],{"type":43,"value":386},{"type":38,"tag":137,"props":1338,"children":1339},{"style":378},[1340],{"type":43,"value":1341},"\"Bearer \"",{"type":38,"tag":137,"props":1343,"children":1344},{"style":144},[1345],{"type":43,"value":1346}," +",{"type":38,"tag":137,"props":1348,"children":1349},{"style":161},[1350],{"type":43,"value":1351}," cfg.",{"type":38,"tag":137,"props":1353,"children":1354},{"style":204},[1355],{"type":43,"value":1356},"get",{"type":38,"tag":137,"props":1358,"children":1359},{"style":161},[1360],{"type":43,"value":893},{"type":38,"tag":137,"props":1362,"children":1363},{"style":378},[1364],{"type":43,"value":1365},"\"DESTINATION_API_TOKEN\"",{"type":38,"tag":137,"props":1367,"children":1368},{"style":161},[1369],{"type":43,"value":1370},"))\n",{"type":38,"tag":39,"props":1372,"children":1373},{},[1374],{"type":43,"value":1375},"Do not put an API token in the Jotform form, webhook URL or function source.",{"type":38,"tag":76,"props":1377,"children":1379},{"id":1378},"fan-out-one-submission",[1380],{"type":43,"value":1381},"Fan out one submission",{"type":38,"tag":39,"props":1383,"children":1384},{},[1385],{"type":43,"value":1386},"Add multiple outputs when different teams need the same form:",{"type":38,"tag":1388,"props":1389,"children":1390},"ul",{},[1391,1396,1408,1413],{"type":38,"tag":267,"props":1392,"children":1393},{},[1394],{"type":43,"value":1395},"Send compact JSON to your CRM.",{"type":38,"tag":267,"props":1397,"children":1398},{},[1399,1401,1407],{"type":43,"value":1400},"Post a formatted summary to ",{"type":38,"tag":88,"props":1402,"children":1404},{"href":1403},"/blog/webhook-to-slack",[1405],{"type":43,"value":1406},"Slack",{"type":43,"value":201},{"type":38,"tag":267,"props":1409,"children":1410},{},[1411],{"type":43,"value":1412},"Store the full approved field set in an internal API.",{"type":38,"tag":267,"props":1414,"children":1415},{},[1416],{"type":43,"value":1417},"Send only routing metadata to an automation system.",{"type":38,"tag":39,"props":1419,"children":1420},{},[1421],{"type":43,"value":1422},"Each output can have its own function. That avoids forcing one oversized payload onto every destination.",{"type":38,"tag":76,"props":1424,"children":1426},{"id":1425},"handling-files-and-sensitive-fields",[1427],{"type":43,"value":1428},"Handling files and sensitive fields",{"type":38,"tag":39,"props":1430,"children":1431},{},[1432],{"type":43,"value":1433},"File-upload fields and encrypted forms need deliberate treatment. Jotform notes that encrypted forms send encrypted data through the webhook. Do not assume a transform can decrypt it without the appropriate key and approved handling process.",{"type":38,"tag":39,"props":1435,"children":1436},{},[1437],{"type":43,"value":1438},"For ordinary forms:",{"type":38,"tag":1388,"props":1440,"children":1441},{},[1442,1447,1452,1457,1462],{"type":38,"tag":267,"props":1443,"children":1444},{},[1445],{"type":43,"value":1446},"Forward only fields required by the destination.",{"type":38,"tag":267,"props":1448,"children":1449},{},[1450],{"type":43,"value":1451},"Avoid logging secrets, identity documents or health information.",{"type":38,"tag":267,"props":1453,"children":1454},{},[1455],{"type":43,"value":1456},"Validate required fields before delivery.",{"type":38,"tag":267,"props":1458,"children":1459},{},[1460],{"type":43,"value":1461},"Use the submission ID as an idempotency key when the destination supports one.",{"type":38,"tag":267,"props":1463,"children":1464},{},[1465],{"type":43,"value":1466},"Apply retention and access controls appropriate to the form data.",{"type":38,"tag":76,"props":1468,"children":1470},{"id":1469},"troubleshooting",[1471],{"type":43,"value":1472},"Troubleshooting",{"type":38,"tag":1474,"props":1475,"children":1477},"h3",{"id":1476},"rformdatarawrequest-is-undefined",[1478,1484],{"type":38,"tag":46,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":43,"value":1483},"r.formData.rawRequest",{"type":43,"value":1485}," is undefined",{"type":38,"tag":39,"props":1487,"children":1488},{},[1489,1491,1497],{"type":43,"value":1490},"Check the original ",{"type":38,"tag":46,"props":1492,"children":1494},{"className":1493},[],[1495],{"type":43,"value":1496},"Content-Type",{"type":43,"value":1498}," and request log. Multipart parsing requires the original boundary parameter, and URL-encoded parsing requires the correct content type. Also confirm the Jotform integration sent an actual submission rather than a different test request.",{"type":38,"tag":1474,"props":1500,"children":1502},{"id":1501},"jsonparse-fails",[1503,1509],{"type":38,"tag":46,"props":1504,"children":1506},{"className":1505},[],[1507],{"type":43,"value":1508},"JSON.parse",{"type":43,"value":1510}," fails",{"type":38,"tag":39,"props":1512,"children":1513},{},[1514,1516,1521],{"type":43,"value":1515},"Logically inspect the first ",{"type":38,"tag":46,"props":1517,"children":1519},{"className":1518},[],[1520],{"type":43,"value":51},{"type":43,"value":1522}," value in the request viewer. Do not parse the full multipart body as JSON. The JSON string is the field value.",{"type":38,"tag":1474,"props":1524,"children":1526},{"id":1525},"fields-are-empty-after-editing-the-form",[1527],{"type":43,"value":1528},"Fields are empty after editing the form",{"type":38,"tag":39,"props":1530,"children":1531},{},[1532,1534,1539],{"type":43,"value":1533},"Jotform question keys may differ from their visible labels. Send a new test submission and update the mapping to the keys currently present in ",{"type":38,"tag":46,"props":1535,"children":1537},{"className":1536},[],[1538],{"type":43,"value":51},{"type":43,"value":201},{"type":38,"tag":1474,"props":1541,"children":1543},{"id":1542},"jotform-retries-the-request",[1544],{"type":43,"value":1545},"Jotform retries the request",{"type":38,"tag":39,"props":1547,"children":1548},{},[1549,1551,1557],{"type":43,"value":1550},"Jotform documents a 30-second webhook timeout. Keep the receiving path fast and make the destination idempotent using ",{"type":38,"tag":46,"props":1552,"children":1554},{"className":1553},[],[1555],{"type":43,"value":1556},"submissionID",{"type":43,"value":1558},", because any webhook system may redeliver after an ambiguous failure.",{"type":38,"tag":39,"props":1560,"children":1561},{},[1562,1564,1570,1571,1577,1579,1585],{"type":43,"value":1563},"For more field-mapping examples, see the ",{"type":38,"tag":88,"props":1565,"children":1567},{"href":1566},"/blog/auto-transform-webhook",[1568],{"type":43,"value":1569},"webhook transformation cookbook",{"type":43,"value":386},{"type":38,"tag":88,"props":1572,"children":1574},{"href":1573},"/docs/webhooks/functions/multipart-form-data",[1575],{"type":43,"value":1576},"multipart form-to-JSON reference",{"type":43,"value":1578},", and ",{"type":38,"tag":88,"props":1580,"children":1582},{"href":1581},"/docs/webhooks/functions/url-encoded-data",[1583],{"type":43,"value":1584},"URL-encoded form reference",{"type":43,"value":201},{"type":38,"tag":1587,"props":1588,"children":1589},"style",{},[1590],{"type":43,"value":1591},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":408,"depth":408,"links":1593},[1594,1595,1596,1597,1599,1600,1601,1602,1603],{"id":78,"depth":177,"text":81},{"id":220,"depth":177,"text":223},{"id":253,"depth":177,"text":256},{"id":316,"depth":177,"text":1598},"3. Inspect rawRequest",{"id":485,"depth":177,"text":488},{"id":1297,"depth":177,"text":1300},{"id":1378,"depth":177,"text":1381},{"id":1425,"depth":177,"text":1428},{"id":1469,"depth":177,"text":1472,"children":1604},[1605,1607,1609,1610],{"id":1476,"depth":408,"text":1606},"r.formData.rawRequest is undefined",{"id":1501,"depth":408,"text":1608},"JSON.parse fails",{"id":1525,"depth":408,"text":1528},{"id":1542,"depth":408,"text":1545},"markdown","content:blog:jotform-webhook-form-data-json.md","content","blog/jotform-webhook-form-data-json.md","blog/jotform-webhook-form-data-json","md",{"loc":4},1788727851145]