FillioΤεκμηρίωση

Webhooks

Στείλτε κάθε υποβολή σε δική σας διεύθυνση, ως JSON, τη στιγμή που φτάνει.

Ένα POST ανά απάντηση

Στέλνεται μόλις αποθηκευτεί η απάντηση, χωρίς να περιμένει ο ερωτώμενος.

Μια σταθερή μορφή JSON

Δημόσια ονόματα τύπων και μόνιμα ID πεδίων, ώστε η μετονομασία μιας ερώτησης να μη χαλάει ποτέ τον κώδικά σας.

10 δευτερόλεπτα, μία προσπάθεια

Το Fillio περιμένει δέκα δευτερόλεπτα το endpoint σας και δεν ξαναπροσπαθεί μετά.

Ενεργοποίηση ενός webhook

Ανοίξτε τη φόρμα, πηγαίνετε στην καρτέλα Ρυθμίσεις και ενεργοποιήστε το Webhook. Επικολλήστε τη διεύθυνση που θα λαμβάνει τις υποβολές. Το Fillio την αποθηκεύει λίγο αφού σταματήσετε να πληκτρολογείτε και το επιβεβαιώνει στην οθόνη. Κάθε φόρμα έχει μία διεύθυνση, και το κλείσιμο του διακόπτη τη σβήνει.

Η διεύθυνση πρέπει να είναι HTTPS

Το Fillio καλεί μόνο διευθύνσεις που ξεκινούν με https://. Μια διεύθυνση http:// γίνεται δεκτή από το πεδίο ρυθμίσεων αλλά δεν καλείται ποτέ, οπότε ένα webhook που φαίνεται αποθηκευμένο δεν θα παραδώσει σιωπηλά τίποτα.

Απορρίπτονται επίσης οι διευθύνσεις που δείχνουν μέσα σε ιδιωτικό δίκτυο: κάθε host σε 10.x, 127.x, 169.254.x, 172.16-31.x ή 192.168.x, κάθε διεύθυνση IPv6, και κάθε όνομα που είναι localhost ή τελειώνει σε .local ή .internal. Το endpoint σας πρέπει να είναι προσβάσιμο από το δημόσιο διαδίκτυο.

Το αίτημα

Ένα POST με σώμα JSON. Το συνοδεύουν τέσσερις κεφαλίδες.

ΚεφαλίδαΠεριγραφή
Content-Type: application/jsonΤο σώμα είναι πάντα JSON.
User-Agent: Fillio Webhooks/1.0Ταυτοποιεί τον καλούντα ως Fillio, χρήσιμο όταν ένα endpoint ακούει πολλές υπηρεσίες.
X-Fillio-Event: FORM_RESPONSEΤο όνομα του συμβάντος. Το FORM_RESPONSE είναι η μόνη τιμή που στέλνει σήμερα το Fillio.
X-Fillio-Event-IdΈνα νέο UUID για αυτήν την παράδοση, που επαναλαμβάνεται ως eventId μέσα στο σώμα.

Το φορτίο δεδομένων

Ένας φάκελος που περιγράφει το συμβάν, και ένα αντικείμενο data που περιγράφει την απάντηση.

{
  "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
      }
    ]
  }
}
ΙδιότηταΠεριγραφή
eventIdΈνα μοναδικό ID για αυτήν την παράδοση.
eventTypeΠάντα FORM_RESPONSE.
createdAtΠότε υποβλήθηκε η απάντηση, ως χρονική σήμανση ISO 8601 σε UTC.
data.responseIdΤο ID της αποθηκευμένης απάντησης.
data.formIdΤο ID της φόρμας, το ίδιο που εμφανίζεται στον δημόσιο σύνδεσμό της.
data.formNameΟ τίτλος της φόρμας ως απλό κείμενο, χωρίς καμία μορφοποίηση.
data.fieldsΜία εγγραφή για κάθε ερώτηση που απαντήθηκε.

Μέσα στο fields

Κάθε εγγραφή φέρει τέσσερις ιδιότητες, και μια ερώτηση με επιλογές φέρει και μια πέμπτη.

ΙδιότηταΠεριγραφή
keyΤο μόνιμο ID της ερώτησης. Επιβιώνει από κάθε αλλαγή στη διατύπωση, οπότε κάντε την αντιστοίχιση με βάση αυτό και όχι με την ετικέτα.
labelΗ ερώτηση όπως είναι γραμμένη στον επεξεργαστή.
typeΟ τύπος της ερώτησης, από τη λίστα παρακάτω.
valueΗ απάντηση, στη μορφή που αποθηκεύει αυτή η ερώτηση.
optionsΜόνο σε ερωτήσεις με επιλογές: το ID και το κείμενο κάθε επιλογής, ώστε να μετατρέπετε μια απάντηση ξανά σε ετικέτα.

Φτάνουν μόνο οι ερωτήσεις που απαντήθηκαν

Μια ερώτηση που ο ερωτώμενος άφησε άθικτη απουσιάζει από τον πίνακα αντί να σταλεί ως κενή τιμή, και μια ερώτηση κρυμμένη από λογική συνθηκών δεν εμφανίζεται καθόλου. Αναζητήστε κάθε απάντηση με βάση το key της αντί να βασίζεστε στη θέση ή σε σταθερό αριθμό εγγραφών.

Οι απαντήσεις επιλογής φέρουν ID, όχι ετικέτες

Μια απάντηση σε αναπτυσσόμενη λίστα ή πολλαπλή επιλογή είναι το ID της επιλογής που διαλέχτηκε, ενώ μια απάντηση σε πλαίσια ελέγχου, πολυεπιλογή ή κατάταξη είναι πίνακας από ID επιλογών. Αντιστοιχίστε τα με τη λίστα options της ίδιας εγγραφής. Μια απάντηση κατάταξης διατηρεί τη σειρά που έβαλε ο ερωτώμενος.

Η επιλογή Άλλο

Όταν ένας ερωτώμενος γράφει σε ένα πλαίσιο Άλλο, η τιμή δεν είναι ID επιλογής αλλά το κείμενο __OTHER__: ακολουθούμενο από ό,τι πληκτρολόγησε. Αφαιρέστε αυτό το πρόθεμα για να διαβάσετε την απάντηση.

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

Αρχεία και υπογραφές

Η απάντηση σε μεταφόρτωση αρχείου είναι ένας σύνδεσμος λήψης του αρχείου από τον αποθηκευτικό χώρο του Fillio. Η απάντηση υπογραφής είναι ένα base64 PNG data URL, που μπορείτε να αποθηκεύσετε ή να εμφανίσετε απευθείας.

Τύποι πεδίων

Ο τύπος είναι ένα σταθερό δημόσιο όνομα, οπότε μια αλλαγή μέσα στο Fillio δεν φτάνει ποτέ στην ενσωμάτωσή σας. Ό,τι δεν μπορεί να αντιστοιχίσει το Fillio φτάνει ως INPUT_TEXT.

ΤύποςΕρώτησηΤιμή
INPUT_TEXTΣύντομη ΑπάντησηΚείμενο
TEXTAREAΕκτεταμένη ΑπάντησηΚείμενο
INPUT_EMAILEmailΚείμενο
INPUT_PHONE_NUMBERΑριθμός ΤηλεφώνουΚείμενο
INPUT_NUMBERΑριθμόςΟ αριθμός ως κείμενο, ακριβώς όπως πληκτρολογήθηκε
INPUT_LINKΣύνδεσμοςΚείμενο
INPUT_DATEΗμερομηνίαΜια ημερομηνία, ως YYYY-MM-DD
INPUT_TIMEΏραΜια ώρα, ως HH:MM σε 24ωρη μορφή
DROPDOWNΑναπτυσσόμενη ΛίσταΈνα ID επιλογής
MULTIPLE_CHOICEΚουμπιά ΕπιλογήςΈνα ID επιλογής
CHECKBOXESΠλαίσια ΕλέγχουΈνας πίνακας από ID επιλογών
MULTI_SELECTΠολλαπλή ΕπιλογήΈνας πίνακας από ID επιλογών
RATINGΑξιολόγηση με ΑστέριαΈνας αριθμός
LINEAR_SCALEΓραμμική ΚλίμακαΈνας αριθμός
RANKINGΚατάταξηΈνας πίνακας από ID επιλογών, με τη σειρά του ερωτώμενου
FILE_UPLOADΜεταφόρτωση ΑρχείουΈνας σύνδεσμος λήψης
SIGNATUREΥπογραφήΈνα base64 PNG data URL

Αν το endpoint σας δεν απαντήσει

Το Fillio περιμένει δέκα δευτερόλεπτα. Ένα timeout, ένα σφάλμα σύνδεσης ή οποιαδήποτε κατάσταση εκτός του εύρους 2xx μετράει ως αποτυχημένη παράδοση, και εκεί τελειώνει: δεν υπάρχει επανάληψη ούτε ουρά για αναπαραγωγή.

Η ίδια η απάντηση δεν επηρεάζεται ποτέ. Αποθηκεύεται πριν γίνει το αίτημα και παραμένει στον πίνακα ελέγχου σας ό,τι κι αν κάνει το endpoint σας, οπότε ο πίνακας παραμένει το πλήρες αρχείο ακόμη κι αν χαθεί μια παράδοση.

Δεν υπάρχει υπογραφή

Το Fillio δεν υπογράφει το αίτημα και δεν στέλνει κοινό μυστικό, οπότε το σώμα από μόνο του δεν αποδεικνύει από πού ήρθε. Αν το endpoint σας πρέπει να είναι σίγουρο, δώστε του μια διεύθυνση που ξέρετε μόνο εσείς: μια μακριά, αμάντευτη διαδρομή ή παράμετρο. Θεωρήστε αναξιόπιστο ό,τι φτάνει αλλού.

Κάθε παράδοση φέρει το δικό της ID συμβάντος, τόσο στην κεφαλίδα X-Fillio-Event-Id όσο και στο σώμα. Το να καταγράφετε όσα έχετε ήδη χειριστεί είναι ο απλούστερος τρόπος να κάνετε το endpoint σας ασφαλές σε διπλή κλήση.

Συμβουλή

Στρέψτε το webhook σε οποιοδήποτε endpoint επιθεώρησης αιτημάτων και υποβάλετε μία φορά τη δική σας φόρμα. Θα δείτε ακριβώς το φορτίο που παράγει η φόρμα σας, με τα δικά σας ID πεδίων μέσα. Είναι ο γρηγορότερος τρόπος να γράψετε την αντιστοίχιση από τη δική σας πλευρά.