Webhookのイベントタイプとフィールド
AdaptyはサブスクリプションイベントへのレスポンスとしてWebhookを送信します。このセクションでは、これらのイベントタイプと各Webhookに含まれるデータについて説明します。
Webhookイベントタイプ
すべてのイベントタイプをWebhookに送信するか、一部のみを選択して送信できます。受信データの内容やビジネスロジックの構築方法については、イベントフローを参照してください。不要なイベントタイプは、Webhook連携の設定時に無効化できます。また、必要に応じてAdaptyのデフォルトイベントIDを独自のIDに置き換えることも可能です。
| イベント名 | 説明 |
|---|---|
| subscription_started | トライアル期間なしで有料サブスクリプションを開始したとき(つまり即座に課金されたとき)にトリガーされます。 |
| subscription_renewed | サブスクリプションが更新され、ユーザーに課金されたときに発生します。このイベントはトライアルあり・なしを問わず、2回目以降の請求から記録されます。 |
| subscription_renewal_cancelled | ユーザーがサブスクリプションの自動更新をオフにしました。有料サブスクリプション期間が終了するまでプレミアム機能へのアクセスは継続されます。 |
| subscription_renewal_reactivated | ユーザーがサブスクリプションの自動更新を再度有効にしたときにトリガーされます。 |
| subscription_expired | キャンセルされたサブスクリプションが完全に終了したときにトリガーされます。たとえば、12月12日にサブスクリプションをキャンセルしても12月31日まで有効な場合、イベントは12月31日に記録されます。 |
| subscription_paused | ユーザーがサブスクリプションの一時停止を有効にしたときに発生します(Android のみ)。 |
| subscription_deferred | サブスクリプションの購入が延期され、ユーザーが支払いを先送りしながらプレミアム機能へのアクセスを維持できる場合にトリガーされます。この機能は Google Play Developer API を通じて利用可能で、無料トライアルや支払いが困難なユーザーへの対応に活用できます。 |
| non_subscription_purchase | 永続アクセスやゲーム内コインなどの消耗型アイテムといった、サブスクリプション以外のすべての購入。 |
| trial_started | ユーザーがトライアルサブスクリプションを開始したときにトリガーされます。 |
| trial_converted | トライアルが終了してユーザーに課金されたとき(初回購入)に発生します。たとえば、1月14日までトライアル期間があるにもかかわらず1月7日に課金された場合、イベントは1月7日に記録されます。 |
| trial_renewal_cancelled | トライアル期間中にユーザーがサブスクリプションの自動更新をオフにしました。トライアルが終了するまでプレミアム機能へのアクセスは継続されますが、課金やサブスクリプションの開始は行われません。 |
| trial_renewal_reactivated | トライアル期間中にユーザーがサブスクリプションの自動更新を再度有効にしたときに発生します。 |
| trial_expired | サブスクリプションに転換されずにトライアルが終了したときにトリガーされます。 |
| entered_grace_period | 支払い試行が失敗し、ユーザーがグレース期間(有効な場合)に入ったときに発生します。この期間中もユーザーはプレミアム機能にアクセスできます。 |
| billing_issue_detected | 課金試行中に請求エラーが発生したとき(例:カード残高不足)にトリガーされます。 |
| subscription_refunded | サブスクリプションが返金されたとき(例:Apple サポートによる返金)にトリガーされます。 |
| non_subscription_purchase_refunded | サブスクリプション以外の購入が返金されたときにトリガーされます。 |
| access_level_updated | ユーザーのアクセスレベルが更新されたときに発生します。 |
subscription_renewal_reactivated は、ユーザーがキャンセルした時点でアクティブだったプロダクト ID(以前のプロダクト ID)を保持します。これは、ユーザーが別のプロダクトを購入して再アクティブ化した場合でも同様です。Apple はキャンセル → 再アクティブ化の一連の流れを通じて同じ original_transaction_id を維持するため、このイベントは元のプロダクトを反映します。新しいプロダクトは、新しいプロダクトの課金が開始される次の subscription_renewed イベントで確認できます。
Google Play では、Adapty が subscription_started イベントをすべての金額フィールドをゼロに設定した状態で送信することがあります。これは、たとえば Google が一つのサブスクリプションを別のものに切り替えた場合や、無料フェーズでサブスクリプションが開始された場合に発生します。このようなイベントを収益としてカウントしないでください。Google がサブスクリプションを切り替える際、新しい購入トークンが発行されるため、Adapty は異なる store_transaction_id で有料トランザクションを報告します。
Webhookイベントの構造
Adaptyは、Integrations -> WebhooksページのEvents namesセクションで選択したイベントのみを送信します。
Webhookイベントは JSON 形式でシリアライズされます。サーバーへの POST リクエストのボディには、以下の構造でラップされたシリアライズ済みイベントが含まれます。すべてのイベントは同じ構造に従いますが、フィールドの内容はイベントタイプ、ストア、および設定内容によって異なります。ユーザー属性は、設定したカスタムユーザー属性であるため、設定した内容が反映されます。アトリビューションデータのフィールドはすべてのイベントタイプで共通ですが、アトリビューションのリストはモバイルアプリで使用しているアトリビューションソースによって異なります。イベントの例を以下に示します:
{
"profile_id": "00000000-0000-0000-0000-000000000000",
"customer_user_id": "UserIdInYourSystem",
"idfv": "00000000-0000-0000-0000-000000000000",
"idfa": "00000000-0000-0000-0000-000000000000",
"advertising_id": "00000000-0000-0000-0000-000000000000",
"profile_install_datetime": "2000-01-31T00:00:00.000000+0000",
"user_agent": "ExampleUserAgent/1.0 (Device; OS Version) Browser/Engine",
"email": "john.doe@company.com",
"event_type": "subscription_started",
"event_datetime": "2000-01-31T00:00:00.000000+0000",
"event_properties": {
"store": "play_store",
"currency": "USD",
"price_usd": 4.99,
"profile_id": "00000000-0000-0000-0000-000000000000",
"cohort_name": "All Users",
"environment": "Production",
"price_local": 4.99,
"original_price_usd": 4.99,
"original_price_local": 4.99,
"discount_amount_usd": 0,
"discount_amount_local": 0,
"base_plan_id": "b1",
"developer_id": "onboarding_placement",
"ab_test_name": "onboarding_ab_test",
"ab_test_revision": 1,
"paywall_name": "UsedPaywall",
"proceeds_usd": 4.2315,
"variation_id": "00000000-0000-0000-0000-000000000000",
"purchase_date": "2024-11-15T10:45:36.181000+0000",
"store_country": "AR",
"event_datetime": "2000-01-31T00:00:00.000000+0000",
"proceeds_local": 4.2415,
"tax_amount_usd": 0,
"transaction_id": "0000000000000000",
"net_revenue_usd": 4.2415,
"profile_country": "AR",
"paywall_revision": "1",
"profile_event_id": "00000000-0000-0000-0000-000000000000",
"tax_amount_local": 0,
"net_revenue_local": 4.2415,
"vendor_product_id": "onemonth_no_trial",
"profile_ip_address": "10.10.1.1",
"consecutive_payments": 1,
"rate_after_first_year": false,
"original_purchase_date": "2000-01-31T00:00:00.000000+0000",
"original_transaction_id": "0000000000000000",
"subscription_expires_at": "2000-01-31T00:00:00.000000+0000",
"profile_has_access_level": true,
"profile_total_revenue_usd": 4.99,
"promotional_offer_id": null,
"store_offer_category": null,
"store_offer_discount_type": null
},
"event_api_version": 1,
"profiles_sharing_access_level": [{"profile_id": "00000000-0000-0000-0000-000000000000", "customer_user_id": "UserIdInYourSystem"}],
"attributions": {
"appsflyer": {
"ad_set": "Keywords 1.12",
"status": "non_organic",
"channel": "Google Ads",
"ad_group": null,
"campaign": "Social media influencers - Rest of the world",
"creative": null,
"created_at": "2000-01-31T00:00:00.000000+0000"
}
},
"user_attributes": {"Favourite_color": "Violet", "Pet_name": "Fluffy"},
"integration_ids": {"firebase_app_instance_id": "val1", "branch_id": "val2", "one_signal_player_id": "val3"},
"play_store_purchase_token": {
"product_id": "product_123",
"purchase_token": "token_abc_123",
"is_subscription": true
}
}
イベントフィールド
イベントパラメーターはすべてのイベントタイプで共通です。
| フィールド | 型 | 説明 |
|---|---|---|
| advertising_id | UUID | 広告ID(Android のみ)。 |
| attributions | JSON | アトリビューションデータ。Webhook 設定で Send Attribution が有効な場合に含まれます。 |
| customer_user_id | String | ユーザーの識別時にアプリコードで設定したアプリ側のユーザー ID(UUID、メールアドレス、その他の ID)。アプリコードでユーザーを識別していない場合、または該当ユーザーが匿名(未ログイン)の場合は null になります。 |
| String | Adapty SDK の updateProfile メソッド、またはサーバーサイド API でプロファイルを作成・更新する際に設定したユーザーのメールアドレス。email の値を SDK や API メソッドに渡していない場合は null になります。 | |
| event_api_version | Integer | Adapty API のバージョン(現在: 1)。 |
| event_datetime | ISO 8601 | イベントのビジネス上の有効時刻。購入イベントなら購入日時、有効期限イベントなら有効期限など、Adapty がイベントを受信・送信した時刻ではありません。ISO 8601 形式(例: 2020-07-10T15:00:00.000000+0000)。順序については下記の注記を参照してください。 |
| event_properties | JSON | イベントプロパティ。 |
| event_type | String | Adapty 形式のイベント名。全リストはWebhook イベントタイプを参照してください。 |
| idfa | UUID | 広告識別子(Apple のみ)。Adapty ダッシュボードのプロファイルに表示される IDFA。トラッキング制限、キッズモード、プライバシー設定により利用できない場合は null になる場合があります。 |
| idfv | UUID | ベンダー識別子(IDFV)。開発者ごとに一意の値。Adapty ダッシュボードのプロファイルに表示される IDFV。 |
| integration_ids | JSON | Adapty SDK の setIntegrationIdentifier メソッド、またはサーバーサイド API でプロファイルを作成・更新する際に設定したユーザーのインテグレーション ID。利用できない場合またはインテグレーションが無効な場合は null。 |
| play_store_purchase_token | JSON | Play Store 購入トークン。Webhook 設定で Send Play Store purchase token が有効な場合に含まれます。 |
| profile_id | UUID | Adapty が各プロファイルに対して自動生成するプロファイル ID。ユーザーを識別しない場合やログイン前に購入を許可している場合、1 つの Apple/Google ID が異なるプロファイル ID と紐付く可能性があります。詳しくはAdapty の親プロファイルと継承プロファイルの仕組みを参照してください。 |
| profile_install_datetime | ISO 8601 | ISO 8601 形式のインストール日時(例: 2020-07-10T15:00:00.000000+0000)。 |
| profiles_sharing_access_level | JSON | 現在のユーザープロファイルを除く、アクセスレベルを共有しているユーザーの一覧。アプリでアクセスレベルの共有が有効になっている場合、同じ Apple/Google ID で使用されている他のプロファイルが含まれます。 形式:
|
| user_agent | String | デバイスのブラウザユーザーエージェント。 |
| user_attributes | JSON | アプリ固有の情報でユーザープロファイルを拡充するために設定できるカスタムデータ。ユーザーの設定(テーマ、言語など)や行動フラグ(オンボーディング完了、機能の使用状況)のトラッキングに主に使用します。 キーが文字列、値が文字列または数値のキーバリューペアで表されます(例: {"Favourite_color": "Violet", "Pet_name": "Fluffy"})。カスタム属性は、Adapty ダッシュボードで個別のプロファイルに対して手動で設定するか、Adapty SDK の updateProfile メソッドを使ってプログラムから設定するか、サーバーサイド API でプロファイルを作成・更新する際に設定できます。Webhook 設定で Send User Attributes が有効な場合に含まれます。 モバイルアプリコードではカスタム属性値を float または文字列として設定できますが、サーバーサイド API や過去データのインポートで受け取った属性は異なる形式で届く場合があります。その場合、boolean と integer の値は float に変換されます。 |
event_datetime はサブスクリプションのライフサイクルでイベントが発生した日時を表しており、Adapty が処理または配信した日時ではありません。そのため、複数のイベントが同じ event_datetime を持つ場合や、時系列順とは異なる順序で届く場合があります。たとえば、subscription_expired イベントの event_datetime が、それより前に配信された subscription_renewal_cancelled イベントの event_datetime より早い場合があります。イベントの順序付けに event_datetime を使用しないでください。代わりに、受信時刻を基準にイベントを並べ替え、profile_event_id またはトランザクション ID を使って重複を排除してください。
アトリビューション
アトリビューションデータを送信するには、Integrations -> Webhooks ページで Send Attribution オプションを有効にしてください。アトリビューションデータの送信を有効にしており、アトリビューション連携を設定済みの場合、以下のデータがすべてのソースのイベントに付与されて送信されます。同じアトリビューションデータはすべてのイベントタイプに送信されます。
{
"attributions": {
"appsflyer": {
"ad_set": "sample_ad_set_123",
"status": "non_organic",
"channel": "sample_channel",
"ad_group": "sample_ad_group_456",
"campaign": "sample_ios_campaign",
"creative": "sample_creative_789",
"created_at": "2000-01-31T00:00:00.000000+0000",
"network_user_id": "0000000000000-0000000"
}
}
}
| フィールド名 | フィールド型 | 説明 |
|---|---|---|
| ad_set | String | アトリビューションの広告セット。 |
| status | String | organic、non_organic,、または unknown のいずれか。 |
| channel | String | マーケティングチャネル名。 |
| ad_group | String | アトリビューションの広告グループ。 |
| campaign | String | マーケティングキャンペーン名。 |
| creative | String | アトリビューションのクリエイティブキーワード。 |
| created_at | ISO 8601 date | アトリビューションレコードの作成日時。 |
| network_user_id | String | アトリビューションソースがユーザーに割り当てたID。 |
インテグレーション ID
現在、イベントで使用されているインテグレーション ID は以下のとおりです:
adjust_device_idairbridge_device_idamplitude_device_idamplitude_user_idappmetrica_device_idappmetrica_profile_idappsflyer_idbranch_idfacebook_anonymous_idfirebase_app_instance_idmixpanel_user_idpushwoosh_hwidone_signal_player_idone_signal_subscription_idtenjin_analytics_installation_idposthog_distinct_user_id
Play Store の購入トークン
このフィールドには、必要に応じて購入を再検証するために必要なすべてのデータが含まれています。Webhookインテグレーションの設定で Send Play Store purchase token オプションが有効になっている場合にのみ送信されます。
| Field | Type | Description |
|---|---|---|
| product_id | String | Play Store で購入したプロダクトの一意識別子(SKU)。 |
| purchase_token | String | この購入トランザクションを一意に識別するために Google Play が生成するトークン。 |
| is_subscription | Boolean | 購入したプロダクトがサブスクリプション(true)か買い切り購入(false)かを示します。 |
イベントプロパティ
イベントプロパティは、イベントの種類によって、また同じ種類のイベント間でも異なる場合があります。たとえば、App Store から発生したイベントには、base_plan_id のような Android 固有のプロパティは含まれません。
アクセスレベル更新イベントには固有のプロパティがあるため、専用セクションを設けています。同様に、追加の税・収益イベントプロパティも特定のイベントタイプのみに該当するため、別セクションに分けています。
ほとんどのイベントタイプに共通
ほとんどのイベントタイプのイベントプロパティは共通です(Access Level Updated イベントは除き、そちらは別セクションで説明しています)。以下の表は、各プロパティと、それが特定のイベントに属するかどうかをまとめたものです。
Adaptyは、currencylayer.comの為替レート(8時間ごとに更新)を使用して他の通貨をUSDに換算します。レートは取引時点で固定されるため、その後の変動は換算結果に影響しません。
| フィールド | 型 | 説明 |
|---|---|---|
| ab_test_name | String | トランザクションが発生した Adapty A/B テストの名前。 |
| ab_test_revision | Integer | トランザクションが発生した A/B テストのリビジョン。 |
| base_plan_id | String | Google Play ストアの ベースプラン ID、または Stripe の 価格 ID。 |
| cancellation_reason | String | キャンセル理由として考えられる値: 以下のイベントタイプに含まれます: subscription_cancelled、subscription_refunded、trial_cancelled。 |
| cohort_name | String | ユーザーに表示されたペイウォールを決定したオーディエンスの名前。 |
| consecutive_payments | Integer | ユーザーが中断なくサブスクリプションを継続している期間数。現在の期間を含みます。 |
| currency | String | ローカル通貨。 |
| developer_id | String | トランザクションが発生したプレースメントの ID。 |
| discount_amount_local | Float | トランザクションに適用された割引額: Apple/Google の手数料を差し引く前の、標準価格から実際に請求された金額を引いた値(ローカル通貨)。通常価格での購入の場合は 0。無料トライアルの場合は何も請求されないため、標準価格全額(original_price_local)と同じ値になります。オファーが適用されたが標準価格が不明な場合は null(original_price_local を参照)。App Store の pay-up-front オファーでは常に null: 一括前払い請求が複数の請求期間をカバーするため、期間ごとの標準価格と比較できません。 |
| discount_amount_usd | Float | discount_amount_local の USD 換算値。 |
| environment | String | 指定可能な値は Sandbox または Production。 |
| event_datetime | ISO 8601 date | イベントの日時。イベントのルートレベルにある値と同じです。 |
| original_price_local | Float | Apple/Google の手数料を差し引く前のプロダクトの標準(非割引)価格(ローカル通貨)。サブスクリプションの場合は更新価格です。通常価格での購入では price_local と同じ値になります。買い切り購入の場合もストアが別途標準価格を報告しないため常に price_local と同じ値です。ストアが信頼できる標準価格を報告しない割引購入(例: 自動更新がオフ、更新にオファーが適用されている、またはプロダクト変更が保留中)の場合は null。 |
| original_price_usd | Float | original_price_local の USD 換算値。 |
| original_purchase_date | ISO 8601 date | 定期サブスクリプションの場合、最初のトランザクション(オリジナルトランザクション ID と呼ばれる ID が更新チェーンを結びつけます)がオリジナル購入であり、以降のトランザクションはその延長です。オリジナル購入日はこの最初のトランザクションの日時です。 |
| original_transaction_id | String | 定期サブスクリプションの場合、更新チェーンを結びつけるオリジナルトランザクション ID。オリジナルトランザクションはチェーンの最初のものであり、以降のトランザクションはその延長です。 延長がない場合、 |
| paywall_name | String | トランザクションが発生したペイウォールの名前。 |
| paywall_revision | String | トランザクションが発生したペイウォールのリビジョン。デフォルト値は 1 です。 |
| price_local | Float | Apple/Google の手数料を差し引く前のトランザクションの請求金額(ローカル通貨)。無料トライアルは何も請求されないため null。 |
| price_usd | Float | Apple/Google の手数料を差し引く前のトランザクションの請求金額(USD)。無料トライアルは何も請求されないため null。 |
| profile_country | String | プロファイルの IP アドレスに基づいて Adapty が判定します。 |
| profile_event_id | UUID | 重複排除に使用できる一意のイベント ID。 |
| profile_has_access_level | Boolean | プロファイルにアクティブなアクセスレベルがあるかどうかを示すブール値。 |
| profile_id | UUID | Adapty が生成したプロファイル ID。イベントのルートレベルにある値と同じです。 |
| profile_ip_address | String | プロファイルの IP アドレス(IPv4 または IPv6。利用可能な場合は IPv4 が優先されます)。アプリ設定で Collect users’ IP addresses が無効の場合は null。 |
| profile_total_revenue_usd | Float | 返金額を差し引いたプロファイルの累計収益(USD)。 |
| promotional_offer_id | String | 使用されたプロモーションオファーの Adapty ID。ダッシュボードでオファーを作成する際に設定する ID です。 |
| purchase_date | ISO 8601 date | プロダクト購入の日時。 |
| rate_after_first_year | Boolean | 1 年間継続して更新されたサブスクリプションが手数料の引き下げ(通常 15%)の対象かどうかを示すブール値。手数料率はプログラムの適格性と国によって異なります。詳細はストア手数料と税金を参照してください。 |
| store | String | プロダクトが購入されたストア。標準値: app_store、play_store、stripe、paddle。 サーバーサイド API を使用してカスタムストアトランザクションを設定した場合、store パラメータの値が使用されます。 |
| store_country | String | アプリストアから送信された国情報。 |
| store_offer_category | String | 適用されたオファーカテゴリ。指定可能な値は introductory、promotional、winback。 |
| store_offer_discount_type | String | 適用されたオファータイプ。指定可能な値は free_trial、pay_as_you_go、pay_up_front。 |
| store_offer_number_of_periods | Integer | オファーが割引する基本請求期間の数(1 以上)。オファーが適用される場合のみ含まれます。App Store の pay-up-front オファーおよびストアがオファー期間を報告しない場合は null。 |
| subscription_expires_at | ISO 8601 date | サブスクリプションの有効期限。 返金、請求エラー、グレース期間、アクセスレベルイベントでは、キャンセル日またはグレース期間の終了日(該当する場合)を保持します。購入および更新イベントでは、通常のサブスクリプション有効期限を保持します。 |
| transaction_id | String | トランザクションの一意の識別子。 |
| trial_duration | String | トライアル期間の日数。” days” 形式で送信されます(例: “7 days”)。トライアル関連のイベントタイプ(trial_started、trial_converted、trial_cancelled)にのみ含まれます。 |
| variation_id | UUID | 購入が行われたペイウォールの一意の ID。 |
| vendor_product_id | String | Apple App Store、Google Play ストア、または Stripe のプロダクト ID。 実際のストアトランザクションなしでアクセスが付与された場合、
|
税金と収益に関する追加イベントプロパティ
以下の税金と収益に関するイベントプロパティは、特定のイベントタイプにのみ適用される追加フィールドです。つまり、ここに列挙されているイベントタイプには、ほとんどのイベントタイプ共通のイベントプロパティに加えて、以下の追加フィールドが含まれます。
税金と収益に関するイベントプロパティを持つイベントタイプ:
subscription_renewedsubscription_initial_purchase(subscription_startedとも呼ばれる — 同じイベント)subscription_refundednon_subscription_purchase
| フィールド | 型 | 説明 |
|---|---|---|
| net_revenue_local | Float | ローカル通貨でのネット収益(Apple/Google の手数料および税金控除後の収入)。 |
| net_revenue_usd | Float | USD でのネット収益(Apple/Google の手数料および税金控除後の収入)。 |
| proceeds_local | Float | ローカル通貨での Apple/Google 手数料控除後のプロダクト価格。 |
| proceeds_usd | Float | Apple/Google 手数料控除後のプロダクト価格(USD)。 |
| tax_amount_local | Float | ローカル通貨での控除税額。 |
| tax_amount_usd | Float | USD での控除税額。 |
non_subscription_purchase のペイロード例
non_subscription_purchase はサブスクリプションイベントと同じ構造に従いますが、買い切り購入または消耗型アイテムの購入を反映します。サブスクリプション専用フィールドは適用されません。cancellation_reason、will_renew、is_in_grace_period、is_refund、is_lifetime、trial_duration は存在しません。subscription_expires_at は含まれますが null になります。税金および収益フィールド(net_revenue_*、proceeds_*、tax_amount_*)は含まれます。
ペイロード例(クリックして展開)
{
"profile_id": "00000000-0000-0000-0000-000000000000",
"customer_user_id": "UserIdInYourSystem",
"event_type": "non_subscription_purchase",
"event_datetime": "2000-01-31T00:00:00.000000+0000",
"event_properties": {
"store": "app_store",
"currency": "USD",
"price_usd": 4.99,
"price_local": 4.99,
"original_price_usd": 4.99,
"original_price_local": 4.99,
"discount_amount_usd": 0,
"discount_amount_local": 0,
"proceeds_usd": 4.2415,
"proceeds_local": 4.2415,
"net_revenue_usd": 4.2415,
"net_revenue_local": 4.2415,
"tax_amount_usd": 0,
"tax_amount_local": 0,
"profile_id": "00000000-0000-0000-0000-000000000000",
"environment": "Production",
"vendor_product_id": "100coins",
"transaction_id": "0000000000000000",
"original_transaction_id": "0000000000000000",
"purchase_date": "2024-11-15T10:45:36.181000+0000",
"original_purchase_date": "2024-11-15T10:45:36.181000+0000",
"subscription_expires_at": null,
"store_country": "US",
"profile_country": "US",
"profile_ip_address": "10.10.1.1",
"profile_has_access_level": false,
"profile_total_revenue_usd": 4.99,
"consecutive_payments": 1,
"rate_after_first_year": false,
"profile_event_id": "00000000-0000-0000-0000-000000000000"
},
"event_api_version": 1
} アクセスレベル更新イベントについて
Access Level Updated イベントは、Webhook インテグレーションが有効であり、このイベントタイプが有効になっている場合にのみ生成される特定の Webhook イベントです。有効になっている場合、設定済みの Webhook に送信され、Event Feed に表示されます。有効になっていない場合、イベントは作成されません。
アクセスレベルの共有を有効にしている場合、access level updated イベントはアクセスレベルを共有しているすべてのプロファイルに対して送信されます。
このイベントを使用して、データベース内のユーザーのアクセスレベルを更新し、バックエンドでプレミアム機能を付与または取り消し、デバイスやプラットフォーム間でアクセスを同期させましょう。
| プロパティ | 型 | 説明 |
|---|---|---|
| ab_test_name | String | トランザクションが発生した A/B テストの名前。 |
| access_level_id | String | アクセスレベルの ID。 |
| activated_at | ISO 8601 date | アクセスが最後にアクティブ化された日時。 |
| active_introductory_offer_type | String | 適用された初回オファーの種類。指定可能な値は free_trial、pay_as_you_go、pay_up_front。 |
| active_promotional_offer_id | String | Adapty ダッシュボードのプロダクトセクションに表示されているプロモーションオファーの ID。 |
| active_promotional_offer_type | String | 適用されたプロモーションオファーの種類。指定可能な値は free_trial、pay_as_you_go、pay_up_front。 |
| base_plan_id | String | Google Play ストアの Base plan ID、または Stripe の price ID。 |
| billing_issue_detected_at | ISO 8601 date | 請求問題が発生した日時。 |
| cancellation_reason | String | キャンセル理由として考えられる値: voluntarily_cancelled、billing_error、price_increase、product_was_not_available、refund、cancelled_by_developer、new_subscription_replace、upgraded、unknown、adapty_revoked。 |
| cohort_name | String | プロファイルが属するオーディエンスの名前。 |
| currency | String | ローカル通貨(デフォルトは USD)。 |
| developer_id | String | トランザクションが発生したプレースメントの ID。 |
| environment | String | 指定可能な値は Sandbox または Production。 |
| event_datetime | ISO 8601 date | イベントの日時。 |
| expires_at | ISO 8601 date | アクセスが期限切れになる日時。Adapty はこのフィールドから グレース期間中はグレース期間の終了日時、返金またはキャンセル後はキャンセル日時が格納されます。グレース期間終了用の別フィールドはありません。 |
| is_active | Boolean | アクセスレベルがアクティブかどうかを示す Boolean 値。イベント生成時に expires_at(starts_at および is_lifetime と組み合わせて)から計算されます。 |
| is_in_grace_period | Boolean | プロファイルがグレース期間中かどうかを示す Boolean 値。true の間、expires_at にはグレース期間の終了日時が格納されます。 |
| is_lifetime | Boolean | アクセスレベルが永続アクセスかどうかを示す Boolean 値。 |
| is_refund | Boolean | トランザクションが返金かどうかを示す Boolean 値。 |
| original_purchase_date | ISO 8601 date | 継続サブスクリプションにおける初回購入とは、チェーンの最初のトランザクションであり、その ID(original transaction ID)は更新チェーンをリンクします。後続のトランザクションはその延長です。初回購入日はこの最初のトランザクションの日時です。 |
| original_transaction_id | String | 継続サブスクリプションにおける更新チェーンをリンクする元のトランザクション ID。元のトランザクションがチェーンの最初であり、後続のトランザクションはその延長です。 延長がない場合、 |
| paywall_name | String | トランザクションが発生したペイウォールの名前。 |
| paywall_revision | String | トランザクションが発生したペイウォールのリビジョン。デフォルト値は 1。 |
| profile_country | String | プロファイルの IP アドレスをもとに Adapty が判定した国。 |
| profile_event_id | UUID | 重複排除に使用できる一意のイベント ID。 |
| profile_has_access_level | Boolean | プロファイルがアクティブなアクセスレベルを持つかどうかを示す Boolean 値。 |
| profile_id | UUID | Adapty 内部のユーザープロファイル ID。 |
| profile_ip_address | String | プロファイルの IP アドレス(IPv4 または IPv6。利用可能な場合は IPv4 が優先)。アプリ設定で Collect users’ IP addresses が無効の場合は null。 |
| profile_total_revenue_usd | Float | プロファイルの総収益(返金を含む)。 |
| purchase_date | ISO 8601 date | プロダクト購入の日時。 |
| renewed_at | ISO 8601 date | 現在の有料アクセス期間が最後に開始された日時。最初の更新まで、activated_at と同じ値になります。 |
| starts_at | ISO 8601 date | アクセスレベルが開始される日時。 |
| store | String | プロダクトが購入されたストア。標準値: app_store、play_store、stripe、paddle。 サーバーサイド API を使用してカスタムストアトランザクションを設定した場合、store パラメーターの値が使用されます。 |
| store_country | String | アプリストアから Adapty に送信された国。 |
| subscription_expires_at | ISO 8601 date | サブスクリプションの有効期限。このイベントでは expires_at と同じ値(グレース期間中はグレース期間の終了日時、返金またはキャンセル後はキャンセル日時)が格納されます。 |
| transaction_id | String | トランザクションの一意識別子。 |
| trial_duration | String | トライアル期間の日数(例:「7 days」)。 |
| variation_id | UUID | バリアントの識別子。購入をこのペイウォールに紐付けるために使用されます。 |
| vendor_product_id | String | ストア(Apple/Google/Stripe)内のプロダクト ID。 実際のストアトランザクションなしでアクセスが付与された場合、
|
| will_renew | Boolean | 有料アクセスレベルが更新されるかどうかを示します。 |
この構造は、私たちまたは連携するサードパーティによって新しいデータが追加されることで、今後拡張される可能性があります。この構造を処理するコードは、構造全体ではなく特定のフィールドに依存するよう、十分に堅牢に実装してください。