Webhooks
ہر جواب آتے ہی JSON کی شکل میں اپنے مقرر کردہ پتے پر بھیجیے۔
ہر جواب پر ایک POST
جواب محفوظ ہوتے ہی بھیج دیا جاتا ہے، جواب دہندہ کو انتظار کرائے بغیر۔
مستقل JSON ساخت
عوامی قسم کے نام اور مستقل فیلڈ IDs، اس لیے سوال کا نام بدلنے سے آپ کا کوڈ کبھی نہیں ٹوٹتا۔
10 سیکنڈ، ایک کوشش
Fillio آپ کے اینڈ پوائنٹ کا دس سیکنڈ انتظار کرتا ہے اور اس کے بعد دوبارہ کوشش نہیں کرتا۔
Webhook چالو کرنا
فارم کھولیے، سیٹنگز ٹیب پر جائیے اور Webhook کو آن کیجیے۔ وہ پتہ چسپاں کیجیے جسے جوابات موصول ہونے چاہئیں؛ آپ کے لکھنا روکنے کے کچھ ہی دیر بعد Fillio اسے محفوظ کر کے اسکرین پر تصدیق کر دیتا ہے۔ ہر فارم کے لیے ایک پتہ ہوتا ہے، اور سوئچ واپس بند کرنے سے وہ پتہ صاف ہو جاتا ہے۔
پتہ HTTPS ہونا ضروری ہے
Fillio صرف اُن پتوں کو کال کرتا ہے جو https:// سے شروع ہوں۔ http:// والا پتہ سیٹنگز کی فیلڈ قبول تو کر لیتی ہے مگر اسے کبھی کال نہیں کیا جاتا، چنانچہ بظاہر محفوظ ہو جانے والا webhook خاموشی سے کچھ بھی نہیں پہنچائے گا۔
نجی نیٹ ورک کے اندر اشارہ کرنے والے پتے بھی مسترد ہو جاتے ہیں: 10.x، 127.x، 169.254.x، 172.16-31.x یا 192.168.x پر کوئی بھی ہوسٹ، کوئی بھی IPv6 پتہ، اور ہر وہ نام جو localhost ہو یا .local یا .internal پر ختم ہوتا ہو۔ آپ کا اینڈ پوائنٹ عوامی انٹرنیٹ سے قابلِ رسائی ہونا چاہیے۔
درخواست
JSON باڈی کے ساتھ ایک POST۔ اس کے ساتھ چار ہیڈر جاتے ہیں۔
| ہیڈر | تفصیل |
|---|---|
| Content-Type: application/json | باڈی ہمیشہ JSON ہوتی ہے۔ |
| User-Agent: Fillio Webhooks/1.0 | کال کرنے والے کی شناخت Fillio کے طور پر کراتا ہے، جو اُس وقت مفید ہے جب ایک اینڈ پوائنٹ کئی سروسز کو سن رہا ہو۔ |
| 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 | جواب کب جمع کرایا گیا، UTC میں ISO 8601 ٹائم اسٹیمپ کے طور پر۔ |
| data.responseId | محفوظ شدہ جواب کا ID۔ |
| data.formId | فارم کا ID، وہی جو اُس کے عوامی لنک میں نظر آتا ہے۔ |
| data.formName | فارم کا عنوان سادہ متن کے طور پر، ہر قسم کی فارمیٹنگ ہٹا کر۔ |
| data.fields | ہر جواب دیے گئے سوال کے لیے ایک اندراج۔ |
fields کے اندر
ہر اندراج میں چار پراپرٹیز ہوتی ہیں، اور اختیارات والے سوال میں ایک پانچویں بھی۔
| پراپرٹی | تفصیل |
|---|---|
| key | سوال کا مستقل ID۔ یہ الفاظ کی ہر ترمیم کے باوجود قائم رہتا ہے، اس لیے لیبل کے بجائے اسی پر ملان کیجیے۔ |
| label | سوال جیسا ایڈیٹر میں لکھا گیا ہے۔ |
| type | سوال کی قسم، نیچے دی گئی فہرست میں سے۔ |
| value | جواب، اُسی شکل میں جس میں وہ سوال اسے محفوظ کرتا ہے۔ |
| options | صرف اختیارات والے سوالات پر: ہر اختیار کا ID اور متن، تاکہ آپ جواب کو دوبارہ لیبل میں بدل سکیں۔ |
صرف جواب دیے گئے سوالات آتے ہیں
جس سوال کو جواب دہندہ نے چھوا تک نہیں، وہ خالی قدر کے طور پر بھیجے جانے کے بجائے فہرست میں سرے سے موجود ہی نہیں ہوتا، اور مشروط منطق سے چھپایا گیا سوال کبھی ظاہر نہیں ہوتا۔ ہر جواب کو اُس کی key سے تلاش کیجیے، ترتیب یا اندراجات کی مقررہ تعداد پر بھروسہ کرنے کے بجائے۔
انتخابی جوابات میں IDs ہوتے ہیں، لیبل نہیں
ڈراپ ڈاؤن یا متعدد انتخاب کا جواب منتخب اختیار کا ID ہوتا ہے، اور چیک باکس، ملٹی سلیکٹ یا درجہ بندی کا جواب اختیارات کے IDs کی فہرست ہوتی ہے۔ انہیں اُسی اندراج کی options فہرست سے حل کیجیے۔ درجہ بندی کا جواب وہی ترتیب برقرار رکھتا ہے جو جواب دہندہ نے دی تھی۔
دیگر کا اختیار
جب جواب دہندہ دیگر کے خانے میں کچھ لکھتا ہے تو قدر کسی اختیار کا ID نہیں ہوتی بلکہ __OTHER__: کے بعد اُس کا لکھا ہوا متن ہوتی ہے۔ جواب پڑھنے کے لیے یہ سابقہ ہٹا دیجیے۔
"value": "__OTHER__:Heard about it from a friend"فائلیں اور دستخط
فائل اپ لوڈ کا جواب Fillio کے اسٹوریج میں موجود فائل کا ڈاؤن لوڈ لنک ہوتا ہے۔ دستخط کا جواب base64 PNG ڈیٹا URL ہوتا ہے، جسے آپ براہِ راست محفوظ یا ظاہر کر سکتے ہیں۔
فیلڈ کی اقسام
قسم ایک مستقل عوامی نام ہے، اس لیے Fillio کے اندر کی کوئی تبدیلی آپ کے انٹیگریشن تک نہیں پہنچتی۔ جسے Fillio نقشہ بند نہ کر سکے وہ INPUT_TEXT کے طور پر آتا ہے۔
| قسم | سوال | قدر |
|---|---|---|
| INPUT_TEXT | مختصر جواب | متن |
| TEXTAREA | تفصیلی جواب | متن |
| INPUT_EMAIL | ای میل | متن |
| INPUT_PHONE_NUMBER | فون نمبر | متن |
| INPUT_NUMBER | نمبر | عدد بطور متن، بالکل ویسے ہی جیسے لکھا گیا |
| INPUT_LINK | لنک | متن |
| INPUT_DATE | تاریخ | تاریخ، YYYY-MM-DD کی شکل میں |
| INPUT_TIME | وقت | وقت، 24 گھنٹے کی گھڑی پر HH:MM کی شکل میں |
| DROPDOWN | ڈراپ ڈاؤن | ایک اختیار کا ID |
| MULTIPLE_CHOICE | ریڈیو | ایک اختیار کا ID |
| CHECKBOXES | چیک باکس | اختیارات کے IDs کی فہرست |
| MULTI_SELECT | ملٹی سلیکٹ | اختیارات کے IDs کی فہرست |
| RATING | ستارہ درجہ بندی | ایک عدد |
| LINEAR_SCALE | لکیری پیمانہ | ایک عدد |
| RANKING | رینکنگ | اختیارات کے IDs کی فہرست، جواب دہندہ کی ترتیب میں |
| FILE_UPLOAD | فائل اپ لوڈ | ڈاؤن لوڈ لنک |
| SIGNATURE | دستخط | base64 PNG ڈیٹا URL |
اگر آپ کا اینڈ پوائنٹ جواب نہ دے
Fillio دس سیکنڈ انتظار کرتا ہے۔ ٹائم آؤٹ، کنکشن کی خرابی یا 2xx سے باہر کوئی بھی اسٹیٹس ناکام ترسیل شمار ہوتی ہے، اور بات وہیں ختم ہو جاتی ہے: نہ دوبارہ کوشش ہوتی ہے، نہ کوئی قطار ہے جس سے دہرایا جا سکے۔
جواب خود اس سے کبھی متاثر نہیں ہوتا۔ وہ درخواست بھیجنے سے پہلے محفوظ ہو جاتا ہے اور آپ کے اینڈ پوائنٹ کے رویے سے قطع نظر ڈیش بورڈ میں موجود رہتا ہے، اس لیے کوئی ترسیل ضائع بھی ہو جائے تو ڈیش بورڈ ہی مکمل ریکارڈ رہتا ہے۔
کوئی دستخط نہیں ہوتا
Fillio درخواست پر دستخط نہیں کرتا اور کوئی مشترکہ راز نہیں بھیجتا، اس لیے باڈی بذاتِ خود یہ ثابت نہیں کرتی کہ وہ کہاں سے آئی۔ اگر آپ کے اینڈ پوائنٹ کو یقین درکار ہو تو اسے ایسا پتہ دیجیے جو صرف آپ جانتے ہوں: ایک لمبا، ناقابلِ اندازہ راستہ یا کوئری اسٹرنگ۔ کسی اور جگہ آنے والی ہر چیز کو غیر معتبر سمجھیے۔
ہر ترسیل کے ساتھ اُس کا اپنا ایونٹ ID ہوتا ہے، X-Fillio-Event-Id ہیڈر میں بھی اور باڈی میں بھی۔ جو IDs آپ پہلے سنبھال چکے ہیں انہیں نوٹ کر لینا آپ کے اینڈ پوائنٹ کو دو بار کال ہونے کے لیے محفوظ بنانے کا آسان ترین طریقہ ہے۔
webhook کو کسی بھی درخواست جانچنے والے اینڈ پوائنٹ پر لگائیے اور اپنا فارم ایک بار خود جمع کرائیے۔ آپ کو بالکل وہی پے لوڈ نظر آ جائے گا جو آپ کا فارم بناتا ہے، آپ کے اپنے فیلڈ IDs کے ساتھ۔ یہی اپنی طرف کی میپنگ لکھنے کا تیز ترین طریقہ ہے۔