Suivi des conversions d'application et remarketing – Spécifications concernant les demandes/réponses

User-agent de l'application

Dans le cadre de nos efforts plus généraux pour lutter contre le spam, nous avons développé une spécification standardisée pour l'en-tête User-Agent envoyé par un produit d'analyse ou publicitaire au nom d'un utilisateur d'application. L'User-Agent de l'application peut être dérivé du code natif pour respecter les spécifications suivantes :

name version (os_and_version; locale; device; build; Proxy)

Ces champs sont définis comme suit :

Composants de l'user-agent
name

Nom du produit Analytics/Ads. (Google AdMob)

Notez que si le user-agent est construit côté client, name doit être l'ID du bundle de l'application cliente.


Android
// Specified by API consumer.

iOS
// Specified by API consumer.
version

Version du produit Analytics/Ads. (7.10.1)


Android
// Specified by API consumer.

iOS
// Specified by API consumer.
os_and_version

Système d'exploitation et version du système d'exploitation sur lesquels l'application s'exécute. (Android 6.0 )


Android
String osAndVersion =
    "Android " + Build.VERSION.RELEASE;

iOS
UIDevice *uid =
  [UIDevice currentDevice];
NSString *osAndVersion =
  [NSString
    stringWithFormat:@"%@ %@",
    [uid systemName],
    [uid systemVersion]];
locale

Balise de paramètres régionaux IETF pour l'appareil, utilisant un code pays et de langue à deux lettres séparés par un trait de soulignement. (en_US)


Android
String locale = Locale.getDefault();

iOS
NSString *locale =
  [[NSLocale currentLocale]
    localeIdentifier]
device

Nom de l'appareil physique sur lequel le produit Analytics/Ads est exécuté. (iPhone9,1)


Android
String device = Build.MODEL;

iOS
@import Darwin.sys.sysctl;

NSString *device(void) {
  size_t bufferSize = 64;
  NSMutableData *buffer =
    [[NSMutableData alloc]
      initWithLength:bufferSize];
  int status =
    sysctlbyname("hw.machine",
      buffer.mutableBytes,
      &bufferSize, NULL, 0);
  if (status != 0) {
    return nil;
  }
  return [[NSString alloc]
    initWithCString:buffer.mutableBytes
    encoding:NSUTF8StringEncoding];
}
build

"Build/" suivi du numéro de build du système d'exploitation. (Build/13D15)


Android
String build = "Build/" + Build.ID;

iOS
@import Darwin.sys.sysctl;

NSString *build(void) {
  size_t bufferSize = 64;
  NSMutableData *buffer =
    [[NSMutableData alloc]
      initWithLength:bufferSize];
  int status =
    sysctlbyname("kern.osversion",
      buffer.mutableBytes,
      &bufferSize, NULL, 0);
  if (status != 0) {
    return nil;
  }
  return [[NSString alloc]
    initWithCString:buffer.mutableBytes
    encoding:NSUTF8StringEncoding];
}

N'incluez ; Proxy qu'à la fin de l'User-Agent de l'application lorsque vous construisez l'User-Agent de l'application côté serveur. Si l'user-agent de l'application est entièrement construit côté client, excluez ; Proxy. Voici un exemple d'User-Agent d'application :

  • Android : AdMob/7.10.1 (Android 6.0; en_US; SM-G900F; Build/MMB29M; Proxy)
  • iOS : AdMob/7.10.1 (iOS 10.0.2; en_US; iPhone9,1; Build/13D15; Proxy)

Demande de suivi des conversions

L'objectif des demandes de suivi des conversions est d'informer Google Ads d'un événement d'application qui doit être suivi en tant que conversion et/ou utilisé pour remplir une liste de remarketing, et de récupérer les métadonnées décrivant tout clic ayant précédé l'événement.

Tous les appels d'API sont effectués vers le domaine www.googleadservices.com. Les demandes de conversion sont des demandes POST via HTTPS sur le chemin d'accès suivant :

/pagead/conversion/app/version
version est la version prévue de l'API de suivi des conversions. Actuellement, la seule version valide est 1.0.

Une demande de conversion d'application standard contient les paramètres suivants.

Demande de suivi des conversions
dev_token

Obligatoire


Emplacement : requête


Jeton de développeur unique et statique émis pour l'utilisateur de l'API.

Z_eErE4DkvcKjDM1OVE4c4
link_id

Obligatoire


Emplacement : requête


Identifiant de lien associant le jeton de développeur du consommateur d'API à une application spécifique.

31FF8D67E5BB5DD5029DCC2734C2F884
app_event_type

Obligatoire


Emplacement : requête


Nom de l'événement d'application qui s'est produit. Ce champ est une énumération et n'accepte que les valeurs suivantes :

 • first_open
 • session_start
 • in_app_purchase
 • view_item_list
 • view_item
 • view_search_results
 • add_to_cart
 • ecommerce_purchase
 • custom

L'événement first_open doit toujours être envoyé pour attribuer les installations, et l'événement session_start doit toujours être envoyé pour réattribuer les sessions. Utilisez in_app_purchase pour les achats effectués via la plate-forme de téléchargement d'applications native et ecommerce_purchase pour tous les autres achats.

app_event_name

Obligatoire sous certaines conditions


Emplacement : requête


Nom de tout événement d'application personnalisé qui n'est pas accepté dans le champ app_event_type. Ce champ doit contenir entre 1 et 64 caractères Unicode (avec l'encodage UTF-8). Ce champ est obligatoire si app_event_type est défini sur custom.

level_achieved
Level Achieved

Ce champ ne doit contenir aucune des valeurs réservées à app_event_type. Si un nom d'événement réservé est utilisé, l'API renvoie une erreur APP_EVENT_NAME_RESERVED_VALUE.

app_event_data

Facultatif


Emplacement : corps


Transmettez toutes les données d'événement enrichi supplémentaires sous la forme d'un simple objet JSON mappant les clés de chaîne aux valeurs. Seuls les chaînes et les tableaux de chaînes sont acceptés.

{"level": 5, "attempts": 20}
rdid

Obligatoire


Emplacement : requête


Chaîne UUID valide représentant l'ID brut de l'appareil.

f10e1de2-e237-4f50-b6aa-843c45cc63d6

Si l'ID de l'appareil est manquant, par exemple l'ID d'un utilisateur ATT n'ayant pas donné son consentement, définissez-le sur zéro.

00000000-0000-0000-0000-000000000000
id_type

Obligatoire


Emplacement : requête


Type d'identifiant stocké dans le champ rdid. Nous pourrons accepter d'autres valeurs à l'avenir, mais pour commencer, nous accepterons les suivantes.


Android

advertisingid

iOS

idfa
eea

Obligatoire sous certaines conditions


Emplacement : requête


Champ d'application EEA.

0 : les réglementations européennes ne s'appliquent pas à cet utilisateur ni à cette conversion.

1 : les réglementations européennes s'appliquent à cet utilisateur et à cette conversion. Par exemple, si un utilisateur se trouve dans l'EEA, il est soumis aux réglementations européennes applicables.


*Required to be sent when the value is known.

ad_personalization

Obligatoire sous certaines conditions


Emplacement : requête


Indicateurs pour les annonces personnalisées

0 : l'utilisateur final a refusé le consentement pour la personnalisation des annonces.

1 : l'utilisateur final a accordé le consentement pour la personnalisation des annonces.


*Required to be sent when the value is known.

ad_user_data

Obligatoire sous certaines conditions


Emplacement : requête


Indicateur de consentement pour l'utilisation des données utilisateur à des fins publicitaires

0 : l'utilisateur a refusé de transmettre ses données à Google à des fins publicitaires

1 : l'utilisateur a accepté de transmettre ses données à Google à des fins publicitaires


*Required to be sent when the value is known.

lat

Obligatoire


Emplacement : requête


État de la fonctionnalité "Limiter le suivi des annonces" pour l'appareil.

  • 0 : l'utilisateur n'a pas choisi de limiter le suivi des annonces.
  • 1 : l'utilisateur a choisi de limiter le suivi des annonces.

app_version

Obligatoire


Emplacement : requête


Version actuelle de l'application. Elle doit être standardisée comme suit.


Android

packageManager.getPackageInfo(packageName(),
  PackageManager.GET_META_DATA).versionName

iOS

[[[NSBundle mainBundle] infoDictionary]
  objectForKey:@"CFBundleShortVersionString"]

1.2.4
os_version

Obligatoire


Emplacement : requête


Version actuelle de l'OS hôte de l'application. Elle doit être standardisée comme suit.


Android

android.os.Build.VERSION.RELEASE

iOS

[[UIDevice currentDevice] systemVersion]
sdk_version

Obligatoire


Emplacement : requête


Version du SDK qui a mesuré l'événement. Comme il est principalement utilisé pour le débogage, il doit refléter la version publiée exactement telle qu'elle est publiée avec vos versions du SDK. Si l'application n'utilise pas de SDK, veuillez transmettre la même valeur que app_version.

1.9.5r6
timestamp

Obligatoire


Emplacement : requête


Code temporel UNIX de l'événement de conversion, en secondes, avec une précision pouvant aller jusqu'à la microseconde.

1432681913.123456
value

Facultatif


Emplacement : requête


Valeur monétaire de l'événement, le cas échéant. Elle doit toujours être mise en forme en tant que valeur à virgule flottante lisible par une machine, en utilisant un point décimal pour séparer la partie entière et la partie fractionnaire de la valeur.

1.99
currency_code

Obligatoire sous certaines conditions


Emplacement : requête


Code de devise ISO 4217 pour le paramètre value. Ce champ est obligatoire si le value paramètre est fourni et n'est pas vide.

USD
gclid

Obligatoire sous certaines conditions


Emplacement : requête


Valeur du paramètre de requête gclid à partir d'une URL de lien profond qui a ouvert l'application.

Cj0KEQjw0dy4BRCuuL_e5M
market_referrer_gclid

Obligatoire sous certaines conditions


Emplacement : requête


Valeur du paramètre de requête gclid d'une URL de lien profond capturée à partir de la valeur install_referrer via l'API Play Install Referrer.

BX3QojHp4mY5MrJtFM_d1u
gclid_only_request

Obligatoire sous certaines conditions


Emplacement : requête


Identifiant pour l'attribution basée sur gclid dans les scénarios où rdid (advertisingid) est not disponible ou où tous les zeroes ET gclid ou market_referrer_gclid sont présents.

1
gbraid

Obligatoire sous certaines conditions


Emplacement : requête


Valeur gbraid de la dernière visite envoyée via l'URL de lien profond qui a ouvert l'application. Notez que cette valeur doit être mise en cache dans l'application afin de pouvoir être envoyée avec les futures conversions qui se produiront dans l'application.

ChEI8IixhgYQrufHkIjz3YWRARIzALev_G_O
app_open_source

Obligatoire sous certaines conditions


Emplacement : requête


Valeur permettant d'identifier les liens profonds de clic sur une annonce ou les sessions d'application naturelles.

ad_click or organic
User-Agent

Obligatoire


Position : en-tête


User-agent de l'application, tel que défini dans la section précédente.

AdMob/7.10.1 (Android 6.0; en_US; SM-G900F; Build/MMB29M)
X-Forwarded-For

Obligatoire


Position : en-tête


Adresse IPv4 ou IPv6 publique de l'appareil sur lequel l'événement a été mesuré.

216.58.194.174

Toutes les requêtes doivent être envoyées via HTTPS. Les pings reçus via HTTP seront refusés.

Veuillez noter que si le corps de la requête est vide (dans les cas où aucune donnée d'événement enrichi n'est transmise dans la charge utile app_event_data), notre serveur exige que vous définissiez explicitement l'en-tête Content-Length: 0 dans votre requête.

Exemple de demande

Voici un exemple de demande de suivi des conversions valide avec un type d'événement non personnalisé et des informations sur les revenus :

POST /pagead/conversion/app/1.0
       ?dev_token=Z_eErE4DkvcKjDM1OVE4c4
       &link_id=31FF8D67E5BB5DD5029DCC2734C2F884
       &app_event_type=in_app_purchase
       &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D
       &id_type=idfa
       &eea=0
       &ad_personalization=1
       &ad_user_data=1
       &lat=0
       &app_version=1.2.4
       &os_version=9.3.2
       &sdk_version=1.9.5r6
       &timestamp=1432681913.123456
       &value=1.99
       &currency_code=USD
       &market_referrer_gclid=BX3QojHp4mY5MrJtFM_d1u
       &gclid=Cj0KEQjw0dy4BRCuuL_e5M
       &gclid_only_request=0
       &gbraid=ChEI8IixhgYQrufHkIjz3YWRARIzALev_G_O
Host: www.googleadservices.com
User-Agent: MyAnalyticsCompany/1.0.0 (iOS 10.0.2; en_US; iPhone9,1; Build/13D15; Proxy)
X-Forwarded-For: 216.58.194.174
Content-Type: application/json; charset=utf-8
{"app_event_data":{"item_id":["Crayons","Markers"]}}

Voici un exemple de demande de suivi des conversions valide avec un type d'événement non personnalisé et des informations sur les revenus pour lesquels rdid (advertisingid) n'est pas disponible :

POST /pagead/conversion/app/1.0
       ?dev_token=Z_eErE4DkvcKjDM1OVE4c4
       &link_id=31FF8D67E5BB5DD5029DCC2734C2F884
       &app_event_type=in_app_purchase
       &rdid=00000000-0000-0000-0000-000000000000
       &id_type=advertisingid
       &eea=0
       &ad_personalization=1
       &ad_user_data=1
       &lat=1
       &app_version=1.2.4
       &os_version=9.3.2
       &sdk_version=1.9.5r6
       &timestamp=1432681913.123456
       &value=1.99
       &currency_code=USD
       &market_referrer_gclid=BX3QojHp4mY5MrJtFM_d1u
       &gclid=Cj0KEQjw0dy4BRCuuL_e5M
       &gclid_only_request=1
       &gbraid=ChEI8IixhgYQrufHkIjz3YWRARIzALev_G_O
Host: www.googleadservices.com
User-Agent: MyAnalyticsCompany/1.0.0 (iOS 10.0.2; en_US; Android,1; Build/13D15; Proxy)
X-Forwarded-For: 216.58.194.174
Content-Type: application/json; charset=utf-8
{"app_event_data":{"item_id":["Crayons","Markers"]}}

Voici un exemple de requête session start valide :

POST /pagead/conversion/app/1.0
       ?dev_token=Z_eErE4DkvcKjDM1OVE4c4
       &link_id=31FF8D67E5BB5DD5029DCC2734C2F884
       &app_event_type=session_start
       &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D
       &id_type=idfa
       &eea=0
       &ad_personalization=1
       &ad_user_data=1
       &lat=0
       &app_version=1.2.4
       &os_version=9.3.2
       &sdk_version=1.9.5r6
       &timestamp=1432681913.123456
       &gclid=Cj0KEQjw0dy4BRCuuL_e5M
       &gbraid=ChEI8IixhgYQrufHkIjz3YWRARIzALev_G_O
Host: www.googleadservices.com
User-Agent: MyAnalyticsCompany/1.0.0 (iOS 10.0.2; en_US; iPhone9,1; Build/13D15; Proxy)
X-Forwarded-For: 216.58.194.174
Content-Type: application/json; charset=utf-8

Voici un exemple de demande de réattribution du début de session valide pour une session qui a commencé à partir du lien profond example://product/123?gclid=Cj0KEQjw0dy4BRCuuL_e5M :

POST /pagead/conversion/app/1.0
       ?dev_token=Z_eErE4DkvcKjDM1OVE4c4
       &link_id=31FF8D67E5BB5DD5029DCC2734C2F884
       &app_event_type=session_start
       &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D
       &id_type=idfa
       &eea=0
       &ad_personalization=1
       &ad_user_data=1
       &lat=0
       &app_version=1.2.4
       &os_version=9.3.2
       &sdk_version=1.9.5r6
       &timestamp=1432681913.123456
       &gclid=Cj0KEQjw0dy4BRCuuL_e5M
       &gbraid=ChEI8IixhgYQrufHkIjz3YWRARIzALev_G_O
Host: www.googleadservices.com
User-Agent: MyAnalyticsCompany/1.0.0 (iOS 10.0.2; en_US; iPhone9,1; Build/13D15; Proxy)
X-Forwarded-For: 216.58.194.174
Content-Type: application/json; charset=utf-8

Voici un exemple de demande de suivi des conversions valide pour un utilisateur de l'EEE ayant accordé son consentement pour les données utilisateur publicitaires, mais refusé la personnalisation des annonces :

POST /pagead/conversion/app/1.0
       ?dev_token=Z_eErE4DkvcKjDM1OVE4c4
       &link_id=31FF8D67E5BB5DD5029DCC2734C2F884
       &app_event_type=in_app_purchase
       &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D
       &id_type=idfa
       &eea=1
       &ad_personalization=0
       &ad_user_data=1
       &lat=0
       &app_version=1.2.4
       &os_version=9.3.2
       &sdk_version=1.9.5r6
       &timestamp=1432681913.123456
       &value=1.99
       &currency_code=USD
Host: www.googleadservices.com
User-Agent: MyAnalyticsCompany/1.0.0 (iOS 10.0.2; en_US; iPhone9,1; Build/13D15; Proxy)
X-Forwarded-For: 216.58.194.174
Content-Type: application/json; charset=utf-8

Encodage des données d'événement

Pour le paramètre de corps app_event_data, veuillez utiliser les conventions suivantes pour les types de données primitifs :

  • Float

    • Utiliser le point comme séparateur décimal indépendamment de la localisation de l'application
    • Utilisez une précision décimale à deux chiffres pour représenter les valeurs monétaires (par exemple, 2,99).
    • N'utilisez pas la notation exponentielle (par exemple, 2E+9).
    • N'utilisez pas de virgule pour séparer les groupes de chiffres, par exemple : 1,000,000.
    • Exemples valides :
      • -0.5
      • 2.99
      • 1000000.123
  • Entier

    • N'envoyez que des valeurs entières sans chiffres décimaux.
    • N'utilisez pas de virgule pour séparer les groupes de chiffres (par exemple, 1 000 000).
    • Exemples valides :
      • 1000
      • -11
      • 0
  • Date

    • Format de la date : aaaa-mm-jj
      • yyyy : année à quatre chiffres (par exemple, 2016)
      • mm = mois à deux chiffres (par exemple, 09 pour septembre)
      • dd : jour à deux chiffres (par exemple, 23 pour le 23e jour du mois)
    • Envoyez toujours le nombre de chiffres spécifié ci-dessus. Par exemple, si vous envoyez la valeur de "dd" pour le 5e jour du mois, envoyez 05.
    • Exemples valides :
      • "2016-09-23"
      • "1990-12-31"
  • Temporel

    • Format de l'heure : code temporel Unix/Epoch défini dans le fuseau horaire UTC, avec une précision allant jusqu'à la microseconde
    • Exemples valides :
      • 1478713087 pour Wed, 09 Nov 2016 17:38:07 GMT
      • 1073513982.123000 pour le mercredi 7 janvier 2004 à 22:19:42.123 GMT
  • Tableaux

    • N'envoyez que des tableaux de valeurs primitives (chaînes, nombres et valeurs booléennes).
    • Exemples valides :
      • [123, 456, 789]
      • ["abc"]

Réponse du suivi des conversions

La réponse du suivi des conversions se présente au format suivant :

{
  "ad_events": [<ad event objects>],
  "errors": [<error strings>],
  "attributed": true|false
}

Les tableaux ad_events et errors peuvent être vides.

Nous prévoyons que les erreurs seront des codes d'erreur lisibles par machine, par exemple invalid_timestamp.

Codes d'erreur

  • invalid_timestamp : la requête ne comportait pas de code temporel valide.

  • eea_missing_or_invalid : le champ "eea" n'était pas défini dans la requête ou n'était pas valide.

  • ad_user_data_missing : le champ de requête "ad_user_data" n'a pas été défini. Le champ "ad_user_data" est obligatoire pour toutes les demandes DMA concernées.

  • ad_user_data_invalid : la valeur de la requête "ad_user_data" n'était pas valide. Le champ "ad_user_data" est obligatoire pour toutes les demandes DMA concernées.

  • ad_personalization_missing_or_invalid : la requête ne comportait pas le champ "ad_personalization" ou il n'était pas valide. Le champ "ad_personalization" est obligatoire pour toutes les demandes concernant les ZMD.

Les événements d'annonce sont les objets principaux de l'attribution d'application. Ils contiennent les propriétés suivantes.

Remarques importantes concernant le comportement des réponses en fonction du consentement de l'utilisateur :
Si la conversion a obtenu le consentement de l'utilisateur pour les données publicitaires et que l'utilisateur a donné son consentement pour l'utilisation croisée dans ses paramètres utilisateur Google, Google Ads répondra avec un seul dernier clic dans tous ses CPS. Si l'utilisateur n'a pas donné son consentement pour l'utilisation croisée dans ses paramètres utilisateur Google, Google Ads répondra avec plusieurs derniers clics, sur une base de coût par souscription.

Si la conversion inclut certains CPS pour lesquels l'utilisateur a accordé l'autorisation d'utilisation croisée, mais pas d'autres, Google Ads répondra avec un seul dernier clic pour les CPS pour lesquels l'autorisation d'utilisation croisée a été accordée, mais avec plusieurs derniers clics, par CPS, pour ceux pour lesquels l'autorisation d'utilisation croisée n'a pas été accordée.

Réponse du suivi des conversions
ad_event_id

Toujours présent


chaîne


ad_event_id sert d'identifiant unique pour les événements publicitaires. Il est réutilisé dans la demande d'attribution multiréseau et doit être consigné/conservé à des fins de débogage.

Q2owS0VRancwZHk0QlJDdXVMX2U1TQ
conversion_metric

Toujours présent


chaîne


Métrique de conversion utilisée pour l'attribution. Dans un premier temps, nous n'accepterons qu'une seule métrique de conversion.

conversion
timestamp

Toujours présent


Total


Code temporel UNIX de l'événement publicitaire, en secondes, avec une précision pouvant aller jusqu'à la microseconde. Cette valeur doit être utilisée pour l'attribution au dernier clic.

1432681913.123456
campaign_type

Toujours présent


chaîne


Ce champ identifie le type de campagne qui a généré l'événement d'annonce. Voici les valeurs possibles :

ACI
ACE
ACPre
Search
Display
Video
Shopping
Hotel
Performance_Max
Other

ACI est l'abréviation de "Campagne pour applications axée sur les installations". ACE est l'abréviation de "Campagnes pour applications axées sur l'engagement".

campaign_id

Toujours présent


Total


ID numérique de la campagne ayant généré l'événement publicitaire. Cette valeur est unique.

123456789
campaign_name

Toujours présent


chaîne


Nom de la campagne défini par l'annonceur qui a généré l'événement publicitaire. Cette valeur n'est pas unique.

Occasional Gamers (Video)
ad_type

Toujours présent


chaîne


Type d'annonce ayant généré l'événement d'annonce. Cette valeur peut être utilisée pour distinguer différents types d'inventaire, comme suit.

Promotion d'applications
ClickToDownload
Engagement avec une application
AppDeepLink
Engagement dans l'application : flux "Installer et continuer"
AppDeepLinkContinue
Valeur générique pour les autres valeurs
Unknown
external_customer_id

Toujours présent


Total


Identifiant de l'annonceur propriétaire de la campagne ayant généré l'événement publicitaire. Cette valeur peut être utilisée pour différencier les comptes Google Ads.

123456789
location

Toujours présent


Total


Code d'ID de l'emplacement géographique de l'événement publicitaire. Consultez la documentation de référence de l'API Google Ads pour interpréter les codes de localisation.

network_type

Toujours présent


chaîne


Ce champ identifie le réseau publicitaire Google Ads sur lequel l'événement d'annonce s'est produit. Voici les valeurs possibles :

Search
Display
YouTube
GoogleTv
cross-network
network_subtype

La valeur sera null lorsque campaign_type est ACI ou ACE et que network_type est Display.


chaîne


Ce champ identifie le "sous-type" du réseau publicitaire Google Ads sur lequel l'événement publicitaire s'est produit. Les valeurs possibles varient en fonction du type de réseau principal.


Recherche Google ordinaire
GoogleSearch
Partenaires du Réseau de Recherche Google
SearchPartners

Écran

Éditeurs Web mobiles
mGDN
Éditeurs d'applications
Google AdMob

YouTube

Réseau de vidéos YouTube
YouTubeVideos
Réseau de Recherche YouTube
YouTubeSearch
Partenaires vidéo
VideoPartners

GoogleTv

Réseau de vidéos Google TV
GoogleTvVideos

multiréseau

Performance Max cross-network
cross-network
video_id

Fourni uniquement lorsque network_type est YouTube et que campaign_type n'est pas ACI et ACE.


chaîne


ID de la vidéo YouTube associée à l'événement publicitaire.

dQw4w9WgXcQ
keyword

Fourni uniquement lorsque network_type est Search et que campaign_type n'est pas ACI et ACE.


chaîne


Mot clé de recherche associé à l'événement publicitaire.

+food +delivery
match_type

Fourni uniquement lorsque network_type est Search et que campaign_type n'est pas ACI et ACE.


chaîne


Type de correspondance des mots clés pour le Réseau de Recherche.

Mot clé exact
e
Expression
p
Large
b
placement

Fourni uniquement lorsque network_type est Display et que campaign_type n'est pas ACI et ACE.


chaîne


Emplacement associé à l'événement publicitaire.

mobileapp::1-343200656
ad_group_id

Fourni uniquement lorsque campaign_type n'est pas Performance_Max.


Total


ID numérique du groupe d'annonces ayant généré l'événement d'annonce. Cette valeur est unique.

123456789
ad_group_name

Fourni uniquement lorsque campaign_type est défini sur ACI, ACE ou ACPRE.


chaîne


Nom du groupe d'annonces défini par l'annonceur et ayant généré l'événement d'annonce. Cette valeur n'est pas unique.

My App AdGroup
creative_id

Fourni uniquement lorsque campaign_type n'est pas ACI, ACE, ACPRE ou Performance_Max.


Total


ID numérique du bloc d'annonces de création qui a généré l'événement publicitaire. Cette valeur est unique.

123456789
interaction_type

Ce champ sera toujours "engagement".


chaîne

Exemples de réponses

Voici un exemple de réponse de suivi des conversions lorsque la requête contenait des erreurs :

{
  "ad_events": [],
  "errors": ["INVALID_CURRENCY_CODE"],
  "attributed": false
}

Voici un exemple de réponse négative au suivi des conversions :

{
  "ad_events": [],
  "errors": [],
  "attributed": false
}

Une réponse de suivi des conversions sera renvoyée pour toutes les demandes de suivi des conversions.

Voici un exemple de réponse de suivi des conversions affirmative pour un utilisateur hors EEE dans une campagne universelle pour applications :

{
  "ad_events": [{
    "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ",
    "conversion_metric": "conversion",
    "interaction_type": "engagement",
    "campaign_type": "ACI",
    "campaign_id": 123456789,
    "campaign_name": "My App Campaign",
    "ad_type": "ClickToDownload",
    "external_customer_id": 123456789,
    "location": 21144,
    "network_type": "Search",
    "network_subtype": "GoogleSearch",
    "video_id": null,
    "keyword": null,
    "match_type": null,
    "placement": null,
    "ad_group_id": null,
    "ad_group_name": "",
    "creative_id": null,
    "timestamp": 1432681913.123456
  }],
  "errors": [],
  "attributed": true,
  "warnings": []
}

Voici un exemple de réponse de suivi des conversions affirmative pour un utilisateur hors EEE pour une campagne sur le Réseau de Recherche :

{
  "ad_events": [{
    "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ",
    "conversion_metric": "conversion",
    "interaction_type": "engagement",
    "campaign_type": "Search",
    "campaign_id": 123456789,
    "campaign_name": "My App Campaign",
    "ad_type": "ClickToDownload",
    "external_customer_id": 123456789,
    "location": 21144,
    "network_type": "Search",
    "network_subtype": "GoogleSearch",
    "video_id": null,
    "keyword": "+space +birds",
    "match_type": "b",
    "placement": null,
    "ad_group_id": 123456789,
    "ad_group_name": "My App AdGroup",
    "creative_id": 123456789,
    "timestamp": 1432681913.123456
  }],
  "errors": [],
  "attributed": true,
  "warnings": []
}

Voici un exemple de réponse de suivi des conversions affirmative pour un utilisateur hors EEE pour une campagne display :

{
  "ad_events": [{
    "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ",
    "conversion_metric": "conversion",
    "interaction_type": "engagement",
    "campaign_type": "Display",
    "campaign_id": 123456789,
    "campaign_name": "My App Campaign",
    "ad_type": "ClickToDownload",
    "external_customer_id": 123456789,
    "location": 21144,
    "network_type": "Display",
    "network_subtype": "mGDN",
    "video_id": null,
    "keyword": null,
    "match_type": null,
    "placement": "mobile-app::2-343200656",
    "ad_group_id": 123456789,
    "ad_group_name": "My App AdGroup",
    "creative_id": 123456789,
    "timestamp": 1432681913.123456
  }],
  "errors": [],
  "attributed": true,
  "warnings": []
}

Voici un exemple de réponse affirmative pour le suivi des conversions d'une campagne YouTube destinée à un utilisateur hors EEE :

{
  "ad_events": [{
    "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ",
    "conversion_metric": "conversion",
    "interaction_type": "engagement",
    "campaign_type": "Video",
    "campaign_id": 123456789,
    "campaign_name": "My App Campaign",
    "ad_type": "ClickToDownload",
    "external_customer_id": 123456789,
    "location": 21144,
    "network_type": "YouTube",
    "network_subtype": "YouTubeVideos",
    "video_id": "dQw4w9WgXcQ",
    "keyword": null,
    "match_type": null,
    "placement": null,
    "ad_group_id": 123456789,
    "ad_group_name": "My App AdGroup",
    "creative_id": 123456789,
    "timestamp": 1432681913.123456
  }],
  "errors": [],
  "attributed": true,
  "warnings": []
}
{
  "ad_events": [{
    "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ",
    "conversion_metric": "conversion",
    "interaction_type": "click",
    "campaign_type": "ACI",
    "campaign_id": 123456789,
    "campaign_name": "My App Campaign",
    "ad_type": "ClickToDownload",
    "external_customer_id": 123456789,
    "location": 21144,
    "network_type": "Display",
    "network_subtype": "",
    "video_id": null,
    "keyword": null,
    "match_type": null,
    "placement": null,
    "ad_group_id": null,
    "ad_group_name": "",
    "creative_id": null,
    "timestamp": 1432681913.123456
  },
  {
    "ad_event_id": "I8YUwWqxvOyqcwOcqBAkYZBMaOONSd",
    "conversion_metric": "conversion",
    "interaction_type": "click",
    "campaign_type": "ACI",
    "campaign_id": 123456789,
    "campaign_name": "My App Campaign",
    "ad_type": "ClickToDownload",
    "external_customer_id": 123456789,
    "location": 21144,
    "network_type": "Search",
    "network_subtype": "",
    "video_id": null,
    "keyword": null,
    "match_type": null,
    "placement": null,
    "ad_group_id": null,
    "ad_group_name": "",
    "creative_id": null,
    "timestamp": 1432681913.123456
  },
  ],
  "errors": [],
  "warnings": [],
  "attributed": true
}
{
  "ad_events": [{
    "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ",
    "conversion_metric": "conversion",
    "interaction_type": "click",
    "campaign_type": "ACI",
    "campaign_id": 123456789,
    "campaign_name": "My App Campaign",
    "ad_type": "ClickToDownload",
    "external_customer_id": 123456789,
    "location": 21144,
    "network_type": "Display",
    "network_subtype": "",
    "video_id": null,
    "keyword": null,
    "match_type": null,
    "placement": null,
    "ad_group_id": null,
    "ad_group_name": "",
    "creative_id": null,
    "timestamp": 1432681913.123456
  },
  ],
  "errors": [],
  "warnings": [],
  "attributed": true
}
{
  "ad_events": [{
    "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ",
    "conversion_metric": "conversion",
    "interaction_type": "click",
    "campaign_type": "ACI",
    "campaign_id": 123456789,
    "campaign_name": "My App Campaign",
    "ad_type": "ClickToDownload",
    "external_customer_id": 123456789,
    "location": 21144,
    "network_type": "Display",
    "network_subtype": "",
    "video_id": null,
    "keyword": null,
    "match_type": null,
    "placement": null,
    "ad_group_id": null,
    "ad_group_name": "",
    "creative_id": null,
    "timestamp": 1432681913.123456
  },
  {
    "ad_event_id": "I8YUwWqxvOyqcwOcqBAkYZBMaOONSd",
    "conversion_metric": "conversion",
    "interaction_type": "click",
    "campaign_type": "ACI",
    "campaign_id": 123456789,
    "campaign_name": "My App Campaign",
    "ad_type": "ClickToDownload",
    "external_customer_id": 123456789,
    "location": 21144,
    "network_type": "Youtube",
    "network_subtype": "YouTubeVideos",
    "video_id": null,
    "keyword": null,
    "match_type": null,
    "placement": null,
    "ad_group_id": null,
    "ad_group_name": "",
    "creative_id": null,
    "timestamp": 1432681913.123456
  },
  ],
  "errors": [],
  "warnings": [],
  "attributed": true
}


Demande d'attribution multiréseau

Lorsque Google Ads répond positivement à une demande de suivi des conversions, le consommateur de l'API doit informer Google Ads de sa décision d'attribution cross-réseau après avoir identifié le dernier clic.

La demande d'attribution cross-network est identique à la demande de suivi des conversions d'origine, mais avec un chemin de requête de :

/pagead/conversion/app/1.0/cross_network

et l'ajout de deux paramètres obligatoires :

Demande d'attribution multiréseau
ad_event_id

Obligatoire


Emplacement : requête


Identifiant ad_event_id de l'événement publicitaire associé à l'attribution dans la requête précédente.

attributed

Obligatoire


Emplacement : requête


Indique si Google Ads a reçu le crédit pour la conversion par le consommateur de l'API. 0 ou 1.

Voici un exemple de demande d'attribution multiréseau valide :

POST /pagead/conversion/app/1.0/cross_network
       ?dev_token=Z_eErE4DkvcKjDM1OVE4c4
       &link_id=31FF8D67E5BB5DD5029DCC2734C2F884
       &app_event_type=custom
       &app_event_name=level_achieved
       &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D
       &id_type=idfa
       &lat=0
       &app_version=1.2.4
       &os_version=9.3.2
       &sdk_version=1.9.5r6
       &timestamp=1432681913.123456
       &value=1.99
       &currency_code=USD
       &ad_event_id=Q2owS0VRancwZHk0QlJDdXVMX2U1TQ
       &attributed=1
Host: www.googleadservices.com
User-Agent: MyAnalyticsCompany/1.0.0 (iOS 10.0.2; en_US; iPhone9,1; Build/13D15; Proxy)
X-Forwarded-For: 216.58.194.174
Content-Type: application/json; charset=utf-8

Une demande d'attribution cross-network valide recevra toujours une réponse 200 générique sans corps de réponse.