Send Webhooks

*This information is for developers.

Using the Webhook feature, Itemath will send a POST request with various information to a specified URL when schedules are confirmed or canceled.

Use Cases

  • Integrate scheduling data with your own system through Webhooks
  • Send data through Webhooks to services like Zapier or Make, and connect with various web services such as Slack, Chatwork, Google Sheets, and kintone

How to Set Up Webhooks

When creating a scheduling URL or configuring a template, turn on "Use Webhook" and fill in the required information.

Webhook Notification URL Specify an https endpoint that can receive POST requests from Itemath when schedules are confirmed or canceled. This needs to be prepared in advance.
Webhook Identification Token Optional. Use this to verify that the Webhook is from Itemath or as an identification code when using the same Webhook notification URL for multiple scheduling pages.
Webhook Settings

POST Request Specifications

Request

Itemath's Webhooks use the POST method. The request body is based on a JSON object and varies depending on the event type.

Response

The server receiving the Webhook should return a status code of 200. If a status code other than 200 is returned, it will retry up to 2 times with a 5-second delay. If the last request fails, an error notification will be sent.

Error Notification Email

If the last Webhook request fails, an error notification email will be sent to the email address associated with the account of the scheduling page creator.

Response Header

Content-Type: application/json
X-Aitemasu-Token: {{ configured Webhook identification token }}
User-Agent: Aitemasu Webhook

Response Body

Property Name Type Required Description
webhookEventName string true Webhook event type.
Schedule confirmed=event.confirmed
Schedule canceled=event.canceled
payload Object true Described below

Payload Object

Property Name Type Required Description
id string true Unique ID of the schedule. Note that data before May 2023 will be empty.
originalUrl string true URL of the scheduling page where the schedule was created.
confirmedDateTimeUtc string true Time when the schedule was created (UTC time, ISO 8601 format).
eventName string true Name of the schedule.
selectedService string true Selected service name when multiple services are available in the available time display type.
startDateTime string true Schedule start time (in timezone specified by timeZone, ISO 8601 format).
endDateTime string true Schedule end time (in timezone specified by timeZone, ISO 8601 format).
timeZone string true Timezone of the person who confirmed the schedule.
startDateTimeUtc string true Schedule start time (UTC time, ISO 8601 format).
endDateTimeUtc string true Schedule end time (UTC time, ISO 8601 format).
location Object true Location or video conference details.
owner Object true Information about the user who created the scheduling page.
organizer Object true Schedule organizer/person in charge.
guestsFromOrganizerSide Array true Additional attendees from the organizer's side.
attendee Object true Person who confirmed the schedule.
customeFormAnswers Array true Responses to custom input fields if they exist in the required information.
cancelPersonName string false Name of the person who canceled the schedule. Only exists when webhookEventName=event.canceled.
cancelReason string false Reason for schedule cancellation. Only exists when webhookEventName=event.canceled.
canceledDateTimeUtc string false Time when the schedule was canceled (UTC time, ISO 8601 format). Only exists when 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": "Free Consultation",
    "selectedService": "Free Consultation 30 min",
    "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",
      "password": "XXXXX" // Password when not embedded in the URL for Zoom
    },
    "owner": {
      "name": "Shinji Yamaguchi",
      "email": "[email protected]" // Account email address
    },
    "organizer": {
      "name": "Shinji Yamaguchi",
      "jobTitle": "Test Corporation",
      "writeCalendar": "[email protected]" // Calendar for writing events
    },
    "guestsFromOrganizerSide": [
      {
        "name": "Hanako Yamada"
      }
    ],
    "attendee": {
      "name": "Taro Yamada",
      "jobTitle": "Test Corporation",
      "email": "[email protected]",
      "tel": "000-0000-0000",
      "comment": "This is a sample comment.\nThis is a sample comment.\nThis is a sample comment."
    },
    "customeFormAnswers": [
      {
        "question": "Question 1",
        "answer": "Answer 1"
      },
      {
        "question": "Question 2",
        "answer": "Option 1, Option 3" // Multiple choice answers
      },
      {
        "question": "Question 3",
        "answer": "This is a sample long answer.\nThis is a sample long answer.\nThis is a sample long answer."
      }
    ],
    "cancelPersonName": "Taro Yamada", // Only exists when webhookEventName=event.canceled
    "cancelReason": "Due to an urgent schedule.", // Only exists when webhookEventName=event.canceled
    "canceledDateTimeUtc": "2024-09-23T06:46:47+00:00" // Only exists when webhookEventName=event.canceled
  }
}

Test Environment

Currently, there is no test environment available. Please create a scheduling page and verify the behavior by actually confirming and canceling schedules.