Kullanıcı tarafından sağlanan verileri Measurement Protocol kullanarak User-ID'yle gönderme

gtag'i kullanmaya benzer şekilde, davranış ve dönüşüm ölçümünü iyileştirmek için kullanılabilecek kullanıcı tarafından sağlanan verileri User-ID ile birlikte göndermek üzere Google Analytics Measurement Protocol'ü kullanmak mümkündür.

Kullanıcı tarafından sağlanan verileri Measurement Protocol isteğiyle birlikte göndermek için JSON yüküne user_data parametresini ekleyin. user_data sağlandığında user_id parametresini de eklemenizi öneririz. Bu, en doğru ölçümün ve özellik işlevselliğinin sağlanmasına yardımcı olur.

Measurement Protocol, Google Ads API Gelişmiş Ölçüm özelliğiyle aynı normalleştirme ve karma oluşturma algoritmasını kullanır. Gizlilikle ilgili endişeler söz konusu olduğunda, e-posta adresleri, telefon numaraları, adlar, soyadlar ve açık adresler yüklenmeden önce SHA-256 algoritması kullanılarak karma oluşturma işlemine tabi tutulmalıdır. Karma oluşturma işlemi uygulanmış değer, onaltılık dize biçiminde (yalnızca onaltılık rakamlar içeren dize nesnesi) kodlanmalıdır. Örneğin,88d7ecb5c5b21d7b1.

Anonimleştirme (hash) sonuçlarını standart hale getirmek için bu değerlerden birini anonimleştirmeden (hash) önce şunları yapmanız gerekir:

  • Baştaki ve sondaki boşlukları kaldırın.
  • Metni küçük harfe dönüştürün.
  • Telefon numaralarını E164 standardına göre biçimlendirin.
  • gmail.com ve googlemail.com e-posta adreslerinde alan adından önce gelen tüm noktaları (.) kaldırın.

JSON yayın gövdesi

Anahtar Tür Açıklama
user_id dize Kullanıcı için benzersiz tanımlayıcı. Bu tanımlayıcı hakkında daha fazla bilgi için Platformlar arası analiz için User-ID başlıklı makaleyi inceleyin.
user_data nesne Kullanıcıyı tanımlayan gelişmiş kullanıcı verisi alanları.
user_data.sha256_email_address[] dize dizisi Kullanıcının karma oluşturma işlemi uygulanmış ve kodlanmış e-posta adresi. Bu şekilde normalleştirilir:
user_data.sha256_phone_number[] dize dizisi Kullanıcının karma oluşturma işlemi uygulanmış ve kodlanmış telefon numarası. Bu şekilde normalleştirilir:
  • Rakam olmayan tüm karakterleri kaldırın.
  • + önekini ekleyin
  • SHA256 algoritması kullanılarak karma oluşturulmalıdır.
  • onaltılık dize biçiminde kodlayın.
user_data.address[] dizi Kullanıcıyı fiziksel konumuna göre tanımlar.
user_data.address[].sha256_first_name dize Kullanıcının karma oluşturma işlemi uygulanmış ve kodlanmış adı. Bu şekilde normalleştirilir:
  • rakamları ve sembol karakterlerini kaldırma
  • küçük harf
  • baştaki ve sondaki boşlukları kaldırma
  • SHA256 algoritması kullanılarak karma oluşturulmalıdır.
  • onaltılık dize biçiminde kodlayın.
user_data.address[].sha256_last_name dize Kullanıcının karma oluşturma işlemi uygulanmış ve kodlanmış soyadı. Bu şekilde normalleştirilir:
  • rakamları ve sembol karakterlerini kaldırma
  • küçük harf
  • baştaki ve sondaki boşlukları kaldırma
  • SHA256 algoritması kullanılarak karma oluşturulmalıdır.
  • onaltılık dize biçiminde kodlayın.
user_data.address[].sha256_street dize Karma oluşturma işlemi uygulanmış ve kodlanmış sokak ve kullanıcı numarası. Bu şekilde normalleştirilir:
  • sembol karakterlerini kaldırma
  • küçük harf
  • baştaki ve sondaki boşlukları kaldırma
  • SHA256 algoritması kullanılarak karma oluşturulmalıdır.
  • onaltılık dize biçiminde kodlayın.
user_data.address[].city dize Kullanıcının adresinin bulunduğu şehir. Bu şekilde normalleştirilir:
  • rakamları ve sembol karakterlerini kaldırma
  • küçük harf
  • baştaki ve sondaki boşlukları kaldırma
user_data.address[].region dize Kullanıcının adresinin bulunduğu eyalet veya bölge. Bu şekilde normalleştirilir:
  • rakamları ve sembol karakterlerini kaldırma
  • küçük harf
  • baştaki ve sondaki boşlukları kaldırma
user_data.address[].postal_code dize Kullanıcının adresinin posta kodu. Bu şekilde normalleştirilir:
  • . ve ~ karakterlerini kaldırma
  • baştaki ve sondaki boşlukları kaldırma
user_data.address[].country dize Kullanıcının adresinin ülke kodu. ISO 3166-1 alfa-2 standardına göre biçimlendirilmiş olmalıdır.

Taşıma ve yükün nasıl biçimlendirildiği hakkında daha fazla bilgi için Measurement Protocol referans belgelerine bakın.

Kullanıcı tarafından sağlanan verileri gönderme

gtag, kullanıcı tarafından sağlanan hassas verilere otomatik olarak karma oluşturma işlemi uygularken Measurement Protocol, API'yi çağırmadan önce geliştiricinin SHA256 adlı güvenli tek yönlü karma oluşturma algoritmasını kullanarak kullanıcı tarafından sağlanan hassas verilere karma oluşturma işlemi uygulamasını ve on altılık dize biçimini kullanarak kodlamasını gerektirir.

Adında sha256 önekiyle başlayan tüm kullanıcı verileri alanları yalnızca karma oluşturma işlemi uygulanmış ve onaltılık kodlanmış değerlerle doldurulmalıdır.

Aşağıdaki örnek kod, gerekli şifreleme ve kodlama adımlarını gerçekleştirir:

Node.js

const { subtle } = require('crypto').webcrypto;

async function populateSensitiveUserData(value) {
  const encoder = new TextEncoder();
  // Convert a string value to UTF-8 encoded text.
  const valueUtf8 = encoder.encode(value);
  // Compute the hash (digest) using the SHA-256 algorithm.
  const hashSha256 = await subtle.digest('SHA-256', valueUtf8);
  // Convert buffer to byte array.
  const hashArray = Array.from(new Uint8Array(hashSha256));
  // Return a hex-encoded string.
  return hashArray.map(b => b.toString(16).padStart(2, "0")).join('');
};

// Test the encryption function by calling it.
async function main() {
  return await populateSensitiveUserData('<value>');
}

main()
  .then(v => console.log(v))
  .catch(err => console.error(err));

Kolaylık sağlamak için user_data nesnesinin içindeki tüm tekrarlanan alanlara (ör. address, sha256_email_address, sha256_phone_number) dizi yerine tek bir değer iletilebilir.

Aşağıdaki örnek kod, Measurement Protocol'ü çağırır ve kullanıcı verilerini User-ID ile birlikte iletir.

Node.js

const measurementId = "MEASUREMENT_ID";
const apiSecret = "API_SECRET";

// Populate mock User Data using the `populateSensitiveUserData` function defined
// above.
const yourEmailSha256Variable = await populateSensitiveUserData('test@yourdomain.com');
const yourPhoneSha256Variable  = await populateSensitiveUserData('+15555555555');
const yourFirstNameSha256Variable  = await populateSensitiveUserData('john');
const yourLastNameSha256Variable  = await populateSensitiveUserData('doe');
const yourStreetAddressSha256Variable  = await populateSensitiveUserData('123 main street');

// Populate mock unencrypted user data.
const yourCityVariable = 'san francisco';
const yourRegionVariable = 'california';
const yourPostalCodeVariable = '94000';
const yourCountryVariable = 'US';

fetch(`https://www.google-analytics.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret}`, {
  method: "POST",
  body: JSON.stringify({
    client_id: "CLIENT_ID",
    user_id: "USER_ID",
    events: [{
      name: "purchase"
    }],
    user_data: {
      sha256_email_address: yourEmailSha256Variable,
      sha256_phone_number: yourPhoneSha256Variable,
      address: {
        sha256_first_name: yourFirstNameSha256Variable,
        sha256_last_name: yourLastNameSha256Variable,
        sha256_street: yourStreetAddressSha256Variable,
        city: yourCityVariable,
        region: yourRegionVariable,
        postal_code: yourPostalCodeVariable,
        country: yourCountryVariable
      }
    }
  })
});

Birden çok değer

Geliştiriciler dize yerine bir dizi değeri kullanma yoluyla, isteğe bağlı olarak birden fazla değer (telefon ve e-posta için en fazla 3, adres için en fazla 2 değer) sağlayabilir. Birden fazla değer yakalarsanız bunu sağlamak eşleşme olasılığını artırır.

Node.js

const measurementId = "MEASUREMENT_ID";
const apiSecret = "API_SECRET";

fetch(`https://www.google-analytics.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret}`, {
  method: "POST",
  body: JSON.stringify({
    client_id: "CLIENT_ID",
    user_id: "USER_ID",
    events: [{
      name: "purchase"
    }],
    user_data: {
      sha256_email_address: [yourEmailSha256Variable1, yourEmailSha256Variable2],
      sha256_phone_number: [yourPhoneSha256Variable1, yourPhoneSha256Variable2],
      address: [{
        sha256_first_name: yourFirstNameSha256Variable1,
        sha256_last_name: yourLastNameSha256Variable1,
        sha256_street: yourStreetAddressSha256Variable1,
        city: yourCityVariable1,
        region: yourRegionVariable1,
        postal_code: yourPostalCodeVariable1,
        country: yourCountryVariable1
      },{
        sha256_first_name: yourFirstNameSha256Variable2,
        sha256_last_name: yourLastNameSha256Variable2,
        sha256_street: yourStreetAddressSha256Variable2,
        city: yourCityVariable2,
        region: yourRegionVariable2,
        postal_code: yourPostalCodeVariable2,
        country: yourCountryVariable2
      }]
    }
  })
});