Introduction

Webhooks allow external services to be notified by iGMS when certain events happen. When a specified event happens, we send a POST request to the URL you've provided. To register a webhook you should email us to support@igms.com and provide the following information:

  • Client ID of your iGMS API Application
  • Webhook type (Calendar data change, Booking change, Guest data change, or Properties change)
  • a URL (or URLs) to send requests to. You may provide different URLs for different types of webhooks

Webhooks general info

Every webhook request will have the following body schema:

KeyTypeDescription
typestringWebhook type. One of booking_data, calendar_data, guest_data, properties_data
dataobject[]Array of webhook data objects

The schema of objects in the data field depends on the webhook type. The response to the webhook request must be 200 OK, other codes would trigger a series of retries with exponential backoff.

List of webhooks

NameDescription
Booking changeNotify about reservation change
Calendar data changeNotify about calendar data change
Guest data changeNotify about guest details change
Properties changeNotify about created\deleted properties
Property calendar control changeNotify about enabling/disabling pricing management app for property
Connection revokedNotify about revoking connection

Booking change

This webhook is sent when a booking is changed. For this webhook data objects will be in the following format:

KeyTypeDescription
company_uidstringUID of company
booking_uidstringUID of booking
reservation_codestringReservation code
booking_statusstringOne of available booking statuses (see the corresponding filters section)
platform_typestringOne of available platform types (see the corresponding filters section)
listing_uidstringUID of booked listing
property_uidstringUID of booked property
guest_uidstringUID of guest
host_uidstringUID of host
number_of_guestsintNumber of guests
priceobjectPricing data object
local_checkin_dttmstringLocal checkin datetime in Y-m-d H:i:s format
local_checkout_dttmstringLocal checkout datetime in Y-m-d H:i:s format
created_dttmstringCreation datetime in Y-m-d H:i:s format
updated_dttmstringLast update datetime in Y-m-d H:i:s format
Pricing data
KeyTypeDescription
currencystringCurrency code (3 symbols)
price_basestringNumeric string with fraction
price_extrasstringNumeric string with fraction
price_feestringNumeric string with fraction
price_taxstringNumeric string with fraction
price_totalstringNumeric string with fraction

Request body sample

{
    "type": "booking_data",
    "data": [
        {
            "company_uid": "581919935819928467",
            "booking_uid": "DR3RS5S6_airgms_GT0QUEMAKFD400FS",
            "reservation_code": "DR3RS5S6",
            "booking_status": "accepted",
            "platform_type": "airgms",
            "listing_uid": "GT0QUEMUFT28YBID_airgms_GT0QUEMAKFD400FS",
            "property_uid": "5804533058085162365",
            "guest_uid": "9WO7Y5I9C4WSCKCWG4KKWKWK0_airgms",
            "host_uid": "GT0QUEMAKFD400FS_airgms",
            "number_of_guests": 1,
            "price": {
                "currency": "USD",
                "price_base": "10.00",
                "price_extras": "0.00",
                "price_fee": "0.00",
                "price_tax": "0.00",
                "price_total": "10.00"
            },
            "local_checkin_dttm": "2021-10-10 13:00:00",
            "local_checkout_dttm": "2021-10-11 11:00:00",
            "created_dttm": "2021-10-06 20:14:10",
            "updated_dttm": "2021-10-06 20:14:15"
        }
    ]
}

Calendar data change

(Available upon request) This webhook is sent when calendar data for a date (or dates) are changed. For this webhook data objects will be in the following format:

KeyTypeDescription
company_uidstringUID of company
listing_uidstringUID of listing
property_uidstringUID of property
datestringCalendar date in Y-m-d format
rate_idstringPlatform rate ID ('0' for the platforms which do not support rates and also for rate agnostic calendar data (e. g. listing availability))
currencystringCurrency code (3 symbols)
pricestringNumeric string with fraction
base_pricestringThis field is reserved for future usage
is_availableintIs listing available (1) or not (0)
min_stayintMinimum nights value
base_min_stayintThis field is reserved for future usage

Request body sample

{
    "type": "calendar_data",
    "data": [
        {
            "company_uid": "581919935819928467",
            "listing_uid": "51477991_airbnb_411957375",
            "date": "2021-10-11",
            "rate_id": "0",
            "currency": "USD",
            "is_available": 1,
            "price": "100.00",
            "base_price": "100.00",
            "min_stay": 2,
            "base_min_stay": 2
        }
    ]
}

Guest details change

This webhook is sent when the guest details of one of the future bookings are changed. For this webhook data objects will be in the following format:

KeyTypeDescription
company_uidstringUID of company
guest_uidstringUID of guest
platform_typestringOne of available platform types (see the corresponding filters section)
namestringGuest full name
emailstring[]Array of guest emails
phone_numberstring[]Array of phone numbers

Request body sample

{
    "type": "guest_data",
    "data": [
        {
            "company_uid": "581919935819928467",
            "guest_uid": "EOJTEMLW5IOS4GWWWOGOCOS88_airgms",
            "platform_type": "airgms",
            "name": "Pavel",
            "email": [
                "pavel@example.com"
            ],
            "phone_number": [
                "+79123456789"
            ]
        }
    ]
}

Properties change

This webhook is sent when user's properties list has changed: either a property has been deleted, or a property has been merged into another property, or a new property has been created. For this webhook data objects will be in the following format:

KeyTypeDescription
company_uidstringUID of company
operationstringcreate or delete
property_uidstringUID of removed\created property

Request body sample

{
    "type": "properties_data",
    "data": [
        {
            "company_uid": "4674080625695383552",
            "operation": "create",
            "property_uid": "6848864665656201326"
        }
    ]
}

Property calendar control change

This webhook is sent when user changes which pricing management app controls property calendar. Even if control is not allowed, we save received calendar data to be applied if user re-enables the app. For this webhook data objects will be in following format:

KeyTypeDescription
company_uidstringUID of company
property_uidstringUID of property
calendar_control_allowedboolIs app controls property calendar

Request body sample

{
    "type": "property_calendar_control_changed",
    "data": [
        {
            "company_uid": "4674080625695383552",
            "property_uid": "6848864665656201326",
            "calendar_control_allowed": false
        }
    ]
}

Connection revoked

This webhook is sent when user revokes access to app. For this webhook data objects will be in following format:

KeyTypeDescription
company_uidstringUID of company

Request body sample

{
    "type": "connection_revoked",
    "data": [
        {
            "company_uid": "4674080625695383552"
        }
    ]
}

Property changed

This webhook is sent when user's property has changed: either changed, or deleted, or a property has been merged into another property, or a new property has been created. For this webhook data object will be in the following format:

KeyTypeDescription
company_uidstringUID of company
Property fields as in v1/get-property

Request body sample

{
    "type": "property_changed",
    "data": {
        "company_uid": "4674080625695383552",
        "property_uid": "qc11106314",
        "name": "Superior Single Room with Sea View",
        "address": "402 W Georgia St, Vancouver, V6B 5A2",
        "checkin_time": "15",
        "checkout_time": "12",
        "beds": 1,
        "bedrooms": 0,
        "bathrooms": 0,
        "is_active": 1,
        "comment": null,
        "clean_hr": 1.5,
        "clean_tm": null,
        "clean_beds_k": 0,
        "clean_beds_q": 1,
        "clean_beds_d": 0,
        "clean_beds_s": 0,
        "clean_specials": null,
        "is_inbox_enabled": 1,
        "are_auto_reviews_enabled": 1,
        "ical_token": null,
        "location": {
          "country_code": "ca",
          "postal_code": "V6B 5A2",
          "lat": 49.279616,
          "lng": -123.1122527,
          "street": "402 W Georgia St",
          "city": "Vancouver"
        },
        "selected_insurance_settings": {
          "future_reservation_coverage": "newReservationsOnly",
          "content_and_dwelling_amount": 25000,
          "bodily_insurance_amount": 500000,
          "channel_coverage": [
            "airgms"
          ],
          "include_screening_information": true,
          "insurance_company_name": "CompanyName",
          "is_insurance_coverage_active": true
        },
        "listings": [
            "660689604_booking_6606896",
            "GHA78D5I705LYHGA_airgms_4OXKYWD7RB8KSK8GK8K4SS8K0"
        ],
        "door_access_code": null,
        "calendar_control_allowed": false,
        "currency": "CAD"
    }
}