Seguimiento de conversiones de aplicaciones y remarketing: especificaciones de solicitudes y respuestas

Usuario-agente de la app

Como parte de nuestros esfuerzos más amplios para combatir el spam, desarrollamos una especificación estandarizada para el encabezado User-Agent que envía un producto de análisis o de anuncios en nombre de un usuario de la app. El User-Agent de la app se puede derivar del código nativo para cumplir con la siguiente especificación:

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

La definición de estos campos es la siguiente:

Componentes de User-Agent
name

Es el nombre del producto de análisis o de anuncios. (Google AdMob)

Ten en cuenta que, si el usuario-agente se construye en el cliente, name debe ser el ID del paquete de la app cliente.


Android
// Specified by API consumer.

iOS
// Specified by API consumer.
version

Es la versión del producto de análisis o de anuncios. (7.10.1)


Android
// Specified by API consumer.

iOS
// Specified by API consumer.
os_and_version

El sistema operativo y la versión del sistema operativo en los que se ejecuta la app. (Android 6.0 )


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

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

Es una etiqueta de configuración regional de IETF para el dispositivo, que usa un código de idioma y país de dos letras separados por un guion bajo. (en_US)


Android
String locale = Locale.getDefault();

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

Es el nombre del dispositivo físico que ejecuta el producto de estadísticas o anuncios. (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/" seguido del número de compilación del sistema operativo (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];
}

Solo incluye ; Proxy al final del User-Agent de la app cuando compiles el User-Agent de la app en el servidor. Si el usuario-agente de la app se construye por completo en el cliente, excluye ; Proxy. Por lo tanto, el usuario-agente de una app podría ser el siguiente:

  • 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)

Guía de solicitudes de seguimiento de conversiones

El propósito de las solicitudes de seguimiento de conversiones es notificar a Google Ads sobre un evento de aplicación que se debe hacer un seguimiento como conversión o que se debe usar para completar una lista de remarketing, y recuperar metadatos que describan cualquier clic que precedió al evento.

Todas las llamadas a la API se realizan al dominio www.googleadservices.com. Las solicitudes de conversión son solicitudes POST a través de HTTPS en la siguiente ruta:

/pagead/conversion/app/version
, donde version es la versión prevista de la API de seguimiento de conversiones.

Una solicitud de conversión de aplicación estándar contendrá los siguientes parámetros para la versión 1.1 de la API de App Conversion.

Solicitud de seguimiento de conversiones
dev_token

Obligatorio


Ubicación: Consulta


Es el token de desarrollador único y estático que se emite para el consumidor de la API.

Z_eErE4DkvcKjDM1OVE4c4
link_id

Obligatorio


Ubicación: Consulta


Es el identificador de vínculo que une el token de desarrollador del consumidor de la API a una app específica.

31FF8D67E5BB5DD5029DCC2734C2F884
app_event_type

Obligatorio


Ubicación: Consulta


Es el nombre del evento de la app que ocurrió. Este campo es una enumeración y solo aceptará los siguientes valores:

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

El evento first_open siempre se debe enviar para atribuir instalaciones, y el evento session_start siempre se debe enviar para reatribuir sesiones. Usa in_app_purchase para las compras realizadas a través de la tienda de aplicaciones nativa y ecommerce_purchase para todas las demás compras.

app_event_name

Obligatorio en determinadas condiciones


Ubicación: Consulta


Es el nombre de cualquier evento de aplicación personalizado que no se acepta en el campo app_event_type. Este campo debe contener de 1 a 64 caracteres Unicode (con codificación UTF-8). Este campo es obligatorio si app_event_type es personalizado.

level_achieved
Level Achieved

Este campo no debe contener ninguno de los valores reservados para app_event_type. Si se usa un nombre de evento reservado, la API devolverá un error APP_EVENT_NAME_RESERVED_VALUE.

app_event_data

Opcional


Ubicación: Cuerpo


Reenvía cualquier dato adicional del evento enriquecido como un objeto JSON simple que asigne claves de cadena a valores. Los valores aceptables son las cadenas y los arrays de cadenas.

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

Obligatorio cuando se utiliza la medición de conversiones integrada en iOS


Ubicación: Consulta


Es el valor del parámetro de consulta info, que se captura cuando se instala o reinstala la app para iOS desde el SDK de datos de eventos de la Medición en el dispositivo (ODM) de Google. Este campo habilita la medición de conversiones integrada para las campañas de aplicaciones para iOS.

XYZr_AB8C-_zGtKjUhqtzPLeQ8lbJB5dADVR0tpZ9f-28sN5qN9GTZ_FztjL0OL
FzgxUJDhZr8w6lwGxAwPcxSwR5orjWepZiVP7sRRoCiaHerR-1TP17eJKtazgeSg
_CVEs13LllDTfrhVM8uWISqlg8dXobsLzmj8C7WrOlktHA5P_E23
id_type

Obligatorio


Es el tipo de identificador que se pasa en el campo rdid.


Android

advertisingid
appsetid

iOS

idfa
idfv
rdid

Obligatorio


Ubicación: Consulta


Es una cadena de UUID válida que representa el ID del dispositivo sin procesar.

f10e1de2-e237-4f50-b6aa-843c45cc63d6

En caso de que falte el ID del dispositivo, como el ID de un dispositivo de un usuario que no dio su consentimiento para el ATT, configúralo como todo ceros.

00000000-0000-0000-0000-000000000000
ctry_c

Obligatorio


Ubicación: Consulta


Es el código de país ISO de dos letras que indica el país desde el que se originó la conversión.

Este campo es obligatorio para habilitar la medición de conversiones de aplicaciones a nivel del usuario en iOS y Android.

US, IN
eea

Obligatorio en determinadas condiciones


Ubicación: Consulta


Es el alcance del EEE.

0: Los reglamentos europeos no se aplican a este usuario ni a esta conversión.

1: Los reglamentos europeos se aplican a este usuario y a esta conversión. Por ejemplo, si un usuario se encuentra en el EEE, está dentro del alcance de las reglamentaciones europeas aplicables.


*Required to be sent when the value is known.

ad_personalization

Obligatorio en determinadas condiciones


Ubicación: Consulta


Marcas para los anuncios personalizados

0: El usuario final rechazó el consentimiento para la personalización de anuncios

1: El usuario final otorgó el consentimiento para la personalización de anuncios


*Required to be sent when the value is known.

ad_user_data

Obligatorio en determinadas condiciones


Ubicación: Consulta


Es la marca de consentimiento para el uso de datos del usuario con fines publicitarios.

0: El usuario rechazó el consentimiento para la transmisión de datos a nivel del usuario a Google con fines publicitarios.

1: El usuario otorgó el consentimiento para la transmisión de datos a nivel del usuario a Google con fines publicitarios.


*Required to be sent when the value is known.

lat

Obligatorio


Ubicación: Consulta


Es el estado de limitar el seguimiento de anuncios para el dispositivo.

  • 0: El usuario no eligió limitar el seguimiento de anuncios.
  • 1: El usuario eligió limitar el seguimiento de anuncios.

app_version

Obligatorio


Ubicación: Consulta


Es la versión actual de la app, que debe estandarizarse de la siguiente manera.


Android

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

iOS

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

1.2.4
os_version

Obligatorio


Ubicación: Consulta


Es la versión actual del SO host de la app. Esto se debe estandarizar de la siguiente manera.


Android

android.os.Build.VERSION.RELEASE

iOS

[[UIDevice currentDevice] systemVersion]
sdk_version

Obligatorio


Ubicación: Consulta


Es la versión del SDK que midió el evento. Dado que se usa principalmente para la depuración, debe reflejar la versión de lanzamiento exactamente como se publica con los lanzamientos del SDK. Si la app no usa un SDK, pasa el mismo valor que app_version.

1.9.5r6
timestamp

Obligatorio


Ubicación: Consulta


Es la marca de tiempo de UNIX en la que se produjo el evento de conversión, en segundos con precisión de microsegundos.

1432681913.123456
fot

Obligatorio


Ubicación: Consulta


Es la marca de tiempo de UNIX del first_open correspondiente en segundos con precisión de microsegundos para todas las sesiones posteriores y los eventos posteriores a la instalación.

1432681913.123456
value

Opcional


Ubicación: Consulta


Es el valor monetario del evento, si corresponde. Siempre debe tener el formato de un valor de punto flotante legible por máquina con un punto decimal para separar la parte entera y la parte fraccionaria del valor.

1.99
currency_code

Obligatorio en determinadas condiciones


Ubicación: Consulta


Es el código de moneda ISO 4217 para el parámetro value. Este campo es obligatorio si se proporciona el parámetro value y no está en blanco.

USD
gclid

Obligatorio en determinadas condiciones


Ubicación: Consulta


Es el valor del parámetro de búsqueda gclid de una URL de vínculo directo que abrió la app.

Cj0KEQjw0dy4BRCuuL_e5M
market_referrer_gclid

Obligatorio en determinadas condiciones


Ubicación: Consulta


Es el valor del parámetro de búsqueda gclid de una URL de vínculo directo capturada del valor de install_referrer a través de la API de Play Install Referrer.

BX3QojHp4mY5MrJtFM_d1u
gclid_only_request

Obligatorio en determinadas condiciones


Ubicación: Consulta


Es el identificador para la atribución basada en gclid en situaciones en las que rdid (advertisingid) está disponible como not o todos los zeroes Y está presente gclid o market_referrer_gclid.

1
gbraid

Obligatorio en determinadas condiciones


Ubicación: Consulta


Valor de gbraid visto por última vez que se envió a través de la URL de vínculo directo que abrió la app. Ten en cuenta que este valor debe almacenarse en caché en la app para que se pueda enviar con las conversiones futuras que se produzcan en la app.

ChEI8IixhgYQrufHkIjz3YWRARIzALev_G_O
app_open_source

Obligatorio en determinadas condiciones


Ubicación: Consulta


Es el valor para identificar el vínculo directo del clic en el anuncio o las sesiones orgánicas de la aplicación.

ad_click or organic
User-Agent

Obligatorio


Ubicación: Encabezado


Es el usuario-agente de la app, como se definió en la sección anterior.

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

Obligatorio


Ubicación: Encabezado


Es la dirección IPv4 o IPv6 pública del dispositivo en el que se midió el evento.

216.58.194.174

Todas las solicitudes deben enviarse a través de HTTPS. Se rechazarán los pings recibidos a través de HTTP.

Ten en cuenta que, si el cuerpo de la solicitud está vacío (en los casos en que no se pasan datos de eventos enriquecidos en la carga útil de app_event_data), nuestro servidor requiere que establezcas de forma explícita el encabezado Content-Length: 0 en tu solicitud.

Codificación de datos de eventos

Para el parámetro del cuerpo app_event_data, usa las siguientes convenciones para los tipos de datos primitivos:

  • Float

    • Usa el carácter de punto como separador decimal, independientemente de la localización de la app
    • Usa una precisión decimal de dos dígitos para representar valores monetarios, p. ej., 2. 99.
    • No uses notación exponencial, p. ej., 2E+9.
    • No uses el carácter de coma para separar grupos de dígitos, p. ej., 1,000,000.
    • Ejemplos válidos:
      • -0.5
      • 2.99
      • 1000000.123
  • Número entero

    • Solo envía valores enteros sin dígitos decimales.
    • No uses el carácter de coma para separar grupos de dígitos, p. ej., 1,000,000.
    • Ejemplos válidos:
      • 1000
      • -11
      • 0
  • Fecha

    • Formato de fecha: aaaa-mm-dd
      • yyyy = año de cuatro dígitos, p.ej., 2016
      • mm = mes de dos dígitos, p.ej., 09 para septiembre
      • dd = día de dos dígitos, p.ej., 23 para el 23ᵉʳ día del mes
    • Siempre envía la cantidad de dígitos especificada anteriormente. Por ejemplo, si envías el valor de dd para el 5º día del mes, envía 05.
    • Ejemplos válidos:
      • "2016-09-23"
      • "1990-12-31"
  • Marca de tiempo

    • Formato de hora: Marca de tiempo de Unix/época en segundos definida en la zona horaria UTC con precisión de microsegundos
    • Ejemplos válidos:
      • 1478713087 para Wed, 09 Nov 2016 17:38:07 GMT
      • 1073513982.123000 para el mié., 07 de enero de 2004, 22:19:42.123 GMT
  • Arrays

    • Solo envía arrays de valores primitivos (cadenas, números y booleanos).
    • Ejemplos válidos:
      • [123, 456, 789]
      • ["abc"]

Solicitudes de muestra

A continuación, se muestra un ejemplo de una solicitud de primer acceso con el SDK de On Device Measurement: Event Data para la medición de conversiones integrada:

POST /pagead/conversion/app/1.1
       ?dev_token=Z_eErE4DkvcKjDM1OVE4c4
       &link_id=31FF8D67E5BB5DD5029DCC2734C2F884
       &app_event_type=first_open
       &odm_info=abcdEfadGdaf
       &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D
       &id_type=idfv
       &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
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

A continuación, se muestra un ejemplo de una solicitud de primer acceso sin el SDK de On Device Measurement: Event Data para la medición de conversiones integrada:

POST /pagead/conversion/app/1.1
       ?dev_token=Z_eErE4DkvcKjDM1OVE4c4
       &link_id=31FF8D67E5BB5DD5029DCC2734C2F884
       &app_event_type=first_open
       &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D
       &id_type=idfv
       &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
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

A continuación, se muestra un ejemplo de una solicitud posterior a la instalación con el SDK de datos de eventos de la medición en el dispositivo para la medición de conversiones integrada:

POST /pagead/conversion/app/1.1
       ?dev_token=Z_eErE4DkvcKjDM1OVE4c4
       &link_id=31FF8D67E5BB5DD5029DCC2734C2F884
       &app_event_type=first_open
       &odm_info=abcdEfadGdaf
       &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D
       &id_type=idfv
       &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
       &&fot=1432681913.123456
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

A continuación, se muestra un ejemplo de una solicitud de primer acceso sin el SDK de On Device Measurement: Event Data:

POST /pagead/conversion/app/1.1
       ?dev_token=Z_eErE4DkvcKjDM1OVE4c4
       &link_id=31FF8D67E5BB5DD5029DCC2734C2F884
       &app_event_type=first_open
       &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D
       &id_type=idfv
       &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
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

A continuación, se muestra un ejemplo de una solicitud de primer acceso para una conversión no determinística de Android para la versión 1.1 de la ACAPI:

POST /pagead/conversion/app/1.1
       ?dev_token=Z_eErE4DkvcKjDM1OVE4c4
       &link_id=31FF8D67E5BB5DD5029DCC2734C2F884
       &app_event_type=first_open
       &rdid=0F7AB11F-DA50-498E-B225-21AC1977A85D
       &id_type=appsetid
       &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
       &ctry_c=IN
Host: www.googleadservices.com
User-Agent: MyAnalyticsCompany/1.0.0 (android 11; en-GB; RMX2040; Build/_; Proxy)
X-Forwarded-For: 216.58.194.174
Content-Type: application/json; charset=utf-8

A continuación, se muestra un ejemplo de una solicitud de seguimiento de conversiones válida con un tipo de evento no personalizado y datos de ingresos:

POST /pagead/conversion/app/1.1
       ?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"]}}

A continuación, se muestra un ejemplo de una solicitud de seguimiento de conversiones válida con un tipo de evento no personalizado y información de ingresos con el rdid (advertisingid) no disponible:

POST /pagead/conversion/app/1.1
       ?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"]}}

Un ejemplo de una solicitud de inicio de sesión válida es el siguiente:

POST /pagead/conversion/app/1.1
       ?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

A continuación, se muestra un ejemplo de una solicitud de inicio de sesión reatribución válida para una sesión que comenzó desde el vínculo directo example://product/123?gclid=Cj0KEQjw0dy4BRCuuL_e5M:

POST /pagead/conversion/app/1.1
       ?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

A continuación, se muestra un ejemplo de una solicitud de seguimiento de conversiones válida para un usuario del EEE que otorgó el consentimiento para usar sus datos y rechazó la personalización de anuncios:

POST /pagead/conversion/app/1.1
       ?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

Guía de respuesta del seguimiento de conversiones

La respuesta del seguimiento de conversiones tiene el siguiente formato:

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

Los arrays ad_events y errors pueden estar vacíos.

Esperamos que los errores sean códigos de error legibles por máquina, p.ej., invalid_timestamp.

Códigos de error

  • invalid_timestamp: La solicitud no tenía una marca de tiempo válida.

  • eea_missing_or_invalid: La solicitud no tenía establecido el campo "eea" o no era válida.

  • ad_user_data_missing: No se configuró el campo de solicitud "ad_user_data". El campo "ad_user_data" es obligatorio para todas las solicitudes de DMA dentro del alcance.

  • ad_user_data_invalid: El valor de la solicitud "ad_user_data" no era válido. El campo "ad_user_data" es obligatorio para todas las solicitudes de DMA dentro del alcance.

  • ad_personalization_missing_or_invalid: La solicitud no tenía establecido el campo "ad_personalization" o no era válido. El campo "ad_personalization" es obligatorio para todas las solicitudes de DMA dentro del alcance.

Los eventos de anuncios son los objetos principales de la atribución de aplicaciones y contendrán las siguientes propiedades.

Notas importantes sobre el comportamiento de la respuesta según el consentimiento del usuario:
Si la conversión tiene el consentimiento de datos del usuario de anuncios y el usuario tiene el consentimiento de uso cruzado en su configuración de usuario de Google, Google Ads responderá con un solo último clic en todos sus CPS. Si el usuario no dio su consentimiento para el uso cruzado en la configuración de usuario de Google, Google Ads responderá con varios últimos clics, según el CPS.

Si la conversión incluye ciertos CPS en el consentimiento de uso cruzado seleccionado por el usuario, pero no otros, Google Ads responderá con un solo último clic en los CPS que tengan consentimiento de uso cruzado, pero con varios últimos clics, por CPS, para aquellos que no tengan consentimiento de uso cruzado.

Respuesta del seguimiento de conversiones
ad_event_id

Siempre presente


string


ad_event_id sirve como identificador único para los eventos de anuncios. Se reutiliza en la solicitud de atribución de redes múltiples y se debe registrar o conservar para fines de depuración.

Q2owS0VRancwZHk0QlJDdXVMX2U1TQ
conversion_metric

Siempre presente


string


Es la métrica de conversión que se utiliza para la atribución. Inicialmente, admitiremos una métrica de conversión.

conversion
timestamp

Siempre presente


número


Es la marca de tiempo de UNIX en la que se produjo el evento del anuncio, en segundos con precisión de microsegundos. Este valor se debe usar para la atribución de último clic.

1432681913.123456
campaign_type

Siempre presente


string


En este campo, se identificará el tipo de campaña que generó el evento del anuncio. Los valores posibles son los siguientes:

ACI
ACE
ACPre
Search
Display
Video
Shopping
Hotel
Performance_Max
Other

ACI es la abreviatura de Campaña para instalación de aplicación. ACE es la abreviatura de Campañas de participación en la aplicación.

campaign_id

Siempre presente


número


Es el ID numérico de la campaña que generó el evento del anuncio. Se garantiza que este valor es único.

123456789
campaign_name

Siempre presente


string


Es el nombre de la campaña definida por el anunciante que generó el evento del anuncio. No se garantiza que este valor sea único.

Occasional Gamers (Video)
ad_type

Siempre presente


string


Es el tipo de anuncio que generó el evento de anuncio. Este valor se puede usar para distinguir entre varios tipos de inventario de la siguiente manera.

Promoción de aplicaciones
ClickToDownload
Participación en la aplicación
AppDeepLink
Participación en la app: Flujo de instalación y continuación
AppDeepLinkContinue
Comodín para otros valores
Unknown
external_customer_id

Siempre presente


número


Es el identificador del anunciante que posee la campaña que generó el evento del anuncio. Este valor se puede usar para diferenciar las cuentas de Google Ads.

123456789
location

Siempre presente


número


Es el código de ID de la ubicación geográfica del evento del anuncio. Consulta la referencia de la API de Google Ads para interpretar los códigos de ubicación.

network_type

Siempre presente


string


En este campo, se identificará la red de publicidad de Google Ads en la que ocurrió el evento del anuncio. Los valores posibles son los siguientes:

Search
Display
YouTube
GoogleTv
cross-network
network_subtype

Será null cuando campaign_type sea ACI o ACE y network_type sea Display.


string


En este campo, se identificará el "subtipo" de la red publicitaria de Google Ads en la que se produjo el evento del anuncio. Los valores posibles varían según el tipo de red principal.


Búsqueda de Google normal
GoogleSearch
Socios de búsqueda de Google
SearchPartners

Display

Editores de la Web en dispositivos móviles
mGDN
Publicadores de aplicaciones
Google AdMob

YouTube

Red de videos de YouTube
YouTubeVideos
Red de Búsqueda de YouTube
YouTubeSearch
Socios de video
VideoPartners

GoogleTv

Red de videos de GoogleTV
GoogleTvVideos

en varias redes

Campaña de máximo rendimiento en múltiples redes
cross-network
video_id

Solo se proporciona cuando network_type es YouTube y campaign_type no es ACI ni ACE.


string


Es el ID de video de YouTube asociado al evento del anuncio.

dQw4w9WgXcQ
keyword

Solo se proporciona cuando network_type es Search y campaign_type no es ACI ni ACE.


string


Es la palabra clave de la búsqueda asociada con el evento del anuncio.

+food +delivery
match_type

Solo se proporciona cuando network_type es Search y campaign_type no es ACI ni ACE.


string


Es el tipo de concordancia para las palabras clave de búsqueda.

Exacta
e
Frase
p
Amplia
b
placement

Solo se proporciona cuando network_type es Display y campaign_type no es ACI ni ACE.


string


Es la posición asociada al evento del anuncio.

mobileapp::1-343200656
ad_group_id

Solo se proporciona cuando campaign_type no es Performance_Max.


número


Es el ID numérico del grupo de anuncios que se generó con el evento del anuncio. Este valor tiene la garantía de ser único.

123456789
ad_group_name

Solo se proporciona cuando campaign_type es ACI, ACE o ACPRE.


string


Es el nombre del grupo de anuncios definido por el anunciante que produjo el evento del anuncio. No se garantiza que este valor sea único.

My App AdGroup
creative_id

Solo se proporciona cuando campaign_type no es ACI, ACE, ACPRE o Performance_Max.


número


Es el ID numérico de la unidad de anuncios de la creatividad que generó el evento del anuncio. Este valor tiene la garantía de ser único.

123456789
interaction_type

Este campo siempre será de participación.


string

is_deterministic

Indica si el método de atribución es determinístico o no.


Booleano


true, false
device_model

Es el modelo del dispositivo que produjo el evento del anuncio.


String


sm-s936w, sm-3936w
os_version

Es la versión principal del SO que produjo el evento del anuncio.


String


14, 12
country

Es el código de país de dos letras que generó el evento del anuncio.


String


CA, US
city

Es la ciudad en la que se produjo el evento del anuncio.


String


san jose, london
region

Es el estado o la provincia en la que se produjo el evento del anuncio.


String


california, british columbia

Ejemplos de respuesta

A continuación, se muestra un ejemplo de respuesta para una conversión determinística:

{
  "ad_events": [{
    "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ",
    "conversion_metric": "conversion",
    "interaction_type": "engagement",
    "campaign_type": "ACI",
    "campaign_id": 123456789,
    "campaign_name": "My App Campaign",
    "network_type": null,
    "network_subtype": null,
    "ad_group_id": null,
    "ad_group_name": null,
    "is_deterministic": true
    "timestamp": 1234567.898765,
  }],
  "errors": [],
  "attributed": true
}

A continuación, se muestra un ejemplo de una respuesta para una conversión no determinística de iOS:

{
  "ad_events": [{
    "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ",
    "conversion_metric": "conversion",
    "interaction_type": "engagement",
    "campaign_type": "ACI",
    "campaign_id": 123456789,
    "campaign_name": "My App Campaign",
    "network_type": null,
    "network_subtype": null,
    "ad_group_id": null,
    "ad_group_name": null,
    "is_deterministic": false
    },
    "device_info": {
        "device_model": "iphone12,3",
        "os_version": "14",
    },
    "timestamp": 1432681918.123456
    }],
  "errors": [],
  "attributed": true
}

A continuación, se muestra un ejemplo de una respuesta para una conversión no determinística de Android:

{
  "ad_events": [
    {
      "ad_event_id": "Q2owS0VRancwZHk0QlJDdXVMX2U1TQ",
      "conversion_metric": "conversion",
      "interaction_type": "click",
      "campaign_type": "ACI",
      "campaign_id": 123456789,
      "campaign_name": "My App Campaign",
      "network_type": null,
      "network_subtype": null,
      "ad_group_id": null,
      "ad_group_name": null,
      "is_deterministic": false
      "geo_info": {
        "city": "san jose"
        "country": "US"
        "region": "california"
      },
      "device_info": {
          "device_model": "sm-s926u",
          "os_version": "14",
      },
      "timestamp": 1432681918.123456
    },
    ],
    "errors": [],
    "warnings" [],
  }

A continuación, se muestra un ejemplo de respuesta para una conversión de iOS o Android atribuida por gbraid:

{
  "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,
    "interaction_type": "engagement",
    "network_type": "NULL",
    "is_deterministic": true
    "timestamp": 0.000000,
  }],
  "errors": [],
  "attributed": true
  "warnings" [],
}

A continuación, se muestra un ejemplo de una respuesta del seguimiento de conversiones cuando la solicitud contenía errores:

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

A continuación, se muestra un ejemplo de una respuesta negativa del seguimiento de conversiones:

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

Se devolverá una respuesta de seguimiento de conversiones para todas las solicitudes de seguimiento de conversiones.

A continuación, se muestra un ejemplo de una respuesta afirmativa del seguimiento de conversiones para un usuario que no se encuentra en el EEE en el caso de una campaña de aplicaciones universal:

{
  "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": []
}

A continuación, se muestra un ejemplo de una respuesta afirmativa del seguimiento de conversiones para un usuario que no se encuentra en el EEE en el caso de una campaña de Búsqueda:

{
  "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": []
}

A continuación, se muestra un ejemplo de una respuesta afirmativa del seguimiento de conversiones para un usuario que no se encuentra en el EEE en el caso de una campaña de 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": []
}

A continuación, se muestra un ejemplo de una respuesta afirmativa del seguimiento de conversiones para un usuario que no se encuentra en el EEE en una campaña de YouTube:

{
  "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
}


Solicitud de atribución de varias redes

Cuando Google Ads responde de forma afirmativa a una solicitud de seguimiento de conversiones, el consumidor de la API debe notificar a Google Ads su decisión de atribución en múltiples redes después de identificar el último clic.

La solicitud de atribución en varias redes es idéntica a la solicitud original de seguimiento de conversiones, pero con una ruta de acceso de solicitud de:

/pagead/conversion/app/1.1/cross_network

y la adición de dos parámetros obligatorios:

Solicitud de atribución de varias redes
ad_event_id

Obligatorio


Ubicación: Consulta


Es el identificador ad_event_id del evento del anuncio asociado con la atribución en la solicitud anterior.

attributed

Obligatorio


Ubicación: Consulta


Indica si el consumidor de la API acreditó o no la conversión a Google Ads. 0 o 1

Un ejemplo de una solicitud de atribución entre varias redes válida es el siguiente:

POST /pagead/conversion/app/1.1/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

Una solicitud de atribución entre redes válida siempre recibirá una respuesta genérica 200 sin cuerpo de respuesta.