Beds24とOTAの連携でつまずく箇所は、ほぼ決まっています。(1)在庫と料金のマッピング、(2)外部ツール連携時のトークン認証、(3)APIのレート制限、(4)ゲストメッセージの制約、の4つです。いずれも「知っていれば避けられる」種類のもの。沖縄で2施設を運用してきた経験から、順番に整理します。
① 在庫と料金は「リンク」単位で結びつける
Beds24では、部屋タイプ(カテゴリー)と各予約サイトの接続を「リンク」という単位で管理します。1リンク=1つの部屋タイプを、1つのチャネルにつなぐこと。ここのマッピングを取り違えると、在庫が正しく同期されず、ダブルブッキングやカレンダーのズレの原因になります。
まず「どの部屋を、どのサイトの、どの部屋タイプに対応させるか」を紙に書き出してから設定するのが確実です。料金も同様で、Beds24内では複数のレートプラン枠に紐づき、チャネルとの対応はチャネルマネージャー側の設定で決まります。1泊の価格は、特別日の上書きも含めた「その日の実効価格」として管理される点も、頭に入れておくと混乱しません。
② トークン認証は3種類を区別する
外部ツールやAPIで連携するとき、最初につまずくのがトークンです。Beds24 API v2には、性質の違うトークンが複数あります。
- Long Life Token:管理画面から手動で発行する、有効期限の長いトークン。
- Refresh Token:招待コード(invite code)の交換で得られるトークン。約30日使わないと失効する「ローリング式」で、定期的に使い続ける(同期を回す)ことで生き続けます。放置すると接続が静かに切れ、再接続が必要になります。
- Access Token:上記から都度発行される、24時間程度の短命トークン。実際のAPI呼び出しに使います。
「連携したのに数週間後に突然止まった」の多くは、Refresh Tokenを使わずに失効させたケースです。また、書き込み(予約作成や返信)まで行うには、読み取りだけでなく書き込み用の権限(スコープ)を付けて接続し直す必要があります。
③ レート制限は「直列・100クレジット/5分」
Beds24 APIには、アカウントあたり5分で100クレジットというレート制限があります。しかも並列リクエストは制限を超えやすいため、呼び出しは直列で行うのが前提です。
私たちは、予約の同期・メッセージの取得・料金の取得といった処理を、あえて実行する「分」をずらして、同じ5分の枠がぶつからないように設計しています。一気に叩くのではなく、間隔をあけるのがコツです。制限に当たったら(429エラー)、少し待って再試行する作りにしておくと安心です。
④ メッセージはOTA予約のみ・リンクは削られる
ゲストメッセージのAPI(/bookings/messages)が扱えるのは、OTA予約のメッセージだけです。直接予約のやり取りはここには乗りません(メールで扱う設計にする必要があります)。
さらに、OTA経由で送るメッセージには制約があります。booking.comは事前に許可(ホワイトリスト)したドメインのURLしか通さず、Airbnbは外部のチェックインリンクを原則ブロックします。書式もプレーンテキスト+改行のみで、HTMLは崩れます。「自動送信メッセージにURLを入れたのに届かない」のは、たいていこの制約が原因です。
つまずきを減らす順番
設定は、①在庫マッピング → ②接続テスト → ③料金 → ④メッセージ の順で、一つずつ確認しながら進めるのが安全です。管理画面の名称やボタンの位置はアップデートで変わることがあるので、細かな手順は公式ドキュメント(wiki・APIリファレンス)を都度確認してください。仕組みさえ分かっていれば、画面が変わっても迷いません。
出典
- Beds24 チャネルマネージャー(プール在庫の仕組み): https://beds24.com/channel-manager.html
- Beds24 API v2 リファレンス: https://beds24.com/api/v2/
- Beds24 ドキュメント wiki: https://wiki.beds24.com/
- 本記事の運用上の注意点は、私たち(pono)が沖縄の2施設をBeds24上で運用してきた実経験に基づきます。