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.comvegooglemail.come-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:
|
| 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:
|
| user_data.address[].sha256_last_name | dize | Kullanıcının karma oluşturma işlemi uygulanmış ve kodlanmış soyadı.
Bu şekilde normalleştirilir:
|
| user_data.address[].sha256_street | dize | Karma oluşturma işlemi uygulanmış ve kodlanmış sokak ve kullanıcı numarası.
Bu şekilde normalleştirilir:
|
| user_data.address[].city | dize | Kullanıcının adresinin bulunduğu şehir.
Bu şekilde normalleştirilir:
|
| user_data.address[].region | dize | Kullanıcının adresinin bulunduğu eyalet veya bölge.
Bu şekilde normalleştirilir:
|
| user_data.address[].postal_code | dize | Kullanıcının adresinin posta kodu.
Bu şekilde normalleştirilir:
|
| 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
}]
}
})
});