Webhookで通知されるイベントの共通的なデータ構造と、各種オブジェクトについて解説します。
イベント共通データ構造
すべてのイベントにid、event、create_atが含まれます。modeは通常含まれますが、payment_errorとabandonedでは送信されません。
{
"id": "イベントごとに一意なリクエストID",
"event": "イベント名",
"mode": "liveまたはtest(payment_errorとabandonedでは送信されません)",
"create_at": "イベント発生日時(ISO-8601形式・UTC)"
}
値がnullの項目はキーごと省略されます。受信側ではキーの存在を確認して処理してください。
Webhookで取得できない項目
Webhookには、入会日、退会日、会員ステータス、契約開始日、契約終了日は含まれません。必要な情報がWebhookに含まれるかは、このページの各オブジェクトを確認してください。
同じ通知を複数回受け取る可能性について
リトライや手動再送により、同じイベントが複数回届くことがあります。イベントごとに一意なid、または同じ値を持つApps-Webhook-Idヘッダーで重複を判定してください。署名は送信のたびに変わるため、署名値は重複判定に使用できません。
イベントごとの主な違い
| event | 主な違い |
|---|---|
customer |
新しいApps顧客が作成されたとき。customerを含みます。 |
application |
定期払い・毎月払いのみ。contract_id、customer、planを含みます。 |
payment |
トップレベルにcontract_idとpayment_idを含みます。 |
refund |
基本構造はpaymentと同じです。payment.refund_idを含み、payment.charge_idは設定されません。 |
payment_error |
modeとcontract_idを含みません。顧客情報はcustomerオブジェクトではなく、email、nameなどがトップレベルに並びます。 |
abandoned |
modeを含みません。複数顧客をcart_abandoned_listでまとめて通知します。 |
canceled |
定期払い・毎月払いのみ。決済情報のpaymentは含みません。 |
顧客情報オブジェクト(customer)
{
"customer_id": "顧客の一意なID(UUID)",
"email": "メールアドレス",
"name": "顧客名(任意)",
"company": "会社名(任意)",
"phone_number": "電話番号(E.164形式・任意)"
}
決済情報オブジェクト(payment)
{
"price": "決済金額(割引適用後)",
"original_price": "割引適用前の金額(任意)",
"total_price": "合計金額(任意)",
"discount": "割引価格の場合true(任意)",
"coupon": "クーポン名(任意)",
"quantity": "顧客が選択した個数・1回払いのみ(任意)",
"installments": "顧客が選択した分割回数・1回払いのみ(任意)",
"installment_index": "分割払いの何回目か(任意)",
"platform_id": "決済プラットフォームID",
"charge_id": "決済プラットフォームの決済ID(任意)",
"refund_id": "返金イベントの返金ID(任意)",
"card": "決済時のカード情報(任意)"
}
Appsのpayment_idはこのオブジェクト内ではなく、paymentイベントとrefundイベントのトップレベルに含まれます。Webhook共通のidとは別の値です。
platform_idは、1=Stripe、2=PayPal、4=UnivaPay、8=Stripe Billing、16=Stripe銀行振込、32=UnivaPay銀行振込です。
プラン情報オブジェクト(plan)
{
"payment_type": "決済タイプ(1: 1回払い, 4: 定期払い, 5: 毎月払い[回数制限付き])",
"name": "プラン名"
}
Discord連携情報オブジェクト(discord)
{
"discord_id": "DiscordユーザーID",
"discord_name": "Discordユーザー名(任意)"
}
LINE連携情報オブジェクト(line)
{
"line_id": "LINEユーザーID",
"line_name": "LINEユーザー名(任意)"
}
お届け先情報オブジェクト(shipping)
{
"name": "お届け先の名前(任意)",
"address_country": "国(任意)",
"address_zip": "郵便番号(任意)",
"address_state": "都道府県(任意)",
"address_city": "市町村(任意)",
"address_line1": "住所1(任意)",
"address_line2": "住所2(任意)"
}
備考欄オブジェクト(remarks)
[
{
"name": "備考欄の項目名(任意)",
"value": "顧客が入力した値(任意)"
}
]
UTMパラメータオブジェクト(utm)
{
"utm_source": "google",
"utm_medium": "cpc",
"utm_campaign": "spring_sale"
}
utmはオブジェクトの配列ではなく、キーと値のマップです。
Webhookイベントのサンプル
以下は「決済成功(payment)」イベントのWebhook通知例です。
{
"id": "00000000000000000000000000000001",
"event": "payment",
"mode": "live",
"create_at": "2026-08-04T00:00:00Z",
"contract_id": "00000000000000000000000000000002",
"payment_id": "00000000000000000000000000000003",
"customer": {
"customer_id": "00000000000000000000000000000004",
"email": "customer@example.com"
},
"payment": {
"platform_id": 4,
"price": 1000
},
"plan": {
"payment_type": 4,
"name": "サンプルプラン"
}
}
関連情報
- Webhookの基本的な設定方法については Webhookの設定方法 をご覧ください。
- APIレスポンスデータの詳細は APIレスポンスデータ構造 を参照してください。
Apps APIメニュー
| メニュー | 説明 |
|---|---|
| API設定方法 | アクセストークンの取得やAPI認証方法 |
| APIエンドポイント一覧 | 顧客情報・決済情報取得のためのAPI仕様 |
| 登録ページAPI | 登録ページのプラン登録・更新・削除と契約者一覧の取得 |
| Discord連携API | Discordのロール・チャンネル管理(カテゴリ指定 parent_id 対応) |
| APIレスポンスデータ構造 | APIから取得できるデータの詳細 |
| 共通レスポンス・エラー | APIの共通レスポンス形式とエラーコード(400等)の見方 |
| Webhookの設定方法 | イベント通知を受け取るためのWebhook設定方法 |
| Webhookデータ構造 | Webhookで通知されるデータ形式 |
| サンプルJSONデータ | API/Webhookで利用可能なサンプルデータ |
| API変更履歴 / リリースノート | Apps APIの更新、新機能、仕様変更を時系列で確認できます。 |
| サポートコミュニティ | 準備中 |
| よくあるご質問 | 準備中 |