Webhooks
Ipadala ang bawat tugon sa sarili ninyong address, bilang JSON, sa sandaling dumating ito.
Isang POST kada tugon
Ipinapadala sa sandaling maimbak ang sagot, nang hindi pinapaghintay ang respondent.
Matatag na hugis ng JSON
Pampublikong pangalan ng uri at permanenteng field ID, kaya hindi nasisira ang code ninyo kapag pinalitan ang pangalan ng tanong.
10 segundo, isang pagsubok
Naghihintay ang Fillio ng sampung segundo para sa inyong endpoint at hindi na ito muling susubok pagkatapos.
Pag-on ng webhook
Buksan ang form, pumunta sa Settings tab at i-on ang Webhook. I-paste ang address na dapat makatanggap ng mga tugon; sine-save ito ng Fillio ilang sandali matapos kayong tumigil sa pag-type at kinukumpirma ito sa screen. Isang address ang dala ng bawat form, at nabubura ito kapag ibinalik ninyo sa off ang toggle.
Kailangang HTTPS ang address
Tinatawagan lang ng Fillio ang mga address na nagsisimula sa https://. Tinatanggap ng settings field ang http:// na address ngunit hindi ito kailanman tinatawagan, kaya ang webhook na mukhang naka-save ay tahimik na walang ihahatid.
Tinatanggihan din ang mga address na nakaturo sa loob ng pribadong network: anumang host sa 10.x, 127.x, 169.254.x, 172.16-31.x o 192.168.x, anumang IPv6 address, at anumang pangalang localhost o nagtatapos sa .local o .internal. Kailangang maabot ang inyong endpoint mula sa pampublikong internet.
Ang request
Isang POST na may JSON body. Apat na header ang kasama nito.
| Header | Paglalarawan |
|---|---|
| Content-Type: application/json | Palaging JSON ang body. |
| User-Agent: Fillio Webhooks/1.0 | Tinutukoy ang tumatawag bilang Fillio, na kapaki-pakinabang kapag isang endpoint ang nakikinig sa ilang serbisyo. |
| X-Fillio-Event: FORM_RESPONSE | Ang pangalan ng event. FORM_RESPONSE lang ang halagang ipinapadala ng Fillio sa ngayon. |
| X-Fillio-Event-Id | Bagong UUID para sa paghahatid na ito, na inuulit bilang eventId sa body. |
Ang payload
Isang sobreng naglalarawan sa event, at isang data object na naglalarawan sa tugon.
{
"eventId": "8f2c1d7a-4b09-4e5c-9a13-6d0f8b2e77c4",
"eventType": "FORM_RESPONSE",
"createdAt": "2026-08-26T09:14:22.481Z",
"data": {
"responseId": "Qh3Rk9wZm1sVtY7cN2xP",
"formId": "7bTn4Kq2Wx",
"formName": "Workshop signup",
"createdAt": "2026-08-26T09:14:22.481Z",
"fields": [
{
"key": "V1StGXR8_Z5jdHi6B-myT",
"label": "Full name",
"type": "INPUT_TEXT",
"value": "Mira Kaya"
},
{
"key": "kM4pQz7LxAe2Rn0BsTvUw",
"label": "Which session?",
"type": "MULTIPLE_CHOICE",
"value": "c9XbNf3JdQ",
"options": [
{ "id": "c9XbNf3JdQ", "text": "Morning" },
{ "id": "eR2mYt8KpL", "text": "Afternoon" }
]
},
{
"key": "zA6cWn1FyH4tXd9QrLbEs",
"label": "How likely are you to recommend us?",
"type": "LINEAR_SCALE",
"value": 9
}
]
}
}| Property | Paglalarawan |
|---|---|
| eventId | Natatanging ID para sa paghahatid na ito. |
| eventType | Palaging FORM_RESPONSE. |
| createdAt | Kung kailan isinumite ang tugon, bilang ISO 8601 timestamp sa UTC. |
| data.responseId | Ang ID ng nakaimbak na tugon. |
| data.formId | Ang ID ng form, ang mismong lumalabas sa pampublikong link nito. |
| data.formName | Ang pamagat ng form bilang plain text, na tinanggal ang anumang pormat. |
| data.fields | Isang entry kada nasagutang tanong. |
Sa loob ng fields
May apat na property ang bawat entry, at may ikalima ang tanong na may mga opsyon.
| Property | Paglalarawan |
|---|---|
| key | Ang permanenteng ID ng tanong. Nananatili ito sa bawat pag-edit ng pananalita, kaya rito magtugma sa halip na sa label. |
| label | Ang tanong gaya ng pagkakasulat nito sa editor. |
| type | Ang uri ng tanong, mula sa listahan sa ibaba. |
| value | Ang sagot, sa hugis na iniimbak ng tanong na iyon. |
| options | Sa mga tanong lang na may opsyon: ang ID at teksto ng bawat opsyon, para maibalik ninyo ang sagot sa label nito. |
Nasagutang tanong lang ang dumarating
Ang tanong na hindi ginalaw ng respondent ay wala sa array sa halip na ipadala bilang walang lamang halaga, at ang tanong na itinago ng conditional logic ay hindi lumalabas kahit kailan. Hanapin ang bawat sagot sa pamamagitan ng key nito sa halip na umasa sa posisyon o sa nakapirming bilang ng entry.
May dalang ID ang mga piniling sagot, hindi label
Ang sagot sa dropdown o multiple choice ay ang ID ng napiling opsyon, at ang sagot sa checkbox, multi-select o ranking ay array ng mga option ID. Itugma ang mga ito sa listahan ng opsyon sa parehong entry. Iniingatan ng sagot sa ranking ang pagkakasunod-sunod na inilagay ng respondent.
Ang Other na opsyon
Kapag sumulat ang respondent sa Other na kahon, hindi option ID ang halaga kundi ang tekstong __OTHER__: na sinusundan ng isinulat nila. Alisin ang prefix na iyon para mabasa ang sagot.
"value": "__OTHER__:Heard about it from a friend"Mga file at lagda
Ang sagot sa file upload ay download link papunta sa file sa storage ng Fillio. Ang sagot na lagda ay base64 PNG data URL, na puwede ninyong i-save o ipakita nang direkta.
Mga uri ng field
Matatag at pampubliko ang pangalan ng uri, kaya hindi naaabot ng pagbabago sa loob ng Fillio ang inyong integrasyon. Ang anumang hindi mai-map ng Fillio ay dumarating bilang INPUT_TEXT.
| Uri | Tanong | Halaga |
|---|---|---|
| INPUT_TEXT | Maikling Sagot | Teksto |
| TEXTAREA | Mahabang Sagot | Teksto |
| INPUT_EMAIL | Teksto | |
| INPUT_PHONE_NUMBER | Numero ng Telepono | Teksto |
| INPUT_NUMBER | Numero | Ang numero bilang teksto, eksakto kung paano ito tinipa |
| INPUT_LINK | Link | Teksto |
| INPUT_DATE | Petsa | Petsa, bilang YYYY-MM-DD |
| INPUT_TIME | Oras | Oras, bilang HH:MM sa 24 na oras na relo |
| DROPDOWN | Dropdown | Isang option ID |
| MULTIPLE_CHOICE | Radio | Isang option ID |
| CHECKBOXES | Checkbox | Array ng mga option ID |
| MULTI_SELECT | Multi-Select | Array ng mga option ID |
| RATING | Rating na bituin | Isang numero |
| LINEAR_SCALE | Linear na Sukatan | Isang numero |
| RANKING | Ranking | Array ng mga option ID, sa pagkakasunod-sunod ng respondent |
| FILE_UPLOAD | Pag-upload ng File | Isang download link |
| SIGNATURE | Lagda | Isang base64 PNG data URL |
Kung hindi sumasagot ang inyong endpoint
Naghihintay ang Fillio ng sampung segundo. Ang timeout, ang error sa koneksyon o ang anumang status sa labas ng 2xx ay itinuturing na nabigong paghahatid, at doon na iyon nagtatapos: walang retry at walang pilang mababalikan.
Hindi kailanman naaapektuhan ang tugon mismo. Naiimbak ito bago gawin ang request at nananatili sa inyong dashboard anuman ang gawin ng endpoint ninyo, kaya nananatiling kumpletong talaan ang dashboard kahit may nawalang paghahatid.
Walang lagda
Hindi nilalagdaan ng Fillio ang request at walang ipinapadalang shared secret, kaya hindi mapapatunayan ng body mismo kung saan ito nanggaling. Kung kailangang makasigurado ng inyong endpoint, bigyan ito ng address na kayo lang ang nakakaalam: mahaba at hindi mahuhulaang path o query string. Ituring na hindi mapagkakatiwalaan ang anumang dumating sa ibang lugar.
May sariling event ID ang bawat paghahatid, nasa X-Fillio-Event-Id header at nasa body. Ang pagtatala sa mga naasikaso na ninyo ang pinakasimpleng paraan para maging ligtas na tawagan nang dalawang beses ang inyong endpoint.
Ituro ang webhook sa kahit anong request-inspection endpoint at isumite nang isang beses ang sarili ninyong form. Makikita ninyo ang eksaktong payload na ginagawa ng form ninyo, kasama ang sarili ninyong mga field ID. Iyon ang pinakamabilis na paraan para maisulat ang mapping sa panig ninyo.