Comme pour gtag, vous pouvez utiliser le protocole de mesure Google Analytics pour envoyer les données fournies par les utilisateurs en même temps que le User-ID, ce qui permet d'améliorer le comportement des utilisateurs et la mesure des conversions.
Pour envoyer les données fournies par l'utilisateur avec une requête de protocole de mesure, ajoutez le
Paramètre user_data
dans la charge utile JSON. Le paramètre user_id
doit être
présent chaque fois que user_data
est fourni.
Le protocole de mesure utilise le même algorithme de normalisation et de hachage.
en tant que
API Google Ads pour les mesures améliorées
.
Pour les questions de confidentialité, adresses e-mail, numéros de téléphone, prénoms, noms,
et les adresses postales doivent être hachées à l'aide de la méthode
Algorithme SHA-256 avant
en cours d'importation. La valeur hachée doit être encodée au format de chaîne hexadécimale (chaîne
ne contenant que des chiffres hexadécimaux), comme 88d7ecb5c5b21d7b1
.
Afin de standardiser les résultats du hachage, avant de hacher l'une des ces valeurs, vous devez:
- Supprimez les espaces blancs de début et de fin.
- Convertissez le texte en minuscules.
- Mettez en forme les numéros de téléphone Norme E164.
- Supprimez tous les points (.) qui précèdent le nom de domaine dans
gmail.com
etgooglemail.com
adresses e-mail.
Corps du post JSON
Clé | Type | Description |
---|---|---|
user_id | chaîne | Identifiant unique d'un utilisateur. Pour en savoir plus sur cet identifiant, consultez User-ID pour l'analyse multiplate-forme. |
user_data | objet | Champs de données utilisateur améliorés permettant d'identifier un utilisateur. |
user_data.sha256_email_address[] | tableau de chaînes | Adresse e-mail hachée et encodée de l'utilisateur.
Normalisé comme tel: <ph type="x-smartling-placeholder">
|
user_data.sha256_phone_number[] | tableau de chaînes | Numéro de téléphone haché et encodé de l'utilisateur.
Normalisé comme tel: <ph type="x-smartling-placeholder">
|
user_data.address[] | tableau | Identifie un utilisateur en fonction de sa situation géographique. |
user_data.address[].sha256_first_name | chaîne | Prénom haché de l'utilisateur, haché et encodé.
Normalisé comme tel: <ph type="x-smartling-placeholder">
|
user_data.address[].sha256_last_name | chaîne | Nom haché et encodé de l'utilisateur.
Normalisé comme tel: <ph type="x-smartling-placeholder">
|
user_data.address[].sha256_street | chaîne | Rue hachée et encodée, ainsi que le numéro de l'utilisateur.
Normalisé comme tel: <ph type="x-smartling-placeholder">
|
user_data.address[].city | chaîne | Ville de l'adresse de l'utilisateur.
Normalisé comme tel: <ph type="x-smartling-placeholder">
|
user_data.address[].region | chaîne | État ou territoire correspondant à l'adresse de l'utilisateur.
Normalisé comme tel: <ph type="x-smartling-placeholder">
|
user_data.address[].postal_code | chaîne | Code postal de l'adresse de l'utilisateur.
Normalisé comme tel: <ph type="x-smartling-placeholder">
|
user_data.address[].country | chaîne | Code pays de l'adresse de l'utilisateur. Format conforme à la norme ISO 3166-1 alpha-2. |
Consultez la documentation de référence sur le protocole de mesure. pour en savoir plus sur le formatage du transport et de la charge utile.
Envoyer les données fournies par l'utilisateur
Contrairement à gtag, hache automatiquement les données sensibles fournies par l'utilisateur, le protocole de mesure exige du développeur qu'il hache les données sensibles fournies par l'utilisateur à l'aide d'une méthode appelé algorithme de hachage. SHA256 et l'encoder à l'aide de format de chaîne hexadécimale avant d'appeler l'API.
Tous les champs de données utilisateur dont le nom commence par le préfixe sha256
doivent être
remplis uniquement de valeurs hachées et encodées en hexadécimal.
L'exemple de code suivant effectue les étapes de chiffrement et d'encodage nécessaires:
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));
Pour plus de commodité, tous les champs répétés dans l'objet user_data
(address
, sha256_email_address
ou sha256_phone_number
, par exemple) peuvent être
a transmis une valeur unique au lieu d'un tableau.
L'exemple de code suivant appelle le protocole de mesure et transmet les données utilisateur ainsi que le 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
}
}
})
});
Plusieurs valeurs
Les développeurs peuvent éventuellement fournir plusieurs valeurs (jusqu'à trois pour le numéro de téléphone et l'adresse e-mail). et 2 pour l'adresse) en utilisant une valeur de tableau plutôt qu'une chaîne. Si vous capturez plusieurs valeurs, ce qui augmente la probabilité d'une correspondance.
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
}]
}
})
});