> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/integration/es/brand-pages/brand-page-retailer-integration-guide/tracking-attribution.md).

# Seguimiento y atribución

## Cómo componer una URL de seguimiento

La respuesta proporciona tres fuentes para combinar:

* Nivel de página `trackers.impression`: por ejemplo, una impresión de página utiliza `type: "impression"` y `params` que incluye `ts` y `iabConsentString`.
* Compartido `trackingTemplates`: un conjunto de plantillas de URL `client`(relativas) y `server` (absolutas), que ya contienen parámetros de consulta de sesión y ubicación.
* Por nodo `trackers.click` y/o `trackers.addToCart` en un módulo, fila o elemento de galería: `type`+ `params` para ese evento específico (por ejemplo, `modId`, `rurl`, `productCode`).

### ¿Qué plantilla?

Utiliza el nodo `tracking.type` para buscar `trackingTypes.<type>`. Esto define las claves de `client.*` y `server.*` válidas para esa interacción (por ejemplo, para link: `client.clickRedirect`, `client.clickEvent`, `server.clickEvent)`.

### Cliente vs. Servidor

* Cliente (`trackingTemplates.client.*`): Los valores son rutas relativas (incluidas las cadenas de consulta). Antepón tu URL base de proxy inverso (`BASEURL`).
* Servidor (`trackingTemplates.server.`): Los valores son plantillas de URL absolutas en el Epsilon host de seguimiento. Compón la URL final de la misma manera que C2S: plantilla + `"&"` + `queryString(trackers.<slot>params)`.

{% hint style="info" %}
No cambies el host ni la ruta de la plantilla, y no envíes llamadas S2S a través de tu proxy inverso.
{% endhint %}

### Ejemplos resueltos (pseudocódigo)

#### Clic C2S para una CTA HERO

```
url = BASEURL + trackingTemplates.client.clickRedirect + "&" + queryString(trackers.click.params)
```

#### Impresión de página S2S

```
url = trackingTemplates.server.impressionEvent + "&" + queryString(trackers.impression.params)
```

#### S2S de añadir al carrito para una fila de productos

```
url = trackingTemplates.server.addToCartEvent + "&" + queryString(trackers.addToCart.params)
```

Sustitución de macros

* Reemplaza {TS} con la marca de tiempo actual en milisegundos, {RURL} con el destino codificado en URL, y `{TCF}` con la cadena TCF v2 actual de tu CMP antes de activar.
* Para añadir al carrito, sustituye también {QTY} con la cantidad absoluta de ese SKU en el carrito en el momento de la activación (no un delta), y {CONVERSION\_VALUE} con el valor monetario absoluto de esos elementos (cantidad × precio unitario, menos los descuentos aplicados).

{% hint style="info" %}

* Solo `trackingTemplates.client.impressionPixelUrls` son píxeles verdaderos (GIF 1×1).
  * `clickRedirect` es un punto de enlace de redirección 302.
  * `clickEvent` y `addToCartEvent` son beacons de eventos que devuelven 204 No Content.
    {% endhint %}

{% hint style="danger" %}
No actives C2S y S2S para el mismo evento lógico (por ejemplo, no envíes un evento de clic C2S y una notificación de clic S2S para el mismo clic).
{% endhint %}

## Seguimiento – Cliente a servidor (C2S)

El seguimiento C2S se implementa en el navegador mediante URL compuestas. Antepón `BASEURL` a las rutas en `trackingTemplates.client` y añade el `trackers.<slot>params` adecuado (consulta [Cómo componer una URL de seguimiento](#how-to-compose-a-tracking-url)).

Solo `client.impressionPixelUrls` son píxeles (GIF 1×1). Las otras plantillas de cliente no son píxeles:

* `client.clickRedirect`: punto de enlace de redirección 302. Epsilon registra el clic y redirige el navegador a la rurl decodificada. Utilízalo como un destino de navegación del navegador.
* `client.clickEvent`: **Beacon de evento** devuelve 204 No Content). Actívalo mediante `navigator.sendBeacon` or `fetch({ keepalive: true })`. No renderizar como `<img>`.
* `client.addToCartEvent`: **Beacon de evento** (devuelve 204). Utiliza el mismo patrón de activación que `clickEvent`.

### Pasos de implementación

1. Renderiza el contenido de la página de marca devuelto por la API.
2. Después de renderizar, activa los píxeles de impresión en el navegador (todas las entradas en `trackingTemplates.client.impressionPixelUrls`, como imágenes 1×1).
3. Cuando un usuario hace clic en un nodo rastreable, puedes:\
   (a) redirigir a través de la URL `client.clickRedirect` compuesta, o\
   (b) activar la URL `client.clickEvent` compuesta como un beacon de evento y navegar al destino tú mismo.\
   Utiliza una opción u otra por cada clic, no ambas.

### Píxel de impresión

Después de que se renderice la página de marca, activa cada ruta en `trackingTemplates.client.impressionPixelUrls` como una imagen de 1×1, (consulte[ Cómo componer una URL de seguimiento](#how-to-compose-a-tracking-url)).

```html
<img src="https://www.retailer.com/epsilon/tracking/v3/impression/pixel/brandpage_djog...?...&ts=1737485823910"
     width="1" height="1" style="display:none" />
```

Pasos:

1. Para cada cadena en `trackingTemplates.client.impressionPixelUrls`, anteponga su `BASEURL` (por ejemplo, `https://www.retailer.com/epsilon`).
2. Añada `&` + `queryString(trackers.impression.params)`, sustituyendo `{TS}` con la marca de tiempo en milisegundos actual y `{TCF}` con la cadena de consentimiento actual de su CMP.
3. Active como un 1×1 `< img src="...">` en el navegador (o equivalente).

### Rastreo de clics

#### Opción A: Redirección de clic (`client.clickRedirect`)

Navegue al usuario a través de la URL compuesta. Epsilon registra el clic y responde con **HTTP 302** al decodificado `rurl`. Este endpoint es **solo GET**, y `rurl` es obligatorio;

#### Opción B: Beacon de evento de clic (`client.clickEvent`)

Active como un beacon y navegue usted mismo. Acepta GET o POST, devuelve 204 No Content. No es una imagen; no la renderice como`<img>`.

### Añadir al carrito (C2S)

Active `trackingTemplates.client.addToCartEvent` como un beacon de evento (no un píxel) cuando el usuario añada un producto al carrito. Acepta GET o POST, devuelve 204 No Content.

{% hint style="info" %}
No combine el añadido al carrito C2S y S2S para la misma acción de carrito.
{% endhint %}

## Rastreo – Servidor a servidor (S2S)

El rastreo S2S se implementa en su backend. Componga las URL de la misma manera que C2S: comience desde la cadena `trackingTemplates.server` adecuada, luego añada `trackers.<slot>params`. Las plantillas de servidor ya son absolutas; no hay `BASEURL`que anteponer. (consulte [Cómo componer una URL de seguimiento](#how-to-compose-a-tracking-url)).

{% hint style="info" %}
No cambie el host ni la ruta de la plantilla de servidor, y no envíe peticiones S2S a través de su proxy inverso.
{% endhint %}

### Cuándo usar el rastreo S2S

* Su arquitectura requiere la activación de eventos en el lado del servidor.
* Necesita rastreo en entornos donde los píxeles en el lado del cliente no son fiables.
* Desea combinar estrategias, p. ej., impresiones C2S + añadido al carrito S2S. Esto es compatible, pero nunca active C2S y S2S para el mismo evento.

### Notificación de impresión S2S

Después de que se renderice la página de la marca, su servidor emite un **GET** o **POST** a la URL de impresión compuesta: `trackingTemplates.server.impressionEvent` + `trackers.impression.params` (sustituya `{TS}` y `{TCF}` antes de enviar).

### Notificación de clic S2S

Componga: `trackingTemplates.server.clickEvent` + `trackers.click.params` (sustituya `{TS}`, {RURL}, y `{TCF}`), luego emita GET o POST.

### Notificación de añadido al carrito S2S

Componga: `trackingTemplates.server.addToCartEvent` + `trackers.addToCart.params` (sustituya `{TS}`, {QTY}, {CONVERSION\_VALUE}, y `{TCF}`), luego emita GET o POST.

### Parámetros S2S

| Parámetro                                                                           | Origen                                  | Notas                                                                                                                                                |
| ----------------------------------------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `catalogId`, `sessionId`, `customerId`, `dtmId`, `placementId`, `lsid`, `utcOffset` | `trackingTemplates` cadenas de consulta | Conserve estos valores tal cual al activar la petición. No los elimine ni los modifique.                                                             |
| `modId`                                                                             | `trackers.<slot>.params`                | Módulo de contenido u identificador de fila.                                                                                                         |
| `ts`                                                                                | `trackers.<slot>.params`                | Reemplace `{TS}` con la marca de tiempo actual en milisegundos antes de activar la petición.                                                         |
| `iabConsentString`                                                                  | `trackers.<slot>.params`                | Reemplace `{TCF}` con la cadena de consentimiento TCF v2 actual del CMP antes de activar la petición. Si ya se proporciona un valor, úselo tal cual. |
| `rurl`                                                                              | `trackers.<slot>.params`                | Destino de redirección codificado en URL. Reemplace `{RURL}` cuando esté presente.                                                                   |
| `productCode`, `sellerId`                                                           | `trackers.<slot>.params`                | Valores derivados de nodos de producto.                                                                                                              |
| `qty`                                                                               | `trackers.addToCart.params`             | Reemplace `{QTY}` con la cantidad absoluta de la SKU en el carrito en el momento en que se activa la petición. No use el incremento de cantidad.     |
| `conVal`                                                                            | `trackers.addToCart.params`             | Reemplace `{CONVERSION_VALUE}` con el valor monetario total de los artículos (cantidad × precio unitario, menos cualquier descuento aplicable).      |

## Referencia de macros

| Símbolo                | Descripción                                                                                                                                       | Encontrado en                             | Sustituir con                                                                       |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ----------------------------------------------------------------------------------- |
| `BASEURL` (su prefijo) | URL base de su sitio con protocolo y ruta proxy: anteponer a cada `trackingTemplates.client.*` ruta.                                              | Rastreo C2S                               | `https://www.retailer.com/epsilon`                                                  |
| `{TS}`                 | Marca de tiempo para evitar el almacenamiento en caché (milisegundos)                                                                             | `trackers.<slot>.params`                  | `1737485823910`                                                                     |
| `{RURL}`               | Destino de redirección codificado en URL                                                                                                          | `trackers.<slot>.params.rurl`             | `https%3A%2F%2Fwww.retailer.com%2Fprodukt%2F9221200653341`                          |
| `{TCF}`                | Marcador de posición de la cadena de consentimiento IAB TCF v2. Presente cuando `regs.consent` se omitió en la solicitud.                         | `trackers.<slot>.params.iabConsentString` | Cadena TC actual de su CMP, p. ej., a través de `__tcfapi` `getTCData` → `tcString` |
| `{QTY}`                | Cantidad absoluta de este SKU en el carrito al momento del disparo (no es un delta; p. ej., si el comprador tenía 1 y añade otro, envíe `2`).     | `trackers.addToCart.params.qty`           | `2`                                                                                 |
| `{CONVERSION_VALUE}`   | Valor monetario absoluto de esos artículos: cantidad × precio unitario, menos los descuentos aplicados.                                           | `trackers.addToCart.params.conVal`        | `49.99`                                                                             |
| `{RURL_KID}`           | ID de clave de firma de redirección. Presente en `trackers.click.redirectParams` cuando la firma de redirección de la plataforma está habilitada. | `trackers.click.redirectParams.rurlKid`   | ID de clave de firma devuelto por el punto de conexión de firma por lotes           |
| `{RURL_SIG}`           | Firma de redirección. Presente en `trackers.click.redirectParams` cuando la firma de redirección de la plataforma está habilitada.                | `trackers.click.redirectParams.rurlSig`   | Firma Ed25519 (base64url) devuelta por el punto de conexión de firma por lotes      |

### Referencia de codificación URL

Al codificar `{RURL}`, use la codificación porcentual estándar:

| Carácter | Codificar como |
| -------- | -------------- |
| `:`      | `%3A`          |
| `/`      | `%2F`          |
| `?`      | `%3F`          |
| `=`      | `%3D`          |
| `&`      | `%26`          |

### redirectParams y firma de redirección

Cuando la firma de redirección de la plataforma está habilitada, `trackers.click` puede incluir un `redirectParams`objeto junto a `params`. Las claves en `7`se fusionan solo en `client.clickRedirect` URL, no en `clickEvent`ni en ninguna URL de servidor.

Dos casos:

**Destinos de enlaces incrustados** (URL integrada en `params.rurl`): la plataforma firma la redirección en el momento de la entrega y emite valores literales `rurlKid`y `rurlSig`en `redirectParams`. Añada estos tal cual a la `clickRedirect` URL.

**Redirecciones controladas por el minorista** (`params.rurl` es {RURL}): `redirectParams` contiene las macros {RURL\_KID} y {RURL\_SIG}. Llame al punto de conexión de firma por lotes (`redirectSigning.url` desde la respuesta) para obtener el id de clave y la firma para su URL de destino, luego sustituya antes de añadir.

El objeto de nivel superior `redirectSigning`, cuando está presente, proporciona la URL del punto de conexión de firma por lotes `POST /ads/v3/redirect/sign` y el límite de lotes de `maxUrls`. Contacte con Epsilon para confirmar si la firma de redirección está habilitada para su integración.

### Composición de clickRedirect con redirectParams:

```
BASEURL + trackingTemplates.client.clickRedirect + "&" + queryString(trackers.click.params) + "&" + queryString(trackers.click.redirectParams)
```

<br>

## Guía de estilo

Antes de habilitar Páginas de marca en su sitio, necesitamos capturar la identidad visual de su sitio. Complete la siguiente tabla con sus valores de diseño. Nuestro equipo la usará para configurar la experiencia de vista previa de la página de marca.

#### Logotipo

| Campo            | Descripción                              | Su valor |
| ---------------- | ---------------------------------------- | -------- |
| URL del logotipo | URL del logotipo de su sitio (SVG o PNG) |          |

#### Colores

| Campo                       | Descripción                                                 | Su valor |
| --------------------------- | ----------------------------------------------------------- | -------- |
| Color principal             | Color de marca principal (hex)                              |          |
| Color de fondo              | Color de fondo de la página (hex)                           |          |
| Color de superficie         | Color de fondo de tarjeta/sección (hex)                     |          |
| Color de texto principal    | Color de texto principal (hex)                              |          |
| Color de texto secundario   | Color de texto atenuado (hex)                               |          |
| Texto sobre color principal | Color de texto utilizado en fondos de color principal (hex) |          |
| Color de borde              | Color de borde predeterminado (hex)                         |          |

#### Tipografía

| Campo                              | Descripción                                                                   | Su valor |
| ---------------------------------- | ----------------------------------------------------------------------------- | -------- |
| Familia tipográfica de encabezados | Tipografía utilizada para los encabezados (p. ej., "Google Sans, sans-serif") |          |
| Familia tipográfica del cuerpo     | Tipografía utilizada para el texto del cuerpo (p. ej., "Roboto, sans-serif")  |          |
| Tamaño de fuente base              | Tamaño de fuente del cuerpo por defecto (p. ej., 16px)                        |          |

#### Botones

| Campo                              | Descripción                                                         | Su valor |
| ---------------------------------- | ------------------------------------------------------------------- | -------- |
| Fondo del botón primario           | Color de fondo para los botones primarios                           |          |
| Color de texto del botón primario  | Color de texto para los botones primarios                           |          |
| Radio del borde del botón primario | Redondeo de esquinas (p. ej., 8px)                                  |          |
| Estilo del botón secundario        | Describa la apariencia del botón secundario (contorno, ghost, etc.) |          |

## Requisitos de contenido del módulo

Las páginas de marca se componen de módulos de contenido. Para cada tipo de módulo, proporcione las restricciones de contenido que requiere su sitio. Nuestro equipo las utilizará para configurar las reglas de validación de plantillas.

### Módulos de IMAGEN

| Requisito                         | Descripción                                                            | Su valor |
| --------------------------------- | ---------------------------------------------------------------------- | -------- |
| Ancho mínimo                      | Ancho mínimo de la imagen en píxeles (p. ej., 1920)                    |          |
| Alto mínimo                       | Alto mínimo de la imagen en píxeles (p. ej., 500)                      |          |
| Tamaño máximo de archivo          | Tamaño máximo de archivo en MB (p. ej., 10). Debe ser inferior a 4 MB. |          |
| Formatos aceptados                | Formatos de imagen aceptados (p. ej., jpg, png, gif, svg)              |          |
| Caracteres máximos de pie de foto | Máximo de caracteres para el pie de foto de la imagen, si corresponde  |          |
| `alt`Opcionalidad de etiqueta     | Si `alt` es obligatorio en las imágenes.                               |          |

### Módulos de TEXTO

| Requisito                                   | Descripción                                                                                                                                                                                                                                                                | Su valor |
| ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| Variante                                    | “headline”, “tagline”, “body” o “lines”. Determina el estilo en el que se muestra el texto.                                                                                                                                                                                |          |
| Alineación                                  | “left”, “center” o “right”. Determina la alineación horizontal del texto.                                                                                                                                                                                                  |          |
| Configuración de “Lines”                    | <p>Configuración para la configuración de texto multilínea (cuando variant = lines). Para cada línea de texto, proporcione lo siguiente:<br><br>– nombre del campo de texto<br>– ¿“required” o “allowed”?<br>– si este está destinado a ser un hipervínculo a otra URL</p> |          |
| Caracteres máximos del titular              | Máximo de caracteres para el texto del titular                                                                                                                                                                                                                             |          |
| Caracteres máximos de la descripción        | Máximo de caracteres para el texto de la descripción                                                                                                                                                                                                                       |          |
| Caracteres máximos del cuerpo/pie de página | Máximo de caracteres para el texto del cuerpo o del pie de página                                                                                                                                                                                                          |          |
| Botón CTA                                   | ¿Obligatorio, opcional o no necesario?                                                                                                                                                                                                                                     |          |
| Caracteres máximos del texto de CTA         | Máximo de caracteres para la etiqueta del botón CTA                                                                                                                                                                                                                        |          |

### Módulos PRODUCT\_GRID

| Requisito                                                   | Descripción                                                   | Su valor |
| ----------------------------------------------------------- | ------------------------------------------------------------- | -------- |
| Mínimo de productos                                         | Número mínimo de productos a mostrar (p. ej., 4)              |          |
| Máximo de productos                                         | Número máximo de productos a mostrar (p. ej., 12)             |          |
| Título de la sección                                        | ¿Obligatorio u opcional?                                      |          |
| Caracteres máximos del título de la sección                 | Máximo de caracteres para el título de la sección             |          |
| Descripción de la sección                                   | ¿Obligatorio u opcional?                                      |          |
| Número máximo de caracteres de la descripción de la sección | Número máximo de caracteres para la descripción de la sección |          |
| Botón CTA                                                   | ¿Obligatorio, opcional o no necesario?                        |          |

### Módulos IMAGE\_GALLERY

El módulo Galería de imágenes hereda las mismas propiedades de configuración que el módulo IMAGE. Además, también acepta las siguientes propiedades específicas de la galería:

| Requisito                              | Descripción                                                                                                                                                                                                                                                  | Su valor |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- |
| Imágenes mínimas                       | Número mínimo de imágenes de la galería (p. ej., 2)                                                                                                                                                                                                          |          |
| Imágenes máximas                       | Número máximo de imágenes de la galería (p. ej., 4)                                                                                                                                                                                                          |          |
| Título de la sección                   | Indica si el texto del título de la sección es obligatorio u opcional.                                                                                                                                                                                       |          |
| Descripción de la sección              | Indica si el texto de la descripción de la sección es obligatorio u opcional.                                                                                                                                                                                |          |
| `alt` Opcionalidad de etiqueta         | Si `alt` es obligatorio en las imágenes.                                                                                                                                                                                                                     |          |
| Opcionalidad de la llamada a la acción | Indica si el botón o enlace de llamada a la acción es obligatorio, está permitido o está deshabilitado.                                                                                                                                                      |          |
| Líneas de texto adicionales            | <p>Para cada texto adicional que se vaya a asociar con cada imagen de la galería de imágenes, proporcione lo siguiente:<br><br>– nombre del campo de texto<br>– ¿“required” o “allowed”?<br>– si el texto debe funcionar como un hipervínculo a otra URL</p> |          |

### Módulos SPLIT\_LAYOUT

El módulo Split Layout permite mostrar dos módulos uno al lado del otro. Actualmente, solo se admiten módulos de texto e imagen. Además de la configuración individual para los módulos de texto e imagen (descrita en las secciones anteriores), se requieren las siguientes propiedades adicionales:

| Requisito             | Descripción                                  | Su valor |
| --------------------- | -------------------------------------------- | -------- |
| Proporción del diseño | Proporción de columna (50:50, 33:67 o 67:33) |          |

## Identidad y privacidad

### Identificadores aceptables

* Session ID: identificador de sesión anónimo (sin PII)
* Customer ID: identificador de cliente del minorista (sin PII, p. ej., hash de ID de fidelización)

{% hint style="danger" %}
No pase direcciones de correo electrónico con hash, números de teléfono ni ninguna PII en ningún parámetro o URL.
{% endhint %}

### Requisitos de privacidad

Los minoristas deben:

* Divulgar el seguimiento de mediciones en su política de privacidad
* Proporcionar enlaces de exclusión voluntaria:
  * NAI: <https://optout.networkadvertising.org/>
  * DAA: <https://optout.aboutads.info/>

### RGPD / Consentimiento

Pase el `regs`objeto en `POST /ads/v3/brand-pages`:

* `regs.gdpr`: `1` cuando la solicitud esté sujeta al RGPD (tratamiento de UE/EEE/Reino Unido según su política); `0`de lo contrario.
* `regs.consent`: Cuando `gdpr` is `1`pass la cadena de consentimiento actual de TCF v2 desde su CMP (el mismo valor que mostraría a otros socios publicitarios). No invente ni escriba en código rígido una cadena; use aquello para lo que el navegador/aplicación del usuario haya dado su consentimiento.
* `iabConsentString` Apple en cada parámetro del espacio del rastreador, no en `trackingTemplates`. Cuando `regs.consent` se proporcionó, el valor es la cadena literal de TC y no se requiere ninguna otra acción.
* Cuando `regs.consent` se omitió, el valor es la macro `{TCF}`— sustituya la cadena actual de TCF v2 desde su CMP en el momento del disparo antes de enviar cualquier solicitud de seguimiento.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.citrusad.com/retail-media-interface/integration/es/brand-pages/brand-page-retailer-integration-guide/tracking-attribution.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
