Webhook

Hantar setiap penghantaran ke alamat anda sendiri, sebagai JSON, sebaik ia tiba.

Satu POST bagi setiap respons

Dihantar sebaik jawapan disimpan, tanpa membuatkan responden menunggu.

Bentuk JSON yang stabil

Nama jenis awam dan ID medan yang kekal, jadi menamakan semula soalan tidak akan merosakkan kod anda.

10 saat, satu cubaan

Fillio menunggu sepuluh saat untuk titik akhir anda dan tidak mencuba lagi selepas itu.

Menghidupkan webhook

Buka borang, pergi ke tab Tetapan dan hidupkan Webhook. Tampal alamat yang sepatutnya menerima penghantaran; Fillio menyimpannya sesaat selepas anda berhenti menaip dan mengesahkannya pada skrin. Setiap borang membawa satu alamat, dan mematikan semula suis itu akan mengosongkannya.

Alamat mesti HTTPS

Fillio hanya memanggil alamat yang bermula dengan https://. Alamat http:// diterima oleh medan tetapan tetapi tidak pernah dipanggil, jadi webhook yang kelihatan tersimpan sebenarnya tidak menghantar apa-apa.

Alamat yang menghala ke dalam rangkaian persendirian turut ditolak: mana-mana hos pada 10.x, 127.x, 169.254.x, 172.16-31.x atau 192.168.x, mana-mana alamat IPv6, dan mana-mana nama yang localhost atau berakhir dengan .local atau .internal. Titik akhir anda mesti boleh dicapai daripada internet awam.

Permintaan

Satu POST dengan badan JSON. Empat header disertakan bersamanya.

HeaderPenerangan
Content-Type: application/jsonBadan permintaan sentiasa JSON.
User-Agent: Fillio Webhooks/1.0Mengenal pasti pemanggil sebagai Fillio, berguna apabila satu titik akhir mendengar beberapa perkhidmatan sekali gus.
X-Fillio-Event: FORM_RESPONSENama peristiwa. FORM_RESPONSE ialah satu-satunya nilai yang dihantar Fillio hari ini.
X-Fillio-Event-IdUUID baharu untuk penghantaran ini, diulang sebagai eventId dalam badan permintaan.

Muatan

Satu sampul yang menerangkan peristiwa, dan satu objek data yang menerangkan respons.

{
  "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
      }
    ]
  }
}
SifatPenerangan
eventIdID unik untuk penghantaran ini.
eventTypeSentiasa FORM_RESPONSE.
createdAtMasa respons dihantar, sebagai cap masa ISO 8601 dalam UTC.
data.responseIdID respons yang disimpan.
data.formIdID borang, sama seperti yang muncul dalam pautan awamnya.
data.formNameTajuk borang sebagai teks biasa, dengan sebarang pemformatan dibuang.
data.fieldsSatu entri bagi setiap soalan yang dijawab.

Di dalam fields

Setiap entri membawa empat sifat, dan soalan yang mempunyai pilihan membawa sifat kelima.

SifatPenerangan
keyID kekal soalan itu. Ia bertahan melalui setiap suntingan pada ayatnya, jadi padankan dengan ID ini dan bukan dengan labelnya.
labelSoalan seperti yang ditulis dalam editor.
typeJenis soalan, diambil daripada senarai di bawah.
valueJawapan, dalam bentuk yang disimpan oleh soalan itu.
optionsHanya pada soalan yang mempunyai pilihan: ID dan teks setiap pilihan, supaya anda boleh menukar jawapan kembali kepada labelnya.

Hanya soalan yang dijawab akan tiba

Soalan yang tidak disentuh oleh responden tidak hadir dalam tatasusunan itu dan bukannya dihantar sebagai nilai kosong, manakala soalan yang disembunyikan oleh logik bersyarat langsung tidak muncul. Cari setiap jawapan menerusi key-nya dan jangan bergantung pada kedudukan atau pada bilangan entri yang tetap.

Jawapan pilihan membawa ID, bukan label

Jawapan senarai lungsur atau pilihan berganda ialah ID pilihan yang dipilih, manakala jawapan kotak semak, pilihan berbilang atau kedudukan ialah tatasusunan ID pilihan. Rujuk semula ID itu pada senarai options dalam entri yang sama. Jawapan kedudukan mengekalkan susunan yang ditetapkan oleh responden.

Pilihan Lain-lain

Apabila responden menulis dalam kotak Lain-lain, nilainya bukan ID pilihan tetapi teks __OTHER__: diikuti apa yang mereka taip. Buang awalan itu untuk membaca jawapannya.

"value": "__OTHER__:Heard about it from a friend"

Fail dan tandatangan

Jawapan muat naik fail ialah pautan muat turun ke fail itu dalam storan Fillio. Jawapan tandatangan pula ialah URL data PNG base64, yang boleh anda simpan atau paparkan terus.

Jenis medan

Jenis ialah nama awam yang stabil, jadi perubahan di dalam Fillio tidak pernah sampai ke integrasi anda. Apa-apa yang tidak dapat dipetakan oleh Fillio akan tiba sebagai INPUT_TEXT.

JenisSoalanNilai
INPUT_TEXTJawapan PendekTeks
TEXTAREAJawapan PanjangTeks
INPUT_EMAILE-melTeks
INPUT_PHONE_NUMBERNombor TelefonTeks
INPUT_NUMBERNomborNombor sebagai teks, tepat seperti yang ditaip
INPUT_LINKPautanTeks
INPUT_DATETarikhTarikh, dalam bentuk YYYY-MM-DD
INPUT_TIMEMasaMasa, dalam bentuk HH:MM pada jam 24 jam
DROPDOWNSenarai JuntaiSatu ID pilihan
MULTIPLE_CHOICERadioSatu ID pilihan
CHECKBOXESKotak SemakTatasusunan ID pilihan
MULTI_SELECTPilihan BerbilangTatasusunan ID pilihan
RATINGPenilaian BintangSatu nombor
LINEAR_SCALESkala LinearSatu nombor
RANKINGKedudukanTatasusunan ID pilihan, mengikut susunan responden
FILE_UPLOADMuat Naik FailPautan muat turun
SIGNATURETandatanganURL data PNG base64

Jika titik akhir anda tidak menjawab

Fillio menunggu sepuluh saat. Tamat masa, ralat sambungan atau sebarang status di luar julat 2xx dikira sebagai penghantaran yang gagal, dan di situlah ia berakhir: tiada cubaan semula dan tiada baris gilir untuk dimainkan semula.

Respons itu sendiri tidak sekali-kali terjejas. Ia disimpan sebelum permintaan dibuat dan kekal dalam papan pemuka anda apa pun yang berlaku pada titik akhir anda, jadi papan pemuka kekal menjadi rekod yang lengkap walaupun satu penghantaran hilang.

Tiada tandatangan

Fillio tidak menandatangani permintaan dan tidak menghantar sebarang rahsia kongsi, jadi badan permintaan itu sendiri tidak membuktikan asalnya. Jika titik akhir anda perlu pasti, berikannya alamat yang hanya anda tahu: laluan atau rentetan pertanyaan yang panjang dan sukar diteka. Anggap apa-apa yang tiba di tempat lain sebagai tidak dipercayai.

Setiap penghantaran membawa ID peristiwanya sendiri, dalam header X-Fillio-Event-Id dan juga dalam badan permintaan. Merekodkan ID yang telah anda kendalikan ialah cara paling mudah untuk memastikan titik akhir anda selamat dipanggil dua kali.

Petua

Halakan webhook ke mana-mana titik akhir pemeriksa permintaan dan hantar borang anda sendiri sekali. Anda akan melihat muatan tepat yang dihasilkan borang anda, lengkap dengan ID medan anda sendiri. Itulah cara terpantas untuk menulis pemetaan di pihak anda.