Webhookを送信する

※開発者向けの情報です。

Webhook機能を使うと、日程調整完了時やキャンセル時に指定したURLに各種情報をPOSTリクエストします。

使用例

  • Webhookを通して自社のシステムに日程調整確定後のデータを連携する
  • WebhookからZapierMakeにデータを送り、そこからSlackやChatwork、Google スプレッドシートやkintoneといったさまざまなwebサービスと連携する

Webhookの設定方法

日程調整URL作成時やテンプレート設定で、「Webhookを使用する」をオンにし、必要情報をご記入ください。

Webhookの通知先URL 日程調整完了時やキャンセル時に、アイテマスからのPOSTリクエストを受信できるhttpsエンドポイントを指定してください。予め準備する必要があります。
Webhookの識別トークン Webhookの送信元がアイテマスであることを検証するときや、複数の日程調整ページで共通のWebhookの通知先URLを使用したい場合の識別コードとしてご利用ください。任意入力です。
Webhook設定

POSTリクエストの仕様

リクエスト

アイテマスのWebhookはPOSTメソッドでリクエストします。リクエストボディはJSONオブジェクトに基づいており、イベントタイプによって異なります。

レスポンス

Webhookを受け取ったサーバーはステータスコード200のレスポンスを返却してください。 200以外のステータスコードが返却された場合は、5秒待って2回までリトライします。最後のリクエストが失敗した場合エラーの通知をします。

エラー通知メール

Webhookの最後のリクエストが失敗した場合、該当の日程調整ページ作成者のアカウントのメールアドレス宛にエラーの通知メールを送ります。

Response Header

Content-Type: application/json
X-Aitemasu-Token: {{ 設定したWebhookの識別トークン }}
User-Agent: Aitemasu Webhook

Response Body

Property名 必須 説明
webhookEventName string true Webhookのイベントタイプ。
日程調整確定=event.confirmed
予定キャンセル=event.canceled
payload Object true 後述

Payload Object

Property名 必須 説明
id string true 予定の一意のid。2023年5月以前のデータは空白なので注意。
originalUrl string true 予定が作成された日程調整ページのURL。
confirmedDateTimeUtc string true 予定が作成された時間(UTC時間・ISO 8601形式)。
eventName string true 予定の名前。
selectedService string true 空き時間提示型で、複数の提供サービスがある場合の選択されたサービス名。
startDateTime string true 予定の開始時間(timeZoneで指定されているタイムゾーン・ISO 8601形式)。
endDateTime string true 予定の終了時間(timeZoneで指定されているタイムゾーン・ISO 8601形式)。
timeZone string true 予定の確定者のタイムゾーン。
startDateTimeUtc string true 予定の開始時間(UTC時間・ISO 8601形式)。
endDateTimeUtc string true 予定の終了時間(UTC時間・ISO 8601形式)。
location Object true 場所・ビデオ会議。
owner Object true 日程調整ページを作成したユーザー情報。
organizer Object true 予定の主催者/担当者。
guestsFromOrganizerSide Array true 主催者側の同席者。
attendee Object true 予定の確定者。
customeFormAnswers Array true 相手に求める情報で「カスタム入力」がある場合の回答。
cancelPersonName string false 予定キャンセルを実行した人の名前。webhookEventName=event.canceled のときのみ存在。
cancelReason string false 予定キャンセルの理由。 webhookEventName=event.canceled のときのみ存在。
canceledDateTimeUtc string false 予定キャンセルを実行した時間(UTC時間・ISO 8601形式)。 webhookEventName=event.canceled のときのみ存在。

Json Sample

{
  "webhookEventName": "event.confirmed", // event.confirmed or event.canceled
  "payload": {
    "id": "15v0lud5id9t3qjxhoi6yst7gh9dvmmf",
    "originalUrl": "https://app.aitemasu.me/ev/xxxxxxxxxx",
    "confirmedDateTimeUtc": "2024-09-23T05:30:19+00:00",
    "eventName": "無料相談",
    "selectedService": "無料相談 30分",
    "startDateTime": "2024-09-24T10:00:00+09:00",
    "endDateTime": "2024-09-24T10:30:00+09:00",
    "timeZone": "Asia/Tokyo",
    "startDateTimeUtc": "2024-09-24T01:00:00+00:00",
    "endDateTimeUtc": "2024-09-24T01:30:00+00:00",
    "location": {
      "type": "googlemeet", // place or googlemeet or zoom 
      "at": "https://meet.google.com/xxx-xxx-xxx"
    },
    "owner": {
      "name": "Shinji Yamaguchi",
      "email": "[email protected]" // アカウントのメールアドレス
    },
    "organizer": {
      "name": "Shinji Yamaguchi",
      "jobTitle": "株式会社テスト",
      "writeCalendar": "[email protected]" // 予定を書き込み先カレンダー
    },
    "guestsFromOrganizerSide": [
      {
        "name": "Hanako Yamada"
      }
    ],
    "attendee": {
      "name": "山田太郎",
      "jobTitle": "テスト株式会社",
      "email": "[email protected]",
      "tel": "000-0000-0000",
      "comment": "用件・コメントのサンプルです。\n用件・コメントのサンプルです。\n用件・コメントのサンプルです."
    },
    "customeFormAnswers": [
      {
        "question": "質問1",
        "answer": "回答1"
      },
      {
        "question": "質問2",
        "answer": "選択肢1, 選択肢3" // 複数選択肢の回答
      },
      {
        "question": "質問3",
        "answer": "長文の回答のサンプルです。\n長文の回答のサンプルです。\n長文の回答のサンプルです."
      }
    ],
    "cancelPersonName": "山田太郎", //  webhookEventName=event.canceled のときのみ存在。
    "cancelReason": "緊急の予定が入ったため。", //  webhookEventName=event.canceled のときのみ存在。
    "canceledDateTimeUtc": "2024-09-23T06:46:47+00:00" //  webhookEventName=event.canceled のときのみ存在。
  }
}

テスト環境

現在テスト環境はありません。お手数ですが日程調整ページを作成し、実際に日程調整確定・キャンセルを行いながら挙動をご確認ください。