> ## 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.

# Eventos de servidor

> Envía eventos de conversión de forma segura desde tu backend — compras, registros y leads — atribuidos al escaneo del código QR que dio inicio al recorrido.

Los eventos de servidor permiten que tu backend informe de conversiones directamente a la API de seguimiento de Scanova mediante una clave de API. A diferencia de los eventos del navegador, los eventos de servidor no los pueden bloquear los bloqueadores de anuncios, no se ven afectados por las restricciones del navegador y transportan datos de atribución sensibles de forma segura.

## Cuándo usar eventos de servidor

| Usa eventos del navegador                | Usa eventos de servidor                    |
| ---------------------------------------- | ------------------------------------------ |
| Vistas de página y navegación            | Confirmaciones de compra                   |
| Clics y profundidad de desplazamiento    | Activaciones de suscripción                |
| Interacciones con campos de formulario   | Creación de leads en tu CRM                |
| Cualquier acción visible en el navegador | Verificaciones de correo al registrarse    |
| —                                        | Cualquier acción que ocurra en el servidor |

Combina ambos para tener la imagen más completa: el SDK del navegador sigue el recorrido y tu servidor informa de cuándo se produjo realmente una conversión.

## Cómo funciona la atribución en el servidor

El `scan_session_id` es el vínculo de atribución entre un escaneo de código QR y un evento de servidor. Este es el flujo habitual:

```
El usuario escanea el código QR
    ↓
Llega a yoursite.com/?scnv=7ad26d4f-...
    ↓
El SDK guarda scan_session_id en localStorage
    ↓
El usuario completa un formulario de compra
    ↓
El navegador envía scan_session_id a tu API de pago
    ↓
Tu servidor envía un evento purchase con ese scan_session_id
    ↓
Scanova atribuye la compra al escaneo del código QR
```

**Tu responsabilidad:** pasar el `scan_session_id` del navegador a tu servidor. Las formas habituales de hacerlo son:

* Incluirlo en un campo de formulario oculto
* Enviarlo en el cuerpo de la petición a tu API desde el JavaScript del frontend
* Guardarlo en la sesión del usuario en tu servidor (leyéndolo del parámetro de la URL al cargar la página)

```javascript theme={null}
// Read from SDK (browser-side)
// Note: _scnv is the SDK's internal storage key — structure may change.
// Use this pattern only if no higher-level SDK method is available.
const scanSessionId = localStorage.getItem('_scnv')
  ? JSON.parse(localStorage.getItem('_scnv')).sid
  : null;

// Include in your API call to your backend
await fetch('/api/checkout', {
  method: 'POST',
  body: JSON.stringify({ ...orderData, scan_session_id: scanSessionId })
});
```

## Requisitos

* Un sitio de seguimiento creado en **Análisis → Seguimiento de conversiones**
* Una clave de API limitada al sitio (generada en la pestaña **Configuración de seguimiento → Rastrear vía API** del sitio)
* Que tu servidor pueda hacer peticiones POST HTTPS salientes
* Una forma de recibir el `scan_session_id` desde el navegador del usuario

## Requisitos de seguridad

* **Nunca expongas tu clave de API en código del frontend ni en JavaScript del lado del cliente**
* Guarda la clave en una variable de entorno o en un gestor de secretos
* Rota las claves periódicamente desde el panel

## Siguientes pasos

<CardGroup cols={2}>
  <Card title="Generar una clave de API" icon="key" href="/es/conversion-tracking/server/generate-api-key-dashboard">
    Crea desde el panel una clave de API limitada a un sitio.
  </Card>

  <Card title="Enviar eventos" icon="paper-plane" href="/es/conversion-tracking/server/send-events">
    Ejemplos de código en cURL, Node.js, Python y PHP.
  </Card>

  <Card title="Idempotencia y reintentos" icon="rotate" href="/es/conversion-tracking/server/idempotency-retries">
    Cómo reintentar peticiones fallidas sin riesgo.
  </Card>

  <Card title="Verificar la entrega" icon="check" href="/es/conversion-tracking/server/verify">
    Comprueba que tus eventos se están recibiendo.
  </Card>
</CardGroup>
