Track
Píxeles e integraciones de plataformasTutorialIntermedio

Conversiones de Google Ads desde el servidor: conversiones de clic, Enhanced Conversions y los campos de consentimiento

Cómo subir conversiones de clic a la API de Google Ads con gclid o identificadores con hash, qué deben contener conversionDateTime y los campos de consentimiento, y cómo validateOnly mantiene las pruebas fuera de los informes.

Por
Equipo editorial de Track
Publicado
Última revisión
Tiempo de lectura
4 min de lectura

Puntos clave

  • La etiqueta del navegador y la subida por API se refieren a la misma acción de conversión; la vía de la API hace posibles las ventas offline, los leads cualificados en el CRM y las correcciones por reembolso.
  • Cada conversión de clic necesita la acción de conversión, un conversionDateTime con desfase horario, un gclid/gbraid/wbraid o identificadores de usuario con hash, y los indicadores de consentimiento derivados de las finalidades del evento.
  • Enhanced Conversions espera SHA-256 de valores normalizados —correo en minúsculas y sin espacios sobrantes, con los puntos y los sufijos + de Gmail eliminados, teléfono en E.164— con userIdentifierSource FIRST_PARTY.
  • partialFailure informa de los errores por fila y validateOnly mantiene las pruebas fuera de los informes; deduplica las compras con el mismo ID de pedido y mantén los leads en acciones de conversión separadas.

Dos vías, una acción de conversión

Google Ads mide las conversiones de dos maneras:

  1. La etiqueta de Google en el navegadorgtag('event', 'conversion', { send_to: 'AW-XXXX/label', value, currency, transaction_id }), opcionalmente con Enhanced Conversions (user_data con correo electrónico, teléfono y dirección, con el hash aplicado por la etiqueta).
  2. Subidas de conversiones a través de la API de Google AdsConversionUploadService.UploadClickConversions, enviadas desde tu servidor.

Ambas se refieren a la misma acción de conversión. La vía de la API es la que hace posibles las ventas offline, los leads cualificados en el CRM y las correcciones por reembolso, y es la que sobrevive a las peticiones bloqueadas en el navegador.

La petición de subida

POST https://googleads.googleapis.com/v25/customers/{customerId}:uploadClickConversions con las cabeceras Authorization: Bearer <OAuth2>, developer-token y, cuando accedes a la cuenta a través de una cuenta de administrador, login-customer-id.

Cada ClickConversion necesita:

  • conversionAction — el nombre de recurso customers/{cid}/conversionActions/{id}
  • conversionDateTimeyyyy-mm-dd hh:mm:ss+|-hh:mm, con un desfase horario explícito
  • al menos una clave de atribución: gclid, gbraid, wbraid o userIdentifiers (Enhanced Conversions for Leads)
  • opcionalmente conversionValue con currencyCode, y orderId para la deduplicación
  • consent con adUserData y adPersonalization a GRANTED o DENIED

Establece partialFailure: true —la API informa entonces de los fallos por fila en lugar de rechazar el lote— y usa validateOnly: true para las pruebas. Una subida de solo validación demuestra que las credenciales, el token de desarrollador y el acceso a la cuenta funcionan sin registrar nada.

Enhanced Conversions: qué se hashea

Para userIdentifiers, Google espera SHA-256 de valores normalizados:

  • correo electrónico: sin espacios sobrantes, en minúsculas; en las direcciones de gmail.com y googlemail.com, elimina los puntos y los sufijos + antes de aplicar el hash
  • teléfono: E.164 (+ y prefijo de país) antes de aplicar el hash
  • nombre, apellidos, calle: en minúsculas, sin espacios sobrantes y después con hash
  • ciudad, provincia o estado, código postal, código de país: en texto plano

Cada objeto identificador lleva además userIdentifierSource: FIRST_PARTY. Una fila puede combinar varios identificadores; Google empareja con cualquiera de ellos.

Reglas de tiempo que provocan pérdidas silenciosas

  • La hora de la conversión debe ser posterior al clic y estar dentro de la ventana de conversión por clic de la acción de conversión. Subir una compra con una marca de tiempo anterior al clic devuelve CONVERSION_PRECEDES_CLICK.
  • Los clics de hace pocas horas pueden no ser aún emparejables (TOO_RECENT_CLICK). Reintentar más tarde es el comportamiento correcto; Track los trata como reintentables.
  • Los desfases horarios son obligatorios. 2026-09-03 10:15:00 sin +02:00 se rechaza.

Los campos de consentimiento no son opcionales en la práctica

Desde Consent Mode v2, las subidas sin consent.adUserData para tráfico del EEE quedan marcadas. Deriva los indicadores de las finalidades de consentimiento registradas con el evento: marketing → adUserData: GRANTED; marketing + personalización → adPersonalization: GRANTED; cualquier otro caso → DENIED. Nunca pongas «granted» por defecto solo porque el campo exista.

Deduplicación con la etiqueta del navegador

Usa el mismo transaction_id en la etiqueta de Google y orderId en la subida. Google deduplica las conversiones con el mismo ID de pedido para la misma acción de conversión, de modo que una compra vista tanto por la etiqueta como por el servidor cuenta una sola vez. Para leads sin pedido, mantén navegador y servidor en acciones de conversión distintas (por ejemplo «Lead (etiqueta)» y «Lead cualificado (CRM)») en lugar de intentar deduplicarlos.

Un flujo de pruebas que no contamina los informes

  1. Conecta la cuenta de Google mediante OAuth y valida: Track envía una subida de solo validación e informa de si se aceptan el token de desarrollador y el ID de cliente.
  2. Mapea purchase al ID de la acción de conversión.
  3. Envía un evento de prueba en el asistente. Mientras el destino esté en modo de prueba, cada subida usa validateOnly: true; la respuesta confirma la estructura del payload.
  4. Desactiva el modo de prueba, envía una compra real con un gclid reciente y comprueba Conversiones → Diagnóstico en Google Ads al día siguiente.

Errores habituales, descifrados

ErrorSignificadoSolución
UNAUTHENTICATEDtoken OAuth no válidovuelve a conectar la cuenta de Google
PERMISSION_DENIED / USER_PERMISSION_DENIEDsin acceso al ID de clientecomprueba login-customer-id y el acceso a la cuenta
DEVELOPER_TOKEN_NOT_APPROVEDel token solo permite cuentas de pruebasolicita el acceso básico
CLICK_NOT_FOUNDgclid desconocidoel clic es demasiado antiguo, es de otra cuenta o tiene un formato incorrecto
INVALID_CONVERSION_ACTION_TYPEla acción no es de tipo subidacrea una acción de conversión con origen «Subida desde clics»

Cada uno de estos errores aparece con su código en el depurador de eventos junto al payload enmascarado que lo produjo.

Fuentes primarias

Documentación y estándares en los que se basa este artículo.

  1. Google Ads API — Upload click conversionsdevelopers.google.com
  2. Google Ads API — Release notes and versionsdevelopers.google.com

¿Te ha resultado útil este artículo?

Editor responsable

Equipo editorial de Track

Producto e ingeniería

Las personas que construyen Track: ingenieros y analistas que trabajan a diario en tracking server-side, herramientas de consentimiento e integraciones de conectores.