Podobnie jak przy korzystaniu z tagu gtag, możesz używać platformy Google Analytics Measurement Protocol wysyłać wraz z identyfikatorem User-ID dane przekazywane przez użytkowników, które można wykorzystać zachowania użytkowników i konwersji.
Aby wraz z żądaniem Measurement Protocol wysyłać dane przekazywane przez użytkowników, dodaj parametr
user_data w ładunku JSON. Parametr user_id musi mieć wartość
obecny zawsze, gdy jest podany user_data.
Measurement Protocol używa tego samego algorytmu normalizacji i szyfrowania.
jako
Pomiar zaawansowany interfejsu Google Ads API
funkcji.
Ze względu na kwestie dotyczące prywatności, adresy e-mail, numery telefonów, imiona i nazwiska
i adresy muszą być zahaszowane za pomocą
Algorytm SHA-256 przed
przesyłane filmy. Zaszyfrowana wartość powinna być zakodowana w formacie szesnastkowym (ciąg znaków
obiektu zawierającego tylko cyfry szesnastkowe), np. 88d7ecb5c5b21d7b1.
Aby ustandaryzować wyniki haszowania, przed zaszyfrowaniem jednego z musisz:
- usuń spacje na początku i na końcu ciągu,
 - zmień pisownię tekstu na małe litery,
 - Formatuj numery telefonów zgodnie z standard E164.
 - Usuń wszystkie kropki (.) poprzedzające nazwę domeny w domenach 
gmail.comorazgooglemail.comadresy e-mail. 
Treść posta JSON
| Klucz | Typ | Opis | 
|---|---|---|
| user_id | ciąg znaków | Unikalny identyfikator użytkownika. Więcej informacji o tym identyfikatorze znajdziesz w artykule na temat analizy wielu platform za pomocą funkcji User-ID. | 
| user_data | Obiekt | Ulepszone pola danych użytkownika umożliwiające identyfikację użytkownika. | 
| user_data.sha256_email_address[] | tablica tekstowa | Zaszyfrowany i zakodowany adres e-mail użytkownika.
Znormalizowany w ten sposób: 
  | 
| user_data.sha256_phone_number[] | tablica tekstowa | Zaszyfrowany i zakodowany numer telefonu użytkownika.
Znormalizowany w ten sposób: 
  | 
| user_data.address[] | tablica | Identyfikuje użytkownika na podstawie lokalizacji fizycznej. | 
| user_data.address[].sha256_first_name | ciąg znaków | Zakodowane i zakodowane imię użytkownika.
Znormalizowany w ten sposób: 
  | 
| user_data.address[].sha256_last_name | ciąg znaków | Zakodowane i zaszyfrowane nazwisko użytkownika.
Znormalizowany w ten sposób: 
  | 
| user_data.address[].sha256_street | ciąg znaków | Zaszyfrowana i zakodowana ulica i numer użytkownika.
Znormalizowany w ten sposób: 
  | 
| user_data.address[].city | ciąg znaków | Miasto w adresie użytkownika.
Znormalizowany w ten sposób: 
  | 
| user_data.address[].region | ciąg znaków | Stan lub terytorium odpowiadające adresowi użytkownika.
Znormalizowany w ten sposób: 
  | 
| user_data.address[].postal_code | ciąg znaków | Kod pocztowy adresu użytkownika.
Znormalizowany w ten sposób: 
  | 
| user_data.address[].country | ciąg znaków | Kod kraju w adresie użytkownika. Sformatowane zgodnie ze standardem ISO 3166-1 alfa-2. | 
Zobacz dokumentację Measurement Protocol. .
Wysyłanie danych przekazywanych przez użytkowników
W odróżnieniu od tagu gtag, który automatycznie szyfruje poufne dane przekazywane przez użytkowników, Measurement Protocol wymaga od dewelopera szyfrowania poufnych danych przekazywanych przez użytkowników za pomocą bezpiecznego, jednokierunkowego algorytm szyfrowania o nazwie SHA256 i zakoduj go za pomocą format ciągu szesnastkowego przed wywołaniem interfejsu API.
Wszystkie pola danych użytkownika zaczynające się od prefiksu sha256 w nazwie powinny być
wypełnione tylko zaszyfrowanymi i zakodowanymi wartościami szesnastkowymi.
Ten przykładowy kod wykonuje niezbędne kroki szyfrowania i kodowania:
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));
Dla wygody wszystkie pola powtarzane w obiekcie user_data
(takie jak address, sha256_email_address, sha256_phone_number) mogą być
przesłał wartość pojedynczą zamiast tablicy.
Ten przykładowy kod wywołuje Measurement Protocol i przekazuje dane użytkownika razem z funkcją User-ID.
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
      }
    }
  })
});
Wiele wartości
Deweloperzy mogą opcjonalnie podać wiele wartości (do 3 wartości dla numeru telefonu i adresu e-mail) i 2 dla adresu), używając wartości w postaci tablicy, a nie ciągu. Jeśli rejestrujesz więcej niż jedną wartość, podanie tej wartości zwiększy prawdopodobieństwo dopasowania.
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
      }]
    }
  })
});