Schéma POST
La requête POST envoyée au webhook sera au format JSON avec le schéma suivant:
Charge utile proto Webhook
// Represent user lead data for single column
message UserLeadColumnData {
// Human-readable text of the field type (e.g.: Full Name, What is your
// preferred dealership?). This field might not always be populated.
optional string column_name = 1;
// Column value based on column type
oneof column_value {
string string_value = 2;
}
// Column ID. Populated for all types of fields. (e.g.: FULL_NAME)
optional string column_id = 3;
}
// Message to construct webhook JSON payload
message WebhookLead {
// Unique ID to represent lead
optional string lead_id = 1;
// User inputted data per column
repeated UserLeadColumnData user_column_data = 2;
// API version
optional string api_version = 3;
// Form ID to which lead belonged to.
optional int64 form_id = 4;
// Campaign ID that the lead form is associated with
optional int64 campaign_id = 5;
// Key to be used by advertiser to verify the request
// is from Google.
optional string google_key = 6;
// Denotes if the lead is a test lead.
optional bool is_test = 7;
// Click ID for the lead submission.
optional string gcl_id = 8;
// Adgroup ID which generated the lead.
optional int64 adgroup_id = 9;
// Creative ID which generated the lead.
optional int64 creative_id = 10;
// Asset group ID represents the container for holding assets, associated
// URLs, hints and criteria that will be used to select assets and for
// optimization. This field is only populated for Performance Max campaigns.
int64 asset_group_id = 11;
// Lead stage at the time of delivery.
string lead_stage = 12 [(datapol.semantic_type) = ST_NOT_REQUIRED];
// Lead submit time in ISO-8601 format. Ex- 2024-09-26T12:30:00Z
string lead_submit_time = 13 [(datapol.semantic_type) = ST_NOT_REQUIRED];
}
Description du champ
Champ | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
lead_id |
Chaîne unique qui identifie un prospect donné.
Recommandation de traitement:utilisez cette option pour dédupliquer les prospects reçus. Il sera unique pour tous les formulaires. Lorsque vous signalez des problèmes liés à un prospect spécifique, cet ID est obligatoire. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
api_version |
Version de l'API à laquelle appartient ce schéma de prospect. Il sera utilisé lors de la migration vers un nouveau schéma et peut être ignoré pour le moment. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
form_id |
Identifiant unique de chaque formulaire configuré dans Google Ads. Le produit actuel permet d'associer un formulaire au niveau de la campagne (plutôt qu'au niveau du groupe d'annonces ou de l'annonce).
Implications:Les prospects ne peuvent être segmentés qu'au niveau Les clients doivent utiliser un entier de 8 octets pour le traitement. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
campaign_id |
ID de la campagne Google Ads ou ID de l'élément de campagne (Display & Video 360) du formulaire de prospect associé.
Les clients doivent utiliser un entier de 8 octets pour le traitement. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
adgroup_id |
L'ID du groupe d'annonces Google Ads permet de distinguer le groupe d'annonces spécifique de la campagne. (Disponible uniquement pour les prospects issus des annonces vidéo et Discovery)
Les clients doivent utiliser un entier de 8 octets pour le traitement. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
creative_id |
L'ID de la création Google Ads permet de distinguer la création spécifique du groupe d'annonces. (Disponible uniquement pour les prospects issus des annonces vidéo et Discovery)
Les clients doivent utiliser un entier de 8 octets pour le traitement. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
gcl_id |
ID de clic Google, paramètre unique utilisé pour suivre chaque clic sur une annonce. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
google_key |
Clé configurée par l'annonceur avec chaque formulaire.
Recommandation de traitement:avant de traiter un prospect reçu via un webhook, la validation de |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
is_test |
Ce champ a une sémantique "facultatif". Si la valeur est "true", traitez ce prospect comme un prospect de test. Si la valeur est "false" ou si le champ n'est pas présent, traitez cette piste comme une piste de production valide. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
user_column_data |
Un tuple clé-valeur répété qui transmet les données envoyées par l'utilisateur.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
asset_group_id |
Ce champ n'est renseigné que pour les campagnes Performance Max.
Indique l'ID du conteneur contenant le formulaire de prospect.
Les clients doivent utiliser un entier de 8 octets pour le traitement. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
lead_stage |
Indique l'étape du prospect au moment de la diffusion. Ce champ permet de suivre l'étape de l'entonnoir / l'état de conversion d'un prospect. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
lead_submit_time |
Indique le code temporel au moment où l'utilisateur a envoyé le formulaire. Il est représenté au format ISO-8601. Exemple : 2024-09-26T12:30:00Z |
Champs non reconnus et compatibilité ascendante
Pour vous assurer que votre intégration de webhook reste robuste et peut s'adapter aux futures améliorations, il est recommandé de concevoir votre analyseur JSON de manière à ignorer de manière élégante tous les champs de la charge utile du webhook que votre système ne consomme ni ne reconnaît pas explicitement.
Recommandation clé:configurez votre logique d'analyse JSON pour ne traiter que les champs dont vous avez spécifiquement besoin pour votre application. N'écrivez pas de code qui s'attend à un ensemble fixe de champs ou qui échouerait si de nouveaux champs inattendus étaient présents dans la charge utile.
Pourquoi est-ce important ?
- Compatibilité ascendante:Google peut ajouter de nouveaux champs facultatifs à la charge utile du webhook dans les futures mises à jour afin de fournir des données plus riches ou de nouvelles fonctionnalités. Si votre analyseur est trop strict (par exemple, s'il échoue sur des propriétés inconnues), votre intégration risque de se briser lorsque Google déploie de tels changements non bloquants.
- Maintenance simplifiée:en ne vous concentrant que sur les points de données que vous utilisez activement, votre code d'intégration reste plus simple et plus facile à gérer.
La plupart des bibliothèques d'analyse JSON modernes proposent des options permettant d'ignorer les propriétés inconnues par défaut ou peuvent être configurées pour ce faire.
Gestion des prospects
Les gestionnaires de prospects doivent répondre avec les codes HTTP suivants:
Réponse HTTP | Corps de la réponse (JSON) | Erreur récupérable ? |
---|---|---|
200 |
{} | N/A |
4XX |
{"message: Texte d'erreur au format libre, décrivant le problème lié à la requête"} | Non |
5XX |
{"message: Intermittent retraible error optional message"} | Oui |
Doublons
Il n'est pas garanti qu'un prospect soit distribué exactement une seule fois. Par conséquent, le webhook de gestion des prospects doit gérer les doublons de manière appropriée.