ユーザー プロパティを送信する

ユーザー プロパティは、言語設定や地理的位置などのユーザーベースのセグメントを表現します。アナリティクスでは、一部のユーザー プロパティが自動的にログに記録されます。他のプロパティを収集したい場合は、プロジェクトごとに最大 25 個のユーザー プロパティを追加設定することができます。ユーザー プロパティの設定と登録の方法について詳しくは、カスタム ユーザー プロパティをご覧ください。

ユーザー プロパティを使用するとユーザー セグメントを拡張できますが、ユーザー プロパティのデータは、多くの場合、サーバーサイドでのみ利用できます。Measurement Protocol を使用すると、サーバーサイドのデータを使ってクライアントサイドの測定を強化できます。これは、通常、クライアントサイドのソリューションのみでは実現できません。

予約済みの名前

一部のユーザー プロパティ名は予約済みのため、測定では使用できません。

  • first_open_time
  • first_visit_time
  • last_deep_link_referrer
  • user_id
  • first_open_after_install

また、ユーザー プロパティ名の先頭を以下にすることはできません。

  • google_
  • ga_
  • firebase_

使用例

以下の例では、測定に追加するユーザー プロパティ(customer_tier)が CRM に含まれています。customer_tierpremium または standard に設定できます。レポートでこのユーザー プロパティを取得するための手順は、以下のとおりです。

まずは、クライアントで、CRM システムにアクセスできる サーバー API に対して、add_payment_info イベントと呼び出しを送信します。

クライアント コード

FirebaseAnalytics.logEvent("add_payment_info")
ServerAPI.addCustomerTier(
  FirebaseAnalytics.getAppInstanceId(),
  "[{name: \"add_payment_info\"}"]
);

次に、サーバーでは、Measurement Protocol を使って customer_tier ユーザー プロパティで測定が強化されます。

サーバーコード

const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";

function addCustomerTier(appInstanceId, events) {

  // Request the customer tier from the CRM.
  const customerTier = getCustomerTier(appInstanceId);

  const queryParams = `?firebase_app_id=${firebaseAppId}&api_secret=${apiSecret}`;
  fetch(`https://www.google-analytics.com/mp/collect${queryParams}`, {
    method: "POST",
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      "app_instance_id": "APP_INSTANCE_ID",
      "user_properties": {
        "customer_tier": {
          "value": "CUSTOMER_TIER"
        }
      },
      "events": JSON.parse(events)
    })
  });
}

このユーザー プロパティでは、premiumstandard の 2 種類のセグメントがレポートされます。

Measurement Protocol を使ってイベントを送信する方法について詳しくは、イベントの送信をご覧ください。

タイムスタンプをオーバーライドする

Measurement Protocol では、リクエスト内の各ユーザー プロパティについて、次のリストで最初に見つかったタイムスタンプが使用されます。

  1. user_properties 内のエントリの timestamp_micros
  2. リクエストの timestamp_micros
  3. Measurement Protocol がリクエストを受信した時刻。

次の例では、リクエスト内のすべてのユーザー プロパティに適用されるリクエストレベルのタイムスタンプを送信します。その結果、Measurement Protocol では、customer_tier ユーザー プロパティと customer_group ユーザー プロパティの両方に requestUnixEpochTimeInMicros のタイムスタンプが割り当てられます。

{
  "timestamp_micros": requestUnixEpochTimeInMicros,
  "user_properties": {
      "customer_tier": {
        "value": customerTierValue
      },
      "customer_group": {
        "value": customerGroupValue
      }
  }
}

次の例では、リクエストレベルのタイムスタンプと customer_tier ユーザー プロパティのタイムスタンプの両方を送信します。その結果、Measurement Protocol では、customer_tiercustomerTierUnixEpochTimeInMicros のタイムスタンプが割り当てられ、customer_grouprequestUnixEpochTimeInMicros のタイムスタンプが割り当てられます。

"timestamp_micros": requestUnixEpochTimeInMicros,
"user_properties": {
    "customer_tier": {
      "value": customerTierValue,
      "timestamp_micros": customerTierUnixEpochTimeInMicros
    },
    "customer_group": {
      "value": customerGroupValue
    }
}