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.

HeaderBeskrivelse
Content-Type: application/jsonKroppen er alltid JSON.
User-Agent: Fillio Webhooks/1.0Identifiserer avsenderen som Fillio, noe som er nyttig når ett endepunkt lytter til flere tjenester.
X-Fillio-Event: FORM_RESPONSENavnet på hendelsen. FORM_RESPONSE er den eneste verdien Fillio sender i dag.
X-Fillio-Event-IdEn 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
      }
    ]
  }
}
EgenskapBeskrivelse
eventIdEn unik ID for denne leveringen.
eventTypeAlltid FORM_RESPONSE.
createdAtNår svaret ble sendt inn, som et ISO 8601-tidsstempel i UTC.
data.responseIdID-en til det lagrede svaret.
data.formIdID-en til skjemaet, den samme som står i den offentlige lenken.
data.formNameSkjematittelen 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.

EgenskapBeskrivelse
keySpørsmålets permanente ID. Den overlever alle endringer i ordlyden, så match på denne i stedet for på etiketten.
labelSpørsmålet slik det er skrevet i editoren.
typeSpørsmålstypen, hentet fra listen under.
valueSvaret, i den formen det spørsmålet lagrer.
optionsBare 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.

TypeSpørsmålVerdi
INPUT_TEXTKort svarTekst
TEXTAREALangt svarTekst
INPUT_EMAILE-postTekst
INPUT_PHONE_NUMBERTelefonnummerTekst
INPUT_NUMBERTallTallet som tekst, nøyaktig slik det ble skrevet
INPUT_LINKLenkeTekst
INPUT_DATEDatoEn dato, som YYYY-MM-DD
INPUT_TIMETidEt klokkeslett, som HH:MM på 24-timersklokke
DROPDOWNNedtrekkslisteÉn alternativ-ID
MULTIPLE_CHOICERadioknappÉn alternativ-ID
CHECKBOXESAvkrysningsboksEn liste med alternativ-ID-er
MULTI_SELECTFlervalgEn liste med alternativ-ID-er
RATINGStjernevurderingEt tall
LINEAR_SCALELineær skalaEt tall
RANKINGRangeringEn liste med alternativ-ID-er, i respondentens rekkefølge
FILE_UPLOADFilopplastingEn nedlastingslenke
SIGNATURESignaturEn 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å.

Tips

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.