> ## Documentation Index
> Fetch the complete documentation index at: https://restoo.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Restoo Attribution Transfer

> Conserva la atribución de campaña y los identificadores de clic de los anuncios mientras el visitante navega por tu sitio, hasta que realice su reserva.

**Restoo Attribution Transfer es un pequeño script para tu sitio web que evita que la atribución se pierda antes de que el cliente reserve.**

El problema que resuelve es de lo más habitual: un anuncio deja al visitante en tu página de inicio con los parámetros de campaña y un identificador de clic en la URL, ese visitante navega por varias páginas y, cuando llega a tu página de reservas, esos parámetros ya no están en la barra de direcciones, así que la reserva se registra **sin ninguna atribución**, y la plataforma de anuncios nunca se entera de que su clic acabó en reserva.

Añade el script a **todas las páginas de tu sitio web** y esos parámetros se capturan allí donde aterrice el visitante y llegan con él hasta la página donde reserva. Funciona igual con el widget incrustado en tu web que si tus clientes reservan en tu página de Restoo. **No se guarda nada sin el permiso del visitante.**

## Qué conserva

Dos grupos de parámetros, separados porque alimentan dos atribuciones distintas:

| Grupo                | Parámetros                                                                                           | Quién los lee                                                                                                                       |
| -------------------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Campaña**          | `utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, `utm_content`                                | Restoo, en la reserva y en todos los eventos del widget: consulta [Atribución de campañas](/es/widget/attribution)                  |
| **Clic del anuncio** | `gclid`, `gbraid`, `wbraid` (Google Ads), `fbclid` (Meta), `ttclid` (TikTok), `oppref` (ChatGPT Ads) | El pixel de cada plataforma, que necesita su identificador en la dirección de la página donde se reserva para atribuirse el anuncio |

Por dónde viaja cada grupo depende de dónde reserve el cliente. Con el widget **incrustado en tu web**, la campaña llega al widget por sí sola —se la entrega Restoo.js— y los click ids se quedan en tu página, que es donde corren y los leen tus pixels. En **tu página de Restoo**, el script escribe los dos grupos en el enlace cuando el visitante lo sigue, de modo que el widget lee la campaña y los pixels que carga Restoo leen su click id de la dirección.

Cada grupo se reemplaza entero y no toca al otro: una campaña nueva sin click id conserva el click id guardado antes, y un click id nuevo sin campaña conserva la campaña. Un enlace a tu página de Restoo que ya declare su propia campaña la conserva y recibe igualmente los click ids; uno que ya lleve un click id, de la plataforma que sea, no recibe ningún otro.

## Instalación

<Steps>
  <Step title="Añade el script a todas las páginas de tu sitio web">
    Pégalo justo antes de tu etiqueta de cierre `</body>`.

    ```html theme={null}
    <script src="https://cdn.myrestoo.net/js/tracking/v1/restooAttributionTransfer.js"></script>
    ```

    <Note>
      **¿Por qué en todas las páginas?** No puedes saber en qué página va a aterrizar una
      campaña y, si el script no se está ejecutando ahí, esos parámetros no se guardan nunca:
      se pierden en cuanto el visitante pasa a la página siguiente.
    </Note>
  </Step>

  <Step title="Declara el consentimiento">
    Sin consentimiento el script no guarda nada. Hay dos formas de declararlo:

    <Tabs>
      <Tab title="Con data-restoo-cmp">
        Recomendado si tu [plataforma de consentimiento](/es/widget/consent#qué-es-una-plataforma-de-gestión-de-consentimiento) es una de las admitidas. La declaras con [`data-restoo-cmp`](#data-restoo-cmp) en el propio `<script>`.

        ```html theme={null}
        <script
          src="https://cdn.myrestoo.net/js/tracking/v1/restooAttributionTransfer.js"
          data-restoo-cmp="COOKIEBOT"
        ></script>
        ```
      </Tab>

      <Tab title="Con setConsent()">
        Tu aviso de cookies lo has montado tú, o tu plataforma no está admitida. Le informas tú la decisión con [`setConsent()`](#setconsent-signals), cuando el visitante acepte y cuando retire el consentimiento.

        ```html theme={null}
        <script src="https://cdn.myrestoo.net/js/tracking/v1/restooAttributionTransfer.js"></script>
        <script>
          // desde el callback de tu aviso de cookies, al aceptar y al retirar el consentimiento
          RestooAttributionTransfer.setConsent({ ad_storage: "granted" });
        </script>
        ```
      </Tab>
    </Tabs>
  </Step>
</Steps>

## Declarar el consentimiento

El consentimiento se declara de una de estas dos formas, y el script se comporta igual con cualquiera de ellas:

* [`data-restoo-cmp`](#data-restoo-cmp), un atributo del `<script>`: Restoo Attribution Transfer lee la decisión de tu [plataforma de consentimiento](/es/widget/consent#qué-es-una-plataforma-de-gestión-de-consentimiento).
* [`setConsent(signals)`](#setconsent-signals), un método: se la informas tú desde tu aviso de cookies.

Todo lo demás, capturar los parámetros de la URL y entregárselos al widget y al enlace, ocurre automáticamente.

### `data-restoo-cmp`

Atributo del `<script>`. Declara la [plataforma de gestión de consentimiento](/es/widget/consent#qué-es-una-plataforma-de-gestión-de-consentimiento) instalada en tu sitio web, de la que Restoo Attribution Transfer lee la decisión del visitante, también cuando la cambie más adelante. Una revocación leída de esa plataforma **elimina lo que estuviera guardado**.

```html theme={null}
<script
  src="https://cdn.myrestoo.net/js/tracking/v1/restooAttributionTransfer.js"
  data-restoo-cmp="COOKIEBOT"
></script>
```

**Valores**

<ParamField body="data-restoo-cmp" type="&#x22;COOKIEBOT&#x22; | &#x22;GOOGLE_CONSENT_MODE&#x22;">
  La plataforma de consentimiento de la que se lee la decisión. Si omites el
  atributo, el consentimiento llega únicamente a través de
  [`setConsent()`](#setconsent-signals).
  [Consentimiento](/es/widget/consent#declarar-tu-plataforma-de-consentimiento)
  explica qué cubre cada valor y de dónde lo lee.
</ParamField>

### `setConsent(signals)`

Informa tú la decisión del visitante, en vez de que Restoo Attribution Transfer la lea de tu plataforma. Llámalo desde tu aviso de cookies cuando el visitante acepte y cuando retire el consentimiento.

```js theme={null}
RestooAttributionTransfer.setConsent({ ad_storage: "granted" });
```

Informar `"denied"` **elimina todo lo que ya estuviera guardado**, así que retirar el permiso no necesita una llamada aparte.

```js theme={null}
RestooAttributionTransfer.setConsent({ ad_storage: "denied" });
```

**Parámetros**

<ParamField body="signals" type="object" required>
  Un objeto con la señal `ad_storage` del Consent Mode v2 de Google —el
  almacenamiento con fines publicitarios—, cuyo valor tiene que ser exactamente
  `"granted"` o `"denied"`. Es la única señal que usa este script: si le pasas el
  objeto de consentimiento entero de tu plataforma, las demás se descartan.
</ParamField>

## Qué necesita consentimiento

**Sin permiso no se pierde toda la atribución, solo el salto entre páginas.** Un visitante que llega del anuncio y reserva sin dar vueltas se atribuye igual, porque la campaña sigue en la dirección. El que pasa por varias páginas antes de reservar, no —y conservar eso es justo lo que este script aporta—. Con el clic del anuncio pasa lo mismo: el pixel lo lee gratis de la dirección en la que aterriza, y recordarlo para la página siguiente necesita el permiso. En [Atribución de campañas](/es/widget/attribution#consentimiento) puedes encontrar qué necesita consentimiento y qué no.

La pregunta la haces tú, no Restoo: el script corre en **tu propio dominio**, así que quien la plantea es tu [plataforma de consentimiento](/es/widget/consent#qué-es-una-plataforma-de-gestión-de-consentimiento) o tu propio aviso de cookies. Restoo solo recibe la respuesta.

Lo que guarda es siempre **la última campaña** y **el último clic**, cada grupo por su cuenta, y caduca a los 30 días: [el modelo completo](/es/widget/attribution#modelo-de-atribución).

## Siguientes pasos

<CardGroup cols={2}>
  <Card title="Atribución de campañas" icon="bullseye" href="/es/widget/attribution">
    La regla completa: last-touch, valores por defecto y el objeto `acquisition`.
  </Card>

  <Card title="Consentimiento" icon="shield-check" href="/es/widget/consent">
    Cómo declaras tu plataforma de consentimiento y qué desbloquea cada señal.
  </Card>
</CardGroup>
