Download OpenAPI specification:
Jolt の外部 API。
エンドポイントごとに異なります。
| グループ | 認証方式 | ヘッダ / フィールド |
|---|---|---|
| Referral / ReferralTransaction / ReferralCustomFieldValue / ReferralActivityLog | API キー | X-Jolt-API-Key |
| Tag | パブリックトークン (リクエストボディ内) | program_token: "pub_..." |
| StripeWebhook | Stripe 署名 | Stripe-Signature (Stripe Dashboard で設定する Webhook の署名シークレットで検証) |
Referral Lead のステータスを更新する。 Lead の特定には lead_id または custom_field_id + custom_field_value のいずれか一方を指定する。 Vendor / VendorProgram の整合性が取れない場合は 404 を返す。
| X-Dry-Run | string Value: "true" Example: true true を指定すると、認証およびリクエストバリデーションのみ実行し、 DB操作をスキップして 200 OK を返す。疎通確認用。 |
| lead_id | string Referral Lead ID(Jolt 内部 ID) |
| custom_field_id | string カスタムフィールド ID(ULID) |
| custom_field_value | string カスタムフィールドの値 |
| status required | string Enum: "qualified" "unqualified" "won" "lost" Lead ステータス。 qualified: 適格 unqualified: 不適格 won: 取引成立 lost: 取引不成立 |
| status_detail | string or null ステータス詳細。 unqualified / lost の場合のみ指定可能。 |
{- "lead_id": "01KB1S3TSZ4KMW6TR84KF6KPXC",
- "status": "qualified"
}{ }紹介された顧客に対する取引レコードを作成する。 顧客の特定には customer_id または custom_field_id + custom_field_value のいずれか一方を指定する。 作成後、顧客向け報酬作成メッセージを非同期で送信する。
| X-Dry-Run | string Value: "true" Example: true true を指定すると、認証およびリクエストバリデーションのみ実行し、 DB操作をスキップして 200 OK を返す。疎通確認用。 |
| customer_id | string Referral Customer ID(Jolt 内部 ID) |
| custom_field_id | string カスタムフィールド ID(ULID) |
| custom_field_value | string カスタムフィールドの値 |
| sales_amount required | integer <int32> >= 0 紹介売り上げ金額 |
{- "customer_id": "01KB1S3TSZ4KMW6TR84KF6KPXC",
- "sales_amount": 50000
}{ }指定した Referral のカスタムフィールド値を更新する。 部分更新をサポートし、指定されたフィールドのみ更新される。 存在しない値は新規作成、既存の値は上書きされる。
| X-Dry-Run | string Value: "true" Example: true true を指定すると、認証およびリクエストバリデーションのみ実行し、 DB操作をスキップして 200 OK を返す。疎通確認用。 |
| referral_id required | string Referral ID(ULID) |
required | Array of objects 更新するカスタムフィールド値の配列 |
{- "referral_id": "01KB1S3TSZ4KMW6TR84KF6KPXC",
- "custom_field_values": [
- {
- "referral_custom_field_id": "01KJRWNMZC3679KSSY2YTJ5T5W",
- "value": "自社顧客ID-12345"
}, - {
- "referral_custom_field_id": "01KJRWNMZC3679KSSY2YTJ5T5X",
- "value": null
}
]
}{ }紹介に対する活動ログを作成する。 Vendor / VendorProgram の整合性が取れない場合は 404 を返す。
| X-Dry-Run | string Value: "true" Example: true true を指定すると、認証およびリクエストバリデーションのみ実行し、 DB操作をスキップして 200 OK を返す。疎通確認用。 |
| referral_id required | string Referral ID(ULID) |
| title required | string 活動ログのタイトル |
| content | string 活動ログの内容 |
| activity_date required | string <date> 活動日(YYYY-MM-DD) |
{- "referral_id": "01KB1S3TSZ4KMW6TR84KF6KPXC",
- "title": "初回訪問",
- "content": "初回訪問を実施し、サービス概要を説明しました。",
- "activity_date": "2025-06-15"
}{ }クライアントサイトに埋め込む JS タグ (https://tag.jolt.me/v1/tag.js) から呼ばれる公開エンドポイント。
program_token (パブリックトークン) でベンダープログラムを識別する。書き込み専用権限。
クライアントサイトに埋め込んだ Jolt タグ (tag.js) から呼ばれる公開エンドポイント。
無料サインアップ完了 → qualified、有料化完了 → won のステータスを更新する。
APIキー不要。ボディの program_token (パブリックトークン pub_... 48文字) でベンダープログラムを識別する。
書き込み専用なので漏洩時の被害は当該プログラムのリードステータス変更に限定される。
organization_id または email のいずれか必須。両方未指定なら 400。organization_id (system-managed カスタムフィールド「組織ID」と照合)organization_id 不一致 or 未指定なら email (Referral.contact_email) で再検索organization_id を常時送信し、email 単独で運用しないwon 後の qualified 等は backend 側で握り潰す(200 {} を返す)。organization_id: 外部サービスの組織 ID。リードの突合 (上記) に使われる。Stripe 連携を併用する場合は同じ値を Stripe metadata の jolt_organization_id キーにも送ること (キー名はレイヤで分離: Jolt API 内では organization_id、Stripe 共有名前空間では jolt_ プレフィックス付き)。won 後の不正遷移時もこのフィールドのみ upsert される(タグの冪等性のため)。company_name / last_name / first_name): 値が空でなければ Referral 上書き。クロスドメインから呼ばれるためプリフライト OPTIONS を許可。credentials: omit でアクセスする想定。
| program_token required | string^pub_[a-f0-9]{48}$ ベンダープログラムのパブリックトークン。
形式: |
| organization_id required | string non-empty 外部サービスの組織 ID。リードの突合一次キー (system-managed カスタムフィールド「組織ID」と照合)。
BtoB SaaS で人事異動・退職に対しても安定した識別子であり、サインアップ操作者と有料化操作者が別人になるケースでも |
string <email> [ 1 .. 254 ] characters ユーザーのメールアドレス。突合キーのフォールバック (既存リードの | |
| status required | string Enum: "qualified" "won" タグから設定可能なリードステータス。
その他の値( |
| company_name | string 会社名(任意 / 既存値を上書き) |
| last_name | string 担当者姓(任意 / 既存値を上書き) |
| first_name | string 担当者名(任意 / 既存値を上書き) |
{- "program_token": "pub_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
- "organization_id": "org_12345",
- "email": "user@example.com",
- "status": "qualified",
- "company_name": "株式会社サンプル",
- "last_name": "山田",
- "first_name": "太郎"
}{ }BtoC モード用のブラウザタグ公開エンドポイント。jolt-tag JS の
jolt('track', '<event_name>', { amount }) から cross-origin POST で発火し、
Cookie (jolt_referral) の帰属情報を元に Referral / ConversionEvent を作成する。
旧仕様の /v1/tag/events/{signup,purchase,renewal} は廃止され、単一エンドポイントへ統合された。
イベント種別はパスではなく event_name(ベンダーが作成したコンバージョンイベント定義の slug)で指定する。
APIキー不要。Cookie ベースの帰属解決のみ。vendor_program_id をボディに含める。
以下のいずれかに該当する場合は ConversionEvent を作成せず、200 {success:true, status:"not_attributed"} でサイレント終了する (クロステナント誤帰属防止):
jolt_referral 未設定 (紹介経由でない直接アクセス)referrer_id / click_id / program_id のいずれかが空program_id がリクエスト vendor_program_id と一致しないvendor_program_id / event_name / customer_contact_email 必須。event_name は当該プログラムに存在するコンバージョンイベント定義の slug。未存在なら 404。external_source + external_source_id で担保(同一なら同一 ConversionEvent を返し status=idempotent_skip)。status は not_attributed / created / idempotent_skip のいずれか。クロスドメインから呼ばれるためプリフライト OPTIONS を許可。credentials: include で Cookie を送ること。
| vendor_program_id required | string ベンダープログラムID (ULID) |
| event_name required | string コンバージョンイベント定義の slug(例 signup / purchase / renewal / 任意のカスタム slug) |
| customer_contact_email required | string <email> 顧客連絡先メールアドレス |
| customer_name | string 顧客名 |
| customer_contact_last_name | string 顧客担当者 姓 |
| customer_contact_first_name | string 顧客担当者 名 |
| amount | integer <int32> >= 0 購入金額等。パーセンテージ報酬の計算に使われる(0 / 未指定だと計算結果が 0 になり報酬は発火しない)。 |
| external_source | string ベンダー側ソース識別子(例 app / stripe)。 |
| external_source_id | string ベンダー側冪等 ID(例 order_12345) |
| metadata | string 任意の追加メタデータ。有効な JSON 文字列として送信する必要がある(例 |
{- "vendor_program_id": "01JCK1S3TSZ4KMW6TR84KF6PR1",
- "event_name": "signup",
- "customer_contact_email": "customer@example.com"
}{- "success": true,
- "status": "created",
- "referral_id": "01JCK1S3TSZ4KMW6TR84KF6R01",
- "conversion_event_id": "01JCK1S3TSZ4KMW6TR84KF6CE1",
- "conversion_event_definition_id": "01JCK1S3TSZ4KMW6TR84KF6D01"
}サーバーサイド呼び出し専用エンドポイント (Stripe Webhook 等)。Cookie を使わず
customer_contact_email で既存紹介を解決する。任意の external_source / external_source_id で
ConversionEvent を作成できるため API キー認証 (X-Jolt-API-Key) を必須化し、
リクエストの vendor_program_id が API キーの所属プログラムと一致することをサーバー側で再検証する。
X-Jolt-API-Key 必須。キーの所属 vendor_program_id とリクエストの vendor_program_id が
一致しない場合は 403。
vendor_program_id / event_name / customer_contact_email / external_source / external_source_id 必須。customer_contact_email で既存紹介 (Referral) を解決する。該当が無い場合は未帰属として status=not_attributed。external_source + external_source_id で担保(status=idempotent_skip)。| vendor_program_id required | string |
| event_name required | string コンバージョンイベント定義の slug |
| customer_contact_email required | string <email> 既存紹介との突合キー |
| amount | integer <int32> >= 0 継続課金額等。0 以上のみ受け付ける。 |
| external_source required | string 必須。ベンダー側ソース識別子(例 stripe) |
| external_source_id required | string 必須。ベンダー側冪等 ID(例 in_xxx) |
| metadata | string 任意の追加メタデータ。有効な JSON 文字列として送信する必要がある。 実装側で JSON としてバリデーションされ、不正な場合は 400 となる。 |
{- "vendor_program_id": "01JCK1S3TSZ4KMW6TR84KF6PR1",
- "event_name": "renewal",
- "customer_contact_email": "customer@example.com",
- "amount": 5000,
- "external_source": "stripe",
- "external_source_id": "in_xxxxxxxxxxxx",
- "metadata": "{\"cycle\":\"monthly\"}"
}{- "success": true,
- "status": "created",
- "referral_id": "01JCK1S3TSZ4KMW6TR84KF6R01",
- "conversion_event_id": "01JCK1S3TSZ4KMW6TR84KF6CE1",
- "conversion_event_definition_id": "01JCK1S3TSZ4KMW6TR84KF6D01"
}Jolt が処理するのは以下の 2 つのみ。Stripe Dashboard でもこの 2 つだけを選択する。
| イベント | 用途 |
|---|---|
payment_intent.succeeded |
一回払い・サブスク両方の決済成功 → 取引レコード作成 |
charge.refunded |
返金 → 全額返金は論理削除、部分返金は残金額で再作成 |
Webhook 受信時、Jolt は以下の優先順位で紹介レコードを特定する:
metadata.jolt_organization_id — クライアントサービスの組織 ID。Stripe metadata は他サービス共有名前空間のため jolt_ プレフィックスで衝突回避customer (Stripe顧客ID) — 既存クライアントとの後方互換billing_details.email — 最終フォールバック (payment_intent.succeeded イベントには含まれないため、実質サブスクでは効かない)重要:Stripe の Customer.metadata は PaymentIntent に自動伝播しない。
Customer のみに metadata を付与しても、payment_intent.succeeded イベントの metadata フィールドは空となり 1段目の照合が機能しない。
確実に 1段目で照合するには、PaymentIntent 作成時にも metadata を設定する:
// Customer 作成時 (任意 — 監査用)
const customer = await stripe.customers.create({
email: 'user@example.com',
metadata: { jolt_organization_id: organization_id }
});
// 一回払い: PaymentIntent に必ず付与
await stripe.paymentIntents.create({
amount, currency, customer: customer.id,
metadata: { jolt_organization_id: organization_id } // ← 必須
});
// サブスク (Checkout 経由): payment_intent_data.metadata に付与
// (Stripe は内部で各請求サイクル毎に PaymentIntent を作成し、その metadata がイベントに載る)
await stripe.checkout.sessions.create({
mode: 'subscription',
customer: customer.id,
line_items: [...],
payment_intent_data: {
metadata: { jolt_organization_id: organization_id } // ← 必須
}
});
※ Stripe metadata に乗せる値は、タグ API (POST /api/tracking/lead-status) の organization_id と 同じ値を送ること。両者は同じ「クライアントサービスの組織 ID」を表し、それぞれのレイヤで名前空間を分けるためにキー名だけ異なる:
organization_id (Jolt API 内なので Jolt は自明)jolt_organization_id (他サービスと共有名前空間のため Jolt プレフィックス)Stripe Dashboard でこの Webhook 受信先を登録時に発行される署名シークレット(whsec_...)を、Jolt 管理画面の Stripe 連携設定にも登録する必要がある。
ステージング環境のみ、STRIPE_WEBHOOK_SKIP_SIGNATURE_VERIFICATION=true で署名検証をスキップ可能(playground 検証用)。本番環境では絶対に有効化されない。
Stripe Dashboard で登録する Webhook 受信先。 決済成功・返金イベントを受信して、紹介レコードに紐付く取引レコードと報酬実績を自動作成する。
https://external-api.jolt.me/integrations/stripe/webhook/<vendor_program_id> を設定payment_intent.succeeded と charge.refunded の 2 つだけ を選択whsec_...) を Jolt 管理画面の Stripe 連携設定に登録payment_intent.succeeded: 一回払い・サブスクの決済成功 → 取引レコード作成 + 報酬実績作成charge.refunded (全額返金): 取引レコード + 報酬実績を論理削除charge.refunded (部分返金): 取引レコード + 報酬実績を論理削除し、残金額で再作成詳細は StripeWebhook タグの説明を参照。要約:
metadata.jolt_organization_id → 1段目(Stripe metadata は他サービス共有名前空間のため Jolt プレフィックス付き)customer (Stripe顧客ID) → 2段目(既存クライアント後方互換)billing_details.email → 3段目(最終フォールバック、payment_intent.succeeded には含まれない)Stripe のリトライ抑止のため、内部処理が失敗しても基本的に 200 を返す(イベントは stripe_events テーブルに記録される)。
| vendor_program_id required | string Example: 01K9YHPWKGF330PR9222K49J31 ベンダープログラムID (ULID)。Stripe 連携設定の宛先プログラムを特定する。 |
| Stripe-Signature required | string Stripe が付与する署名ヘッダ。 |
Stripe が送信するイベントオブジェクト(Event object)。
Jolt 側では data.object.metadata.jolt_organization_id などを参照するが、エンベロープ全体は Stripe 仕様に従う。
| id | string Stripe イベント ID |
| type | string Enum: "payment_intent.succeeded" "charge.refunded" イベントタイプ |
| livemode | boolean 本番モードかどうか |
object イベント本体( |
{- "id": "evt_1Abc...",
- "type": "payment_intent.succeeded",
- "livemode": true,
- "data": {
- "object": { }
}
}{- "status": "ok"
}登録された Webhook URL に送信されるイベントペイロード。
各イベントは共通の Envelope 構造でラップされ、type フィールドでイベント種別を識別できます。
Webhook 受信側は HTTP 200 を返却してください。
新しいリード(紹介案件)が作成された際に送信されるイベント。
type: "lead.created"
| id required | string イベントID (ULID) |
| type required | string Value: "lead.created" イベント種別: lead.created(新規リード作成時) |
| sent_at required | string <date-time> 送信日時 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (LeadCreatedData) リード作成イベントのデータ |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "lead.created",
- "sent_at": "2025-01-15T09:30:00Z",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "referral_id": "01JCK1S3TSZ4KMW6TR84KF6R01",
- "partner_id": "01JCK1S3TSZ4KMW6TR84KF6P01",
- "partner_name": "株式会社サンプル",
- "partner_user_id": "01JCK1S3TSZ4KMW6TR84KF6PU1",
- "partner_user_name": "山田 太郎",
- "partner_user_email": "yamada@example.com",
- "partner_user_job_category_name": "営業部",
- "partner_user_job_title_name": "部長",
- "affiliated_company_name": "株式会社サンプルホールディングス",
- "vendor_program_group_name": "ゴールドパートナー",
- "is_bank_account": true,
- "customer_name": "株式会社テスト",
- "customer_corporate_number": "9876543210123",
- "customer_contact_last_name": "田中",
- "customer_contact_first_name": "太郎",
- "customer_contact_email": "tanaka@example.com",
- "job_category_name": "営業",
- "job_title_name": "部長",
- "note": "商談予定あり。4月中に結論見込み。",
- "source": "partner_manual",
- "referral_lead_id": "01JCK1S3TSZ4KMW6TR84KF6L01",
- "referral_lead_status": "qualified",
- "referral_lead_status_detail": "予算不足のため",
- "referral_lead_created_by": "山田 太郎",
- "referral_lead_created_by_email": "yamada@example.com"
}
}リードのステータスが更新された際に送信されるイベント。
type: "lead.status"
| id required | string イベントID (ULID) |
| type required | string Value: "lead.status" イベント種別: lead.status(リードステータス更新時) |
| sent_at required | string <date-time> 送信日時 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (LeadStatusData) リードステータス更新イベントのデータ |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "lead.status",
- "sent_at": "2025-01-15T09:30:00Z",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "referral_id": "01JCK1S3TSZ4KMW6TR84KF6R01",
- "partner_id": "01JCK1S3TSZ4KMW6TR84KF6P01",
- "partner_name": "株式会社サンプル",
- "partner_user_id": "01JCK1S3TSZ4KMW6TR84KF6PU1",
- "partner_user_name": "山田 太郎",
- "partner_user_email": "yamada@example.com",
- "partner_user_job_category_name": "営業部",
- "partner_user_job_title_name": "部長",
- "affiliated_company_name": "株式会社サンプルホールディングス",
- "vendor_program_group_name": "ゴールドパートナー",
- "is_bank_account": true,
- "customer_name": "株式会社テスト",
- "customer_corporate_number": "9876543210123",
- "customer_contact_last_name": "田中",
- "customer_contact_first_name": "太郎",
- "customer_contact_email": "tanaka@example.com",
- "job_category_name": "営業",
- "job_title_name": "部長",
- "note": "商談予定あり。4月中に結論見込み。",
- "source": "partner_manual",
- "referral_lead_id": "01JCK1S3TSZ4KMW6TR84KF6L01",
- "referral_lead_status": "qualified",
- "referral_lead_status_detail": "予算不足のため",
- "referral_lead_created_by": "山田 太郎",
- "referral_lead_created_by_email": "yamada@example.com"
}
}新しい報酬レコードが作成された際に送信されるイベント。
type: "reward.created"
| id required | string イベントID (ULID) |
| type required | string Value: "reward.created" イベント種別: reward.created(新規報酬作成時) |
| sent_at required | string <date-time> 送信日時 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (RewardCreatedData) 報酬作成イベントのデータ |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "reward.created",
- "sent_at": "2025-01-15T09:30:00Z",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "referral_id": "01JCK1S3TSZ4KMW6TR84KF6R01",
- "partner_id": "01JCK1S3TSZ4KMW6TR84KF6P01",
- "partner_name": "株式会社サンプル",
- "partner_user_id": "01JCK1S3TSZ4KMW6TR84KF6PU1",
- "partner_user_name": "山田 太郎",
- "partner_user_email": "yamada@example.com",
- "partner_user_job_category_name": "営業部",
- "partner_user_job_title_name": "部長",
- "affiliated_company_name": "株式会社サンプルホールディングス",
- "vendor_program_group_name": "ゴールドパートナー",
- "is_bank_account": true,
- "customer_name": "株式会社テスト",
- "customer_corporate_number": "9876543210123",
- "customer_contact_last_name": "田中",
- "customer_contact_first_name": "太郎",
- "customer_contact_email": "tanaka@example.com",
- "job_category_name": "営業",
- "job_title_name": "部長",
- "note": "商談予定あり。4月中に結論見込み。",
- "source": "partner_manual",
- "referral_performance_id": "01JCK1S3TSZ4KMW6TR84KF6RP1",
- "sales_amount": 100000,
- "reward_amount": 10000,
- "reward_status": "approved",
- "reward_status_detail": "条件未達成のため保留中",
- "reward_description": "成約報酬",
- "reward_month": "2025-01",
- "payment_date": "2025-02-28"
}
}報酬のステータスが更新された際に送信されるイベント。
type: "reward.status"
| id required | string イベントID (ULID) |
| type required | string Value: "reward.status" イベント種別: reward.status(報酬ステータス更新時) |
| sent_at required | string <date-time> 送信日時 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (RewardStatusData) 報酬ステータス更新イベントのデータ |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "reward.status",
- "sent_at": "2025-01-15T09:30:00Z",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "referral_id": "01JCK1S3TSZ4KMW6TR84KF6R01",
- "partner_id": "01JCK1S3TSZ4KMW6TR84KF6P01",
- "partner_name": "株式会社サンプル",
- "partner_user_id": "01JCK1S3TSZ4KMW6TR84KF6PU1",
- "partner_user_name": "山田 太郎",
- "partner_user_email": "yamada@example.com",
- "partner_user_job_category_name": "営業部",
- "partner_user_job_title_name": "部長",
- "affiliated_company_name": "株式会社サンプルホールディングス",
- "vendor_program_group_name": "ゴールドパートナー",
- "is_bank_account": true,
- "customer_name": "株式会社テスト",
- "customer_corporate_number": "9876543210123",
- "customer_contact_last_name": "田中",
- "customer_contact_first_name": "太郎",
- "customer_contact_email": "tanaka@example.com",
- "job_category_name": "営業",
- "job_title_name": "部長",
- "note": "商談予定あり。4月中に結論見込み。",
- "source": "partner_manual",
- "referral_performance_id": "01JCK1S3TSZ4KMW6TR84KF6RP1",
- "sales_amount": 100000,
- "reward_amount": 10000,
- "reward_status": "approved",
- "reward_status_detail": "条件未達成のため保留中",
- "reward_description": "成約報酬",
- "reward_month": "2025-01",
- "payment_date": "2025-02-28"
}
}パートナーがベンダープログラムに申請した際に送信されるイベント。
type: "vendor_program.partner.created"
| id required | string イベントID (ULID) |
| type required | string Value: "vendor_program.partner.created" イベント種別: vendor_program.partner.created(プログラムにパートナーが申請時) |
| sent_at required | string <date-time> 送信日時 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (VendorProgramPartnerCreatedData) パートナープログラム申請イベントのデータ |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "vendor_program.partner.created",
- "sent_at": "2025-01-15T09:30:00Z",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "partner_id": "01JCK1S3TSZ4KMW6TR84KF6P01",
- "partner_name": "株式会社サンプル",
- "corporate_number": "1234567890123",
- "address": "東京都渋谷区...",
- "entity_type": "corporation",
- "partner_type": "corporate_business",
- "invoice_registration_number": "T1234567890123",
- "affiliated_company_name": "株式会社サンプルホールディングス",
- "affiliated_company_corporate_number": "1234567890124",
- "is_individual_business_owner": false,
- "partner_user_email": "yamada@example.com",
- "partner_user_job_category_name": "営業部",
- "partner_user_job_title_name": "部長",
- "vendor_program_group_name": "ゴールドパートナー",
- "is_bank_account": true,
- "usage_experience": "現在あり",
- "prospect_company": 5,
- "available_industry_names": [
- "IT・通信",
- "製造業"
], - "note": "SaaS業界に強いパートナーです"
}
}パートナーのプログラム参加ステータスが更新された際に送信されるイベント。
type: "vendor_program.partner.status"
| id required | string イベントID (ULID) |
| type required | string Value: "vendor_program.partner.status" イベント種別: vendor_program.partner.status(プログラム参加中パートナーステータス更新時) |
| sent_at required | string <date-time> 送信日時 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (VendorProgramPartnerStatusData) パートナーステータス更新イベントのデータ |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "vendor_program.partner.status",
- "sent_at": "2025-01-15T09:30:00Z",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "partner_id": "01JCK1S3TSZ4KMW6TR84KF6P01",
- "partner_name": "株式会社サンプル",
- "corporate_number": "1234567890123",
- "address": "東京都渋谷区...",
- "entity_type": "corporation",
- "partner_type": "corporate_business",
- "invoice_registration_number": "T1234567890123",
- "affiliated_company_name": "株式会社サンプルホールディングス",
- "affiliated_company_corporate_number": "1234567890124",
- "is_individual_business_owner": false,
- "partner_user_email": "yamada@example.com",
- "partner_user_job_category_name": "営業部",
- "partner_user_job_title_name": "部長",
- "vendor_program_group_name": "ゴールドパートナー",
- "is_bank_account": true,
- "vendor_program_partner_status": "active",
- "vendor_program_partner_status_detail": "規約違反のため"
}
}新しい活動ログが作成された際に送信されるイベント。
type: "referral_activity_log.created"
| id required | string イベントID (ULID) |
| type required | string Value: "referral_activity_log.created" イベント種別: referral_activity_log.created(新規活動ログ作成時) |
| sent_at required | string <date-time> 送信日時 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (ActivityLogCreatedData) 活動ログ作成イベントのデータ |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "referral_activity_log.created",
- "sent_at": "2025-01-15T09:30:00Z",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "referral_id": "01JCK1S3TSZ4KMW6TR84KF6R01",
- "referral_activity_log_id": "01JCK1S3TSZ4KMW6TR84KF6AL1",
- "title": "初回訪問",
- "content": "初回訪問を実施し、サービス概要を説明しました。",
- "activity_date": "2026-03-25",
- "updated_by": "01JCK1S3TSZ4KMW6TR84KF6VU1",
- "updated_by_email": "yamada@example.com"
}
}リファラー経由のリンクから新しいリードが作成された際に送信されるイベント。
パートナー経由の lead.created とは別イベントとして発火するため、リファラー経由のリードだけを別ルートに流せる。
type: "referrer.lead.created"
| id required | string イベントID (ULID) |
| type required | string Value: "referrer.lead.created" イベント種別: referrer.lead.created(リファラー経由のリンクからリード作成時) |
| sent_at required | string <date-time> 送信日時 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (ReferrerLeadCreatedData) リファラー リード作成イベントのデータ |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "referrer.lead.created",
- "sent_at": "2025-01-15T09:30:00Z",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "referral_id": "01JCK1S3TSZ4KMW6TR84KF6R01",
- "referrer_id": "01JCK1S3TSZ4KMW6TR84KF6RR1",
- "referrer_last_name": "山田",
- "referrer_first_name": "太郎",
- "referrer_email": "yamada@example.com",
- "vendor_program_group_name": null,
- "customer_name": "株式会社テスト",
- "customer_corporate_number": "9876543210123",
- "customer_contact_last_name": "田中",
- "customer_contact_first_name": "太郎",
- "customer_contact_email": "tanaka@example.com",
- "note": "気になる旨の問い合わせあり",
- "source": "referrer_link",
- "referral_lead_id": "01JCK1S3TSZ4KMW6TR84KF6L01",
- "referral_lead_status": "new",
- "referral_lead_status_detail": null,
- "referral_lead_created_by": "山田 太郎",
- "referral_lead_created_by_email": "yamada@example.com"
}
}リファラー(紹介者)が新規登録された際に送信されるイベント。
type: "referrer.created"
| id required | string イベントID (ULID) |
| type required | string Value: "referrer.created" イベント種別: referrer.created(リファラー新規登録時) |
| sent_at required | string <date-time> 送信日時 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (ReferrerCreatedData) リファラー登録イベントのデータ |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "referrer.created",
- "sent_at": "2025-01-15T09:30:00Z",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "referrer_id": "01JCK1S3TSZ4KMW6TR84KF6RR1",
- "last_name": "山田",
- "first_name": "太郎",
- "email": "yamada@example.com",
- "referral_parameter": "r_abc12345",
- "source": "floating"
}
}リファラーがマジックリンク認証を完了した際に送信されるイベント。
type: "referrer.verified"
| id required | string イベントID (ULID) |
| type required | string Value: "referrer.verified" イベント種別: referrer.verified(リファラーがマジックリンク認証を完了した時) |
| sent_at required | string <date-time> 送信日時 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (ReferrerVerifiedData) リファラー認証完了イベントのデータ |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "referrer.verified",
- "sent_at": "2025-01-15T09:30:00Z",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "referrer_id": "01JCK1S3TSZ4KMW6TR84KF6RR1",
- "last_name": "山田",
- "first_name": "太郎",
- "email": "yamada@example.com",
- "referral_parameter": "r_abc12345",
- "email_verified_at": "2025-01-15T09:35:00Z"
}
}リファラーがベンダーによってブロックされた際に送信されるイベント。
type: "referrer.blocked"
| id required | string イベントID (ULID) |
| type required | string Value: "referrer.blocked" イベント種別: referrer.blocked(リファラーがブロックされた時) |
| sent_at required | string <date-time> 送信日時 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (ReferrerStatusData) リファラーステータス更新イベントのデータ(blocked / unblocked 共通) |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "referrer.blocked",
- "sent_at": "2025-01-15T09:30:00Z",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "referrer_id": "01JCK1S3TSZ4KMW6TR84KF6RR1",
- "last_name": "山田",
- "first_name": "太郎",
- "email": "yamada@example.com",
- "status": "blocked"
}
}リファラーのブロックが解除された際に送信されるイベント。
type: "referrer.unblocked"
| id required | string イベントID (ULID) |
| type required | string Value: "referrer.unblocked" イベント種別: referrer.unblocked(リファラーのブロック解除時) |
| sent_at required | string <date-time> 送信日時 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (ReferrerStatusData) リファラーステータス更新イベントのデータ(blocked / unblocked 共通) |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "referrer.unblocked",
- "sent_at": "2025-01-15T09:30:00Z",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "referrer_id": "01JCK1S3TSZ4KMW6TR84KF6RR1",
- "last_name": "山田",
- "first_name": "太郎",
- "email": "yamada@example.com",
- "status": "blocked"
}
}ベンダー (BtoC) でコンバージョンイベントが作成された際に送信されるイベント。
signup / purchase / custom / renewal のいずれも conversion_event.created 単一イベントとして発火し、サブタイプは data.event_type で識別する。
type: "conversion_event.created"
| id required | string イベントID (ULID) |
| type required | string Value: "conversion_event.created" イベント種別: conversion_event.created |
| sent_at required | string <date-time> 送信日時 (JST)。実装は time.Now().In(JST) で生成するため、Z ではなく +09:00 オフセット付きで出力される。 |
required | object (WebhookVendor) ベンダー情報 |
required | object (WebhookVendorProgram) ベンダープログラム情報 |
required | object (ConversionEventCreatedData) コンバージョンイベント作成のデータ。signup / purchase / custom / renewal で共通フィールド構造。 |
{- "id": "01JCK1S3TSZ4KMW6TR84KF6EVT",
- "type": "conversion_event.created",
- "sent_at": "2025-01-15T18:30:00+09:00",
- "vendor": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6001",
- "name": "株式会社サンプルベンダー"
}, - "vendor_program": {
- "id": "01JCK1S3TSZ4KMW6TR84KF6002",
- "name": "サンプルプログラム"
}, - "data": {
- "conversion_event_id": "01JCK1S3TSZ4KMW6TR84KF6CE1",
- "event_type": "signup",
- "referral_id": "01JCK1S3TSZ4KMW6TR84KF6R01",
- "referral_link_click_id": "01JCK1S3TSZ4KMW6TR84KF6CL1",
- "referrer_id": "01JCK1S3TSZ4KMW6TR84KF6RR1",
- "partner_id": "",
- "partner_user_id": "",
- "external_source": "app_signup",
- "external_source_id": "user_12345",
- "customer_contact_email": "customer@example.com",
- "amount": 5000,
- "converted_at": "2025-01-15T18:30:00+09:00"
}
}