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 イベントで確認できます。
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": "[email protected]",
"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,
"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 イベントを除く。このイベントについては専用のセクションで説明します)。以下は、各プロパティと、それが特定のイベントに属するかどうかを示す一覧表です。
| フィールド | 型 | 説明 |
|---|---|---|
| ab_test_name | String | トランザクションが発生した Adapty A/B テスト の名前。 |
| ab_test_revision | Integer | トランザクションが発生した A/B テストのリビジョン。 |
| base_plan_id | String | Google Play ストアの ベースプラン ID、または Stripe の price ID。 |
| cancellation_reason | String | キャンセル理由の候補: 以下のイベントタイプに含まれます: subscription_cancelled、subscription_refunded、trial_cancelled。 |
| cohort_name | String | ユーザーに表示するペイウォールを決定した オーディエンス の名前。 |
| consecutive_payments | Integer | ユーザーが中断なくサブスクリプションを継続している期間数。現在の期間を含む。 |
| currency | String | 現地通貨。 |
| developer_id | String | トランザクションが発生した プレースメント の ID。 |
| environment | String | 取り得る値は Sandbox または Production。 |
| event_datetime | ISO 8601 date | イベントの日時。イベントのルートレベルと同じ値。 |
| 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 の手数料控除前のプロダクト価格(現地通貨)。 |
| price_usd | Float | Apple/Google の手数料控除前のプロダクト価格(USD)。 |
| 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 | プロファイルの累計収益(返金分を差し引いた値)。 |
| promotional_offer_id | String | 使用された プロモーションオファー の Adapty ID。ダッシュボードでオファーを作成する際に設定します。 |
| purchase_date | ISO 8601 date | プロダクト購入の日時。 |
| rate_after_first_year | Boolean | 1 年間継続して更新されたサブスクリプションが、手数料率の引き下げ(通常 15%)の対象となるかどうかを示す Boolean 値。手数料率はプログラムの適用条件や国によって異なります。詳細は ストア手数料と税金 を参照してください。 |
| 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。 |
| 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,
"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 ダッシュボードの Product セクションに記載されたプロモーションオファーの ID。 |
| active_promotional_offer_type | String | 適用されたプロモーションオファーのタイプ。指定可能な値は free_trial、pay_as_you_go、pay_up_front。 |
| base_plan_id | String | Google Play ストアのベースプラン ID、または Stripe の価格 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 | アクセスが失効する日時。 |
| is_active | Boolean | アクセスレベルがアクティブかどうかを示す Boolean 値。 |
| is_in_grace_period | Boolean | プロファイルがグレース期間中かどうかを示す Boolean 値。 |
| is_lifetime | Boolean | アクセスレベルが永続アクセスかどうかを示す Boolean 値。 |
| is_refund | Boolean | トランザクションが返金かどうかを示す Boolean 値。 |
| original_purchase_date | ISO 8601 date | 自動更新サブスクリプションの場合、最初のトランザクションが「オリジナル購入」となり、その ID(オリジナルトランザクション 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 | アクセスが更新される日時。 |
| 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 | サブスクリプションの有効期限。 |
| transaction_id | String | トランザクションの一意の識別子。 |
| trial_duration | String | トライアル期間の日数(例:「7 days」)。 |
| variation_id | UUID | バリアントの識別子。購入をこのペイウォールに紐付けるために使用される。 |
| vendor_product_id | String | ストア(Apple / Google / Stripe)内のプロダクト ID。 実際のストアトランザクションなしでアクセスが付与された場合、
|
| will_renew | Boolean | 有料アクセスレベルが更新されるかどうかを示す値。 |
この構造は、私たちまたは連携するサードパーティによって新しいデータが追加されることで、今後拡張される可能性があります。この構造を処理するコードは、構造全体ではなく特定のフィールドに依存するよう、十分に堅牢に実装してください。