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

# Verificar y depurar el SDK de navegador

> Confirma que el SDK de navegador de Scanova está bien instalado, que se envían eventos y que la atribución funciona, con una lista paso a paso en DevTools.

## Lista de verificación

Usa esta lista tras instalar el snippet para confirmar que todo funciona:

### 1. Comprobar la petición de red

1. Abre tu sitio en Chrome o Firefox
2. Abre las **DevTools** (F12 o clic derecho → Inspeccionar)
3. Ve a la pestaña **Network**
4. Filtra por `/ct`
5. Recarga forzando caché (Ctrl+Mayús+R / Cmd+Mayús+R)

Deberías ver una petición `POST` a `https://t.scanova.io/ct` con estado `200`.

### 2. Inspeccionar el payload

Haz clic en la petición `/ct` → pestaña **Payload**. Comprueba que:

* `site_id` coincide con el ID de tu sitio de seguimiento del panel
* `event_type` es `pageview` (si `autoPageview: true`)
* `scan_session_id` está presente (si entraste con un parámetro `?scnv=`)

**Ejemplo de payload correcto:**

```json theme={null}
{
  "event_id": "f9ac7db6-f900-4d8e-8918-c846834195a8",
  "site_id": "YOUR_SITE_ID",
  "event_type": "pageview",
  "scan_session_id": "7ad26d4f-3181-4ef8-b6ca-b8f59499dd43",
  "page_url": "https://yoursite.com/?scnv=7ad26d4f-3181-4ef8-b6ca-b8f59499dd43",
  "timestamp": "2026-05-13T10:00:00.000Z"
}
```

### 3. Probar la atribución del QR

Visita tu página con un parámetro `?scnv=` para simular un escaneo:

```
https://yoursite.com/?scnv=00000000-0000-0000-0000-000000000001
```

Revisa el payload: `scan_session_id` debe coincidir con el valor que usaste.

### 4. Activar el modo de depuración temporalmente

Añade `debug: true` a tu llamada de init y recarga. El SDK imprime toda su actividad en la consola:

```javascript theme={null}
scanova('init', 'YOUR_SITE_ID', { debug: true, autoPageview: true });
```

La salida de consola debería mostrar:

```
[QCG SDK] Initialized with Site ID: YOUR_SITE_ID
[QCG SDK] Loaded version 1.x.x
```

Quita `debug: true` antes de desplegar a producción.

***

## Errores habituales y cómo resolverlos

### No aparece ninguna petición `/ct`

| Causa                                                    | Solución                                                                               |
| -------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| El snippet no está en `<head>`                           | Pégalo antes de `</head>`, no en `<body>`                                              |
| El script está bloqueado por la CSP                      | Añade `https://cdn.scanova.io` y `https://t.scanova.io` a tu `Content-Security-Policy` |
| Un bloqueador o extensión bloquea la petición            | Prueba en una ventana privada con las extensiones desactivadas                         |
| `autoPageview: false` y ninguna llamada manual a `track` | Activa `autoPageview` o añade un evento manual                                         |
| Llamaste a `init` pero el SDK aún no ha cargado          | El SDK encola las llamadas previas a su carga; debería resolverse solo                 |

### `400` — Petición incorrecta

El `site_id` no es válido, está vacío o pertenece a un sitio inactivo. Comprueba que:

* Usas el `site_id` del sitio de seguimiento correcto del panel
* El sitio está activo (mira su estado en el panel)

### `403` — Dominio no permitido

El dominio de tu sitio no está en la lista **Allowed Domains** de este sitio de seguimiento.

1. Ve a **Análisis → Seguimiento de conversiones**
2. Selecciona tu sitio → haz clic en **Edit**
3. Añade el nombre de host exacto (por ejemplo `yoursite.com`, `www.yoursite.com`, `staging.yoursite.com`)
4. Guarda

<Note>
  La comprobación de dominio usa la cabecera `Origin` o `Referer` de la petición. Añade exactamente el nombre de host que aparece en la barra de direcciones: incluir o no `www` importa.
</Note>

### `422` — Error de validación

El payload del evento no pasó la validación. Causas habituales:

* Falta `event_type` o está vacío
* Un campo supera la longitud permitida
* `metadata` contiene una dirección de correo en claro: usa `user_identifiers` con un valor con hash
* `metadata` supera los 10 KB

### `429` — Límite de frecuencia superado

Tu sitio envía eventos más rápido de lo permitido (100 eventos por minuto y por IP en eventos de navegador). Es raro en uso normal. Si aparece en pruebas, espacia tus eventos de prueba.

### Los eventos salen en la red pero no en el panel

* Espera hasta 60 segundos: hay un pequeño retardo de procesamiento
* Confirma que estás mirando el sitio de seguimiento correcto en el panel
* Verifica que el `site_id` del payload coincide con el del panel

### No aparece ninguna petición `/ct` en una visita concreta

Si una visita no genera ninguna petición, lo más probable es que la persona llegara sin escanear un código QR: falta el parámetro `?scnv=`. Sin `scan_session_id`, el SDK no envía ningún evento. Es el comportamiento esperado: el SDK solo registra tráfico originado en un escaneo.

### Se disparan dos eventos por carga de página

Tienes a la vez `autoPageview: true` y una llamada manual a `scanova('track', 'page_view', ...)`. Elimina una. Consulta [Eventos automáticos](/es/conversion-tracking/browser/auto-tracking#page-view) para más detalles.
