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_EMAIL | Κείμενο | |
| 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 πεδίων μέσα. Είναι ο γρηγορότερος τρόπος να γράψετε την αντιστοίχιση από τη δική σας πλευρά.