Webhooks
Send hver innsending til en adresse du velger selv, som JSON, i det øyeblikket den kommer inn.
Én POST per svar
Sendes så snart svaret er lagret, uten å la respondenten vente.
En stabil JSON-struktur
Offentlige typenavn og permanente felt-ID-er, så det å døpe om et spørsmål aldri ødelegger koden din.
10 sekunder, ett forsøk
Fillio venter ti sekunder på endepunktet ditt og prøver ikke igjen etterpå.
Slå på en webhook
Åpne skjemaet, gå til Innstillinger-fanen og slå på Webhook. Lim inn adressen som skal motta innsendingene; Fillio lagrer den kort tid etter at du slutter å skrive, og bekrefter det på skjermen. Hvert skjema har én adresse, og slår du bryteren av igjen, tømmes den.
Adressen må være HTTPS
Fillio kaller bare adresser som begynner med https://. En http://-adresse godtas av innstillingsfeltet, men kalles aldri, så en webhook som ser ut til å være lagret, leverer stille ingenting.
Adresser som peker inn i et privat nettverk, avvises også: alle verter på 10.x, 127.x, 169.254.x, 172.16-31.x eller 192.168.x, alle IPv6-adresser, og alle navn som er localhost eller slutter på .local eller .internal. Endepunktet ditt må være tilgjengelig fra det åpne internettet.
Forespørselen
En POST med en JSON-kropp. Fire headere følger med.
| Header | Beskrivelse |
|---|---|
| Content-Type: application/json | Kroppen er alltid JSON. |
| User-Agent: Fillio Webhooks/1.0 | Identifiserer avsenderen som Fillio, noe som er nyttig når ett endepunkt lytter til flere tjenester. |
| X-Fillio-Event: FORM_RESPONSE | Navnet på hendelsen. FORM_RESPONSE er den eneste verdien Fillio sender i dag. |
| X-Fillio-Event-Id | En ny UUID for denne leveringen, gjentatt som eventId i kroppen. |
Payloaden
En konvolutt som beskriver hendelsen, og et data-objekt som beskriver svaret.
{
"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
}
]
}
}| Egenskap | Beskrivelse |
|---|---|
| eventId | En unik ID for denne leveringen. |
| eventType | Alltid FORM_RESPONSE. |
| createdAt | Når svaret ble sendt inn, som et ISO 8601-tidsstempel i UTC. |
| data.responseId | ID-en til det lagrede svaret. |
| data.formId | ID-en til skjemaet, den samme som står i den offentlige lenken. |
| data.formName | Skjematittelen som ren tekst, uten formatering. |
| data.fields | Én oppføring per besvart spørsmål. |
Inne i fields
Hver oppføring har fire egenskaper, og et spørsmål med alternativer har en femte.
| Egenskap | Beskrivelse |
|---|---|
| key | Spørsmålets permanente ID. Den overlever alle endringer i ordlyden, så match på denne i stedet for på etiketten. |
| label | Spørsmålet slik det er skrevet i editoren. |
| type | Spørsmålstypen, hentet fra listen under. |
| value | Svaret, i den formen det spørsmålet lagrer. |
| options | Bare på spørsmål med alternativer: ID og tekst for hvert alternativ, så du kan gjøre et svar tilbake til en etikett. |
Bare besvarte spørsmål kommer med
Et spørsmål respondenten lot være urørt, er fraværende fra listen i stedet for å bli sendt som en tom verdi, og et spørsmål som er skjult av betinget logikk, dukker aldri opp i det hele tatt. Slå opp hvert svar på key i stedet for å stole på posisjon eller på et fast antall oppføringer.
Valgsvar bærer ID-er, ikke etiketter
Et svar fra en nedtrekksliste eller et flervalg er ID-en til alternativet som ble valgt, og et svar fra avkrysningsbokser, flervalgsliste eller rangering er en liste med alternativ-ID-er. Slå dem opp mot options-listen på samme oppføring. Et rangeringssvar beholder rekkefølgen respondenten satte elementene i.
Annet-alternativet
Når en respondent skriver i et Annet-felt, er verdien ikke en alternativ-ID, men teksten __OTHER__: fulgt av det de skrev. Fjern det prefikset for å lese svaret.
"value": "__OTHER__:Heard about it from a friend"Filer og signaturer
Et svar fra en filopplasting er en nedlastingslenke til filen i Fillios lagring. Et signatursvar er en base64-PNG data-URL, som du kan lagre eller vise direkte.
Felttyper
Typen er et stabilt offentlig navn, så en endring inne i Fillio når aldri fram til integrasjonen din. Alt Fillio ikke klarer å kartlegge, kommer som INPUT_TEXT.
| Type | Spørsmål | Verdi |
|---|---|---|
| INPUT_TEXT | Kort svar | Tekst |
| TEXTAREA | Langt svar | Tekst |
| INPUT_EMAIL | E-post | Tekst |
| INPUT_PHONE_NUMBER | Telefonnummer | Tekst |
| INPUT_NUMBER | Tall | Tallet som tekst, nøyaktig slik det ble skrevet |
| INPUT_LINK | Lenke | Tekst |
| INPUT_DATE | Dato | En dato, som YYYY-MM-DD |
| INPUT_TIME | Tid | Et klokkeslett, som HH:MM på 24-timersklokke |
| DROPDOWN | Nedtrekksliste | Én alternativ-ID |
| MULTIPLE_CHOICE | Radioknapp | Én alternativ-ID |
| CHECKBOXES | Avkrysningsboks | En liste med alternativ-ID-er |
| MULTI_SELECT | Flervalg | En liste med alternativ-ID-er |
| RATING | Stjernevurdering | Et tall |
| LINEAR_SCALE | Lineær skala | Et tall |
| RANKING | Rangering | En liste med alternativ-ID-er, i respondentens rekkefølge |
| FILE_UPLOAD | Filopplasting | En nedlastingslenke |
| SIGNATURE | Signatur | En base64-PNG data-URL |
Hvis endepunktet ditt ikke svarer
Fillio venter ti sekunder. Et tidsavbrudd, en tilkoblingsfeil eller enhver status utenfor 2xx-området regnes som en mislykket levering, og der stopper det: det finnes ingen nye forsøk og ingen kø å spille av på nytt fra.
Selve svaret påvirkes aldri. Det lagres før forespørselen sendes, og blir liggende i dashbordet ditt uansett hva endepunktet ditt gjør, så dashbordet forblir den komplette fasiten selv om en levering går tapt.
Det finnes ingen signatur
Fillio signerer ikke forespørselen og sender ingen delt hemmelighet, så kroppen alene beviser ikke hvor den kom fra. Hvis endepunktet ditt må være sikkert, gi det en adresse bare du kjenner: en lang, ugjettbar sti eller spørrestreng. Behandle alt som kommer andre steder, som utrygt.
Hver levering har sin egen hendelses-ID, både i headeren X-Fillio-Event-Id og i kroppen. Å notere dem du allerede har håndtert, er den enkleste måten å gjøre endepunktet ditt trygt å kalle to ganger på.
Pek webhooken mot et hvilket som helst endepunkt som viser forespørsler, og send inn ditt eget skjema én gang. Da ser du nøyaktig hvilken payload skjemaet ditt produserer, med dine egne felt-ID-er i. Det er den raskeste måten å skrive kartleggingen på din side.