Google Cloud Storage
Google Cloud Storage 連携を有効にすると、サブスクリプションイベントとペイウォール訪問データを Google Cloud Storage バケットに一元的かつ安全に保存できます。
毎日UTC午前4時に、Adaptは前日のデータを含む.csvファイルをあなたのバケットにアップロードします。イベントデータ、ペイウォール訪問データ、または両方を受信するかどうかを選択できます。また、任意の期間のデータを手動でエクスポートすることもできます。
インテグレーションを設定するには、Google CloudコンソールでBucketアクセスキーを生成し、それをAdaptyの設定に追加します。
アップロードスケジュールと所要時間
AdapyはUTC 04:00に24時間ごとにGoogle Cloud Storageへデータをアップロードします。
ファイルには前の暦日(UTC)に作成されたイベントのデータが含まれます。3月8日にアップロードされるファイルには、3月7日の00:00:00〜23:59:59 UTCに作成されたすべてのイベントが含まれます。
キュー内のファイルの総数やご自身がリクエストしたデータ量によっては、処理に数時間かかる場合があります。初回アップロードに過去のデータが含まれる場合、以降の毎日のアップロードより時間がかかります。
Google Cloud Storage連携の設定
書き込みアクセス権を持つ有効なGoogle Cloudサービスアカウントキーが必要です。生成方法については、認証情報の作成セクションの手順に従ってください。
イベントとペイウォール訪問に対して、それぞれ異なるバケットと認証情報を使用できます。ただし、いずれかの認証情報が無効な場合、両方のアップロードが失敗します。
Integrations -> Google Cloud Storage に移動し、必要なタブ(Events または Paywall visits)を開きます。連携を有効にします。
Google Cloudサービスアカウントキーを含むファイルをアップロードします。対象のバケットとフォルダーを指定します。変更を保存します。
イベントデータのオプション設定
レポートに含めるイベントを指定したり、イベントにカスタム名を設定したりできます。利用可能なイベントの全一覧はイベントの記事をご覧ください。
| 名前 | デフォルト | 説明 |
|---|---|---|
| Exclude historical events | true | AdaptySDKをアプリに統合する前に発生したイベントの情報を除外します。 アナリティクスプラットフォームがAdapty導入前にサブスクリプションイベントを受け取っていた場合、このオプションによって重複イベントの受信を防げます。 実際の例ユーザーが1月10日に月次サブスクリプションを購入しました。3月1日のアプリアップデートが初めてAdapty SDKを含むものでした。 |
| Include events without profile | false | ユーザープロファイルに紐付いていない、または特定ユーザーにすぐに関連付けられないトランザクションを含めます。Adapty SDK導入前の購入や、サーバー通知経由で受け取ったトランザクションが該当します。 |
| Send user attributes | false | カスタムユーザー属性(ユーザーデータやアプリ使用データなど)を含めます。OneSignalのプランが10個以上のタグをサポートしている場合にこのオプションを選択してください。タグ上限を超えるとエラーが発生する場合があります。 |
Google Cloud Storageの認証情報の作成
このガイドでは、Google Cloud Platform コンソールで必要な認証情報を作成する方法を説明します。
Adaptyが指定のバケットに生データレポートをアップロードするには、サービスアカウントのキーと、対応するバケットへの書き込みアクセス権が必要です。サービスアカウントのキーを提供してバケットへの書き込みアクセスを付与することで、AdaptyがプラットフォームからストレージEnvironmentへ生データレポートを安全かつ効率的に転送できるようになります。
サービスアカウントのHMACキー認証のみをサポートしています。Google Cloud Storageへの適切なアクセスを有効にするため、サービスアカウントのHMACキーに「Storage Object Viewer」「Storage Legacy Bucket Writer」「Storage Object Creator」のロールが追加されていることを確認してください。
- まず、Google CloudアカウントのIAMセクション(IAM)に移動し、関連するプロジェクトを選択するか、新しいプロジェクトを作成します。
-
次に、「+ CREATE SERVICE ACCOUNT」ボタンをクリックしてAdapty用の新しいサービスアカウントを作成します。
-
最初のステップのフィールドに入力します(アクセス権は後の段階で付与されます)。このページの詳細については、こちらのドキュメントをご覧ください。
-
プライベートJSONキーを作成してダウンロードするには、KEYSセクションに移動し、「ADD KEY」ボタンをクリックします。
-
DETAILSセクションで、作成したサービスアカウントに紐付くEmail値を見つけてコピーします。この情報は、アカウントを認証してバケットへの書き込みを許可するための後続手順で必要になります。
-
次に、Google Cloud StorageのBucketsページに移動し、既存のバケットを選択するか、AdapyのイベントまたはVisitsデータレポートを保存するための新しいバケットを作成します。次にPERMISSIONSセクションに移動し、GRANT ACCESSオプションを選択します。
-
PERMISSIONSセクションで、手順5で取得したサービスアカウントのEmailを入力し、Storage Object Creatorロールを選択します。最後にSAVEをクリックして変更を適用します。
バケット名は後で使用するので控えておいてください。
手動データエクスポート
Google Cloud Storageへの自動イベントデータエクスポートに加えて、Adaptyでは手動ファイルエクスポート機能も提供しています。この機能を使用すると、イベントデータの特定の時間範囲を選択して、GCSバケットに手動でエクスポートできます。エクスポートするデータとタイミングをより細かく制御できます。
指定した日付範囲は、日付A 00:00:00 UTCから日付B 23:59:59 UTCまでに作成されたイベントのエクスポートに使用されます。
データ構造
Adaptyはデータを表形式でエクスポートするために.csvファイルを使用します。
イベントの内容は、Adaptyまたは連携している3rd partyが新しいデータを追加することで増えることがあります。処理するコードは特定のフィールドに依存させ、構造全体に依存しないよう十分に堅牢にしてください。
イベント
レポートに含まれるイベントの一覧は変更できます。
Adaptyは、currencylayer.comの為替レート(8時間ごとに更新)を使用して他の通貨をUSDに換算します。レートは取引時点で固定されるため、その後の変動は換算結果に影響しません。
| カラム | 説明 |
|---|---|
| profile_id | Adapty ユーザー ID。 |
| event_type | 小文字のイベント名。イベントタイプについては Events セクションを参照してください。 |
| event_datetime | ISO 8601 形式の日時。 |
| transaction_id | 購入や更新などのトランザクションの一意識別子。 |
| original_transaction_id | 元の購入のトランザクション識別子。 |
| subscription_expires_at | サブスクリプションの有効期限。通常は将来の日時。 |
| environment | Sandbox または Production。 |
| revenue_usd | USD での収益。空の場合あり。 |
| proceeds_usd | USD での手取り収益。空の場合あり。 |
| net_revenue_usd | USD での純収益(税引き後の収入)。空の場合あり。 |
| tax_amount_usd | USD での税金控除額。空の場合あり。 |
| revenue_local | ローカル通貨での収益。空の場合あり。 |
| proceeds_local | ローカル通貨での手取り収益。空の場合あり。 |
| net_revenue_local | ローカル通貨での純収益(税引き後の収入)。空の場合あり。 |
| tax_amount_local | ローカル通貨での税金控除額。空の場合あり。 |
| customer_user_id | 開発者のユーザー ID。ユーザーの UUID、メールアドレス、その他任意の ID を設定できます。設定していない場合は Null。 |
| store | app_store または play_store。 |
| product_id | Apple App Store、Google Play Store、または Stripe でのプロダクト ID。12か月コミットメントプランの場合、値は <product_id>:monthly になります。 |
| base_plan_id | Google Play Store でのベースプラン ID、または Stripe での価格 ID。 |
| developer_id | トランザクションが発生したペイウォールの開発者(SDK)ID。 |
| ab_test_name | トランザクションが発生した A/B テストの名前。クロスプレースメント A/B テストの場合、1つのプレースメント上のテスト名(<テスト名> child-N)。クロスプレースメントテストをプレースメント横断で集計するには ab_test_id を使用してください。 |
| ab_test_revision | トランザクションが発生した A/B テストのリビジョン。 |
| paywall_name | トランザクションが発生したペイウォールの名前。フローの場合、ペイウォール画面の ID(scr_...)。フロー名は flow_name に含まれます。 |
| paywall_revision | トランザクションが発生したペイウォールのリビジョン。 |
| profile_country | Adapty が IP アドレスをもとに判定したプロファイルの国。 |
| install_date | インストールが発生した ISO 8601 形式の日時。 |
| idfv | iOS デバイスの identifierForVendor |
| idfa | iOS デバイスの advertisingIdentifier |
| advertising_id | Android OS が割り当てる一意のコードで、広告主がユーザーのデバイスを識別するために使用する広告 ID |
| ip_address | デバイスの IP アドレス(IPv4 または IPv6。IPv4 が利用可能な場合は IPv4 が優先されます)。デバイスの IP が変わるたびに更新されます |
| cancellation_reason | ユーザーがサブスクリプションをキャンセルした理由。 設定可能な値: iOS & Android — voluntarily_cancelled、billing_error、refund iOS のみ — price_increase、product_was_not_available、unknown、upgraded Android のみ — new_subscription_replace、cancelled_by_developer |
| android_app_set_id | AppSetId — デバイスごと・開発者アカウントごとに割り当てられる、非収益化広告用途向けのユーザーリセット可能な一意 ID。 |
| android_id | Android 8.0(API レベル 26)以降では、アプリの署名キー・ユーザー・デバイスの組み合わせごとに一意な 64 ビットの数値(16進数文字列)。詳細は Android 開発者ドキュメントを参照してください。 |
| device | エンドユーザーに表示されるデバイスのモデル名。 |
| currency | トランザクションの 3 文字通貨コード(ISO-4217)。 |
| store_country | Apple/Google ストアが判定したプロファイルの国。 |
| attribution_source | アトリビューションソース。 |
| attribution_network_user_id | アトリビューションソースがユーザーに割り当てた ID。 |
| attribution_status | organic、non_organic、または unknown。 |
| attribution_channel | マーケティングチャネル名。 |
| attribution_campaign | マーケティングキャンペーン名。 |
| attribution_ad_group | アトリビューションの広告グループ。 |
| attribution_ad_set | アトリビューションの広告セット。 |
| attribution_creative | アトリビューションのクリエイティブキーワード。 |
| attributes | カスタムユーザー属性の JSON。モバイルアプリから送信するよう設定したカスタム属性が含まれます。送信するには、Integrations -> Webhooks ページで Send User Attributes オプションを有効にしてください。 |
| integration_ids | プロファイルに紐づくすべてのインテグレーション ID。ディクショナリ形式。例:{‘mixpanel_user_id’: ‘mixpanelUserId-test’, ‘facebook_anonymous_id’: ‘facebookAnonymousId-test’} |
| variation_id | トランザクションが発生したペイウォールの一意 ID。フローの場合、A/B テストのバリアント ID ではなく、フロー内のペイウォール画面の ID。 |
| flow_id | トランザクションが発生したフローの ID。 |
| flow_name | トランザクションが発生したフローの名前。 |
| flow_variation_id | このプレースメントにおけるフローバリアントの ID。SDK の flow.variationId と同じ値。 |
| ab_test_id | トランザクションが発生した A/B テストの ID。クロスプレースメント A/B テストの場合、すべてのプレースメントで同じ値。 |
| ab_test_variant_id | トランザクションが発生した A/B テストのバリアント ID。テストバリアント別にトランザクションを分類する際に使用します。 |
| ab_test_variant_name | A/B テストのバリアント名。 |
| ab_test_parent_name | クロスプレースメント A/B テストの名前。その他の A/B テストでは空。 |
フローと A/B テストの列はファイルの最終列です。Adapty はエクスポート時にこれらを計算するため、A/B テスト、バリアント、またはフローの名前をエクスポートとウェブフックイベントの間に変更した場合、エクスポート上の名前と以前のウェブフックイベントの名前が異なることがあります。各 A/B テストタイプにおける各列の内容については、フローと A/B テストフィールドを参照してください。
ペイウォール訪問
| カラム | 説明 |
|---|---|
| profile_id | AdapyユーザーID。 |
| customer_user_id | 開発者のユーザーID。ユーザーのUUID、メールアドレス、その他のIDを設定できます。設定していない場合はNull。 |
| profile_country | Apple/Google Storeが判定したプロファイルの国。 |
| install_date | インストールが発生したISO 8601形式の日時。 |
| store | app_storeまたはplay_storeのいずれか。 |
| paywall_showed_at | ペイウォールが顧客に表示された日時。 |
| developer_id | トランザクションが発生したペイウォールの開発者(SDK)ID。 |
| ab_test_name | トランザクションが発生したA/Bテストの名前。 |
| ab_test_revision | トランザクションが発生したA/Bテストのリビジョン。 |
| paywall_name | トランザクションが発生したペイウォールの名前。 |
| paywall_revision | トランザクションが発生したペイウォールのリビジョン。 |
トラブルシューティング
Adaptyはアップロードを開始する前にアクセスキーの有効性を確認します。Google Cloud Storageのキーが1つでも無効な場合、Adaptyはアップロードを中断してエラーをスローします。
アップロードが中断されないよう、キーの有効期限が切れる前に更新してください。イベントのキーを更新した場合は、ペイウォール訪問のキーも忘れずに更新してください(逆も同様です)。