Webhook
回答が届いた瞬間に、その内容を JSON で自分のアドレスへ送信します。
回答1件につき1回の POST
回答が保存され次第すぐに送信され、回答者を待たせることはありません。
安定した JSON の形
公開されたタイプ名と不変のフィールド ID を使うため、質問名を変えてもコードが壊れません。
10秒、1回だけ
Fillio はエンドポイントの応答を10秒待ち、その後の再送は行いません。
Webhook を有効にする
フォームを開き、「設定」タブで Webhook をオンにします。回答を受け取るアドレスを貼り付けると、Fillio は入力が止まった少しあとに保存し、画面上で確認できます。1つのフォームにつきアドレスは1つで、トグルをオフに戻すとアドレスは消去されます。
アドレスは HTTPS である必要があります
Fillio が呼び出すのは https:// で始まるアドレスだけです。http:// のアドレスは設定欄では受け付けられますが呼び出されることはなく、保存されたように見えて実際には何も届きません。
プライベートネットワーク内を指すアドレスも拒否されます。10.x、127.x、169.254.x、172.16〜31.x、192.168.x のホスト、すべての IPv6 アドレス、localhost という名前、および .local や .internal で終わる名前が対象です。エンドポイントは公開インターネットから到達できる必要があります。
リクエスト
JSON のボディを持つ POST です。4つのヘッダーが付随します。
| ヘッダー | 説明 |
|---|---|
| Content-Type: application/json | ボディは常に JSON です。 |
| User-Agent: Fillio Webhooks/1.0 | 呼び出し元が Fillio であることを示します。1つのエンドポイントで複数のサービスを受けている場合に役立ちます。 |
| X-Fillio-Event: FORM_RESPONSE | イベント名です。現在 Fillio が送る値は FORM_RESPONSE のみです。 |
| 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 | 回答された質問1件につき1エントリーです。 |
fields の中身
各エントリーは4つのプロパティを持ち、選択肢のある質問はさらにもう1つ持ちます。
| プロパティ | 説明 |
|---|---|
| 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 データ 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 1件 |
| MULTIPLE_CHOICE | ラジオ | 選択肢 ID 1件 |
| CHECKBOXES | チェックボックス | 選択肢 ID の配列 |
| MULTI_SELECT | 複数選択 | 選択肢 ID の配列 |
| RATING | 星評価 | 数値 |
| LINEAR_SCALE | リニアスケール | 数値 |
| RANKING | ランキング | 回答者が並べた順の選択肢 ID の配列 |
| FILE_UPLOAD | ファイルアップロード | ダウンロードリンク |
| SIGNATURE | 署名 | base64 の PNG データ URL |
エンドポイントが応答しない場合
Fillio は10秒待ちます。タイムアウト、接続エラー、2xx 以外のステータスはいずれも配信失敗として扱われ、そこで終わりです。再送もなければ、あとから再生できるキューもありません。
回答そのものには一切影響しません。リクエストを送る前に保存されており、エンドポイントがどうなろうとダッシュボードに残ります。配信が失われても、ダッシュボードは完全な記録であり続けます。
署名はありません
Fillio はリクエストに署名せず、共有シークレットも送りません。したがってボディだけでは送信元を証明できません。エンドポイント側で確実に判別する必要があるなら、あなただけが知るアドレス(長く推測できないパスやクエリ文字列)を用意し、それ以外に届いたものは信頼しないでください。
各配信は固有のイベント ID を、X-Fillio-Event-Id ヘッダーとボディの両方に持ちます。処理済みの ID を記録しておくのが、二重に呼び出されても安全なエンドポイントを作るいちばん簡単な方法です。
リクエストを確認できるエンドポイントに Webhook を向けて、自分のフォームを一度送信してみてください。自分のフィールド ID が入った実際のペイロードがそのまま見られます。手元のマッピングを書くいちばん速い方法です。