Von Nutzern bereitgestellte Daten mit User-ID über das Measurement Protocol senden

Ähnlich wie bei gtag: können Sie das Measurement Protocol von Google Analytics um von Nutzern bereitgestellte Daten zusammen mit der User-ID zu senden, die zur Verbesserung der der Conversion-Analyse und -verhaltensweisen.

Wenn von Nutzern bereitgestellte Daten zusammen mit einer Measurement Protocol-Anfrage gesendet werden sollen, fügen Sie den Parameter Parameter user_data in der JSON-Nutzlast. Der Parameter user_id muss vorhanden, wenn user_data angegeben ist.

Das Measurement Protocol verwendet denselben Normalisierungs- und Hash-Algorithmus als Optimierte Analysen über die Google Ads API . Bei Bedenken im Hinblick auf den Datenschutz: E-Mail-Adressen, Telefonnummern, Vor- und Nachnamen und Adressen müssen mit der Methode SHA-256-Algorithmus vor hochgeladen werden. Der Hash-Wert muss im Hex-String-Format (String) codiert sein. -Objekt, das nur Hexadezimalziffern enthält), z. B. 88d7ecb5c5b21d7b1.

Um die Hash-Ergebnisse zu standardisieren, müssen Sie vor dem Hashen eines der müssen Sie Folgendes tun:

  • Entfernen Sie Leerzeichen am Anfang und Ende.
  • Verwenden Sie nur Kleinbuchstaben im Text.
  • Formatieren Sie Telefonnummern entsprechend der E164-Standard:
  • Entfernen Sie alle Punkte (.) vor dem Domainnamen in gmail.com und googlemail.com E-Mail-Adressen.

JSON-Beitragstext

Schlüssel Typ Beschreibung
user_id String Eine eindeutige Kennung für einen Nutzer. Weitere Informationen zu dieser ID finden Sie unter User-ID für plattformübergreifende Analysen.
user_data Objekt Erweiterte Felder für Nutzerdaten, mit denen ein Nutzer identifiziert werden kann.
user_data.sha256_email_address[] String-Array Gehashte und codierte E-Mail-Adresse des Nutzers. Als „
“ normalisiert <ph type="x-smartling-placeholder">
user_data.sha256_phone_number[] String-Array Gehashte und codierte Telefonnummer des Nutzers. Als „
“ normalisiert <ph type="x-smartling-placeholder">
    </ph>
  • alle Nicht-Ziffern-Zeichen entfernen
  • Präfix + hinzufügen
  • Hash-Wert mit dem SHA256-Algorithmus
  • im hexadezimalen Format codiert.
user_data.address[] Array Identifiziert einen Nutzer anhand des physischen Standorts.
user_data.address[].sha256_first_name String Gehashter und codierter Vorname des Nutzers. Als „
“ normalisiert <ph type="x-smartling-placeholder">
    </ph>
  • Ziffern und Symbolzeichen entfernen
  • Kleinschreibung
  • Leerzeichen am Anfang und Ende entfernen
  • Hash-Wert mit dem SHA256-Algorithmus
  • im hexadezimalen Format codiert.
user_data.address[].sha256_last_name String Gehashter und codierter Nachname des Nutzers. Als „
“ normalisiert <ph type="x-smartling-placeholder">
    </ph>
  • Ziffern und Symbolzeichen entfernen
  • Kleinschreibung
  • Leerzeichen am Anfang und Ende entfernen
  • Hash-Wert mit dem SHA256-Algorithmus
  • im hexadezimalen Format codiert.
user_data.address[].sha256_street String Gehashte und codierte Straße und Hausnummer des Nutzers. Als „
“ normalisiert <ph type="x-smartling-placeholder">
    </ph>
  • Symbolzeichen entfernen
  • Kleinschreibung
  • Leerzeichen am Anfang und Ende entfernen
  • Hash-Wert mit dem SHA256-Algorithmus
  • im hexadezimalen Format codiert.
user_data.address[].city String Ort der Adresse des Nutzers Als „
“ normalisiert <ph type="x-smartling-placeholder">
    </ph>
  • Ziffern und Symbolzeichen entfernen
  • Kleinschreibung
  • Leerzeichen am Zeilenanfang und -ende entfernen.
user_data.address[].region String Bundesland oder Gebiet der Adresse des Nutzers Als „
“ normalisiert <ph type="x-smartling-placeholder">
    </ph>
  • Ziffern und Symbolzeichen entfernen
  • Kleinschreibung
  • Leerzeichen am Zeilenanfang und -ende entfernen.
user_data.address[].postal_code String Postleitzahl der Adresse des Nutzers Als „
“ normalisiert <ph type="x-smartling-placeholder">
    </ph>
  • . und ~ Zeichen entfernen
  • Leerzeichen am Zeilenanfang und -ende entfernen.
user_data.address[].country String Ländercode der Adresse des Nutzers Formatiert gemäß ISO 3166-1 ALPHA-2-Norm.

Weitere Informationen finden Sie in der Referenzdokumentation zum Measurement Protocol. finden Sie weitere Informationen zum Formatieren von Transport und Nutzlast.

Von Nutzern bereitgestellte Daten senden

Im Gegensatz zu gtag, das das Measurement Protocol zum automatischen Hashen sensibler, von Nutzern bereitgestellter Daten Entwickler müssen vertrauliche, von Nutzern bereitgestellte Daten mit einer sicheren Einwegfunktion hashen. Hash-Algorithmus aufgerufen SHA256 und codieren Sie es mit Hexadezimalstringformat bevor Sie die API aufrufen.

Alle Nutzerdatenfelder, die mit dem Präfix sha256 im Namen beginnen, müssen Folgendes sein: nur gehashte und hexadezimal-codierte Werte enthalten.

Der folgende Beispielcode führt die erforderlichen Verschlüsselungs- und Codierungsschritte aus:

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 value_utf8 = encoder.encode(value);
  // Compute the hash (digest) using the SHA-256 algorithm.
  const hash_sha256 = await subtle.digest('SHA-256', value_utf8);
  // Convert buffer to byte array.
  const hash_array = Array.from(new Uint8Array(hash_sha256));
  // Return a hex-encoded string.
  return hash_array.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));

Zur Vereinfachung können alle wiederkehrenden Felder im user_data-Objekt (z. B. address, sha256_email_address, sha256_phone_number) kann hat einen einzelnen Wert anstelle eines Arrays übergeben.

Mit dem folgenden Beispielcode wird das Measurement Protocol aufgerufen und Nutzerdaten werden übergeben: zusammen mit der User-ID.

Node.js

const measurement_id = 'G-XXXXXXXXXX';
const api_secret = '<secret_value>';

// 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=${measurement_id}&api_secret=${api_secret}`, {
  method: "POST",
  body: JSON.stringify({
    client_id: 'XXXXXXXXXX.YYYYYYYYYY',
    user_id: "XXX",
    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
      }
    }
  })
});

Mehrere Werte

Entwickler können optional mehrere Werte angeben (bis zu drei für Telefon und E-Mail-Adresse). und 2 für Adresse), indem Sie anstelle eines Strings einen Arraywert verwenden. Wenn Sie mehr als einen Wert haben, erhöht sich die Wahrscheinlichkeit einer Übereinstimmung.

Node.js

const measurement_id = 'G-XXXXXXXXXX';
const api_secret = '<secret_value>';

fetch(`https://www.google-analytics.com/mp/collect?measurement_id=${measurement_id}&api_secret=${api_secret}`, {
  method: "POST",
  body: JSON.stringify({
    client_id: 'XXXXXXXXXX.YYYYYYYYYY',
    user_id: "XXX",
    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
      }]
    }
  })
});