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

# Vérifier et déboguer le SDK navigateur

> Confirmez que le SDK navigateur Scanova est bien installé, que les événements partent et que l'attribution fonctionne, avec une liste pas à pas dans DevTools.

## Liste de vérification

Utilisez cette liste après l'installation du snippet pour confirmer que tout fonctionne :

### 1. Vérifier la requête réseau

1. Ouvrez votre site dans Chrome ou Firefox
2. Ouvrez les **DevTools** (F12 ou clic droit → Inspecter)
3. Allez à l'onglet **Network**
4. Filtrez sur `/ct`
5. Rechargez en forçant le cache (Ctrl+Maj+R / Cmd+Maj+R)

Vous devriez voir une requête `POST` vers `https://t.scanova.io/ct` avec le statut `200`.

### 2. Inspecter le payload de la requête

Cliquez sur la requête `/ct` → onglet **Payload**. Vérifiez que :

* `site_id` correspond à l'ID de votre site de suivi dans le tableau de bord
* `event_type` vaut `pageview` (si `autoPageview: true`)
* `scan_session_id` est présent (si vous êtes arrivé avec un paramètre `?scnv=`)

**Exemple de payload correct :**

```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. Tester l'attribution QR

Visitez votre page avec un paramètre `?scnv=` pour simuler un scan :

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

Vérifiez le payload : `scan_session_id` doit correspondre à la valeur utilisée.

### 4. Activer temporairement le mode debug

Ajoutez `debug: true` à votre appel init et rechargez. Le SDK affiche toute son activité dans la console :

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

La sortie console devrait afficher :

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

Retirez `debug: true` avant tout déploiement en production.

***

## Erreurs fréquentes et correctifs

### Aucune requête `/ct` n'apparaît

| Cause                                                     | Correctif                                                                                    |
| --------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| Snippet absent du `<head>`                                | Collez-le avant `</head>`, pas dans `<body>`                                                 |
| Script bloqué par la CSP                                  | Ajoutez `https://cdn.scanova.io` et `https://t.scanova.io` à votre `Content-Security-Policy` |
| Bloqueur de publicités ou extension qui bloque la requête | Testez en navigation privée, extensions désactivées                                          |
| `autoPageview: false` et aucun appel manuel à `track`     | Activez `autoPageview` ou ajoutez un événement manuel                                        |
| `init` appelé alors que le SDK n'est pas encore chargé    | Le SDK met en file les appels antérieurs à son chargement : cela devrait se résoudre seul    |

### `400` — Requête invalide

Le `site_id` est invalide, vide, ou appartient à un site inactif. Vérifiez que :

* Vous utilisez le `site_id` du bon site de suivi dans le tableau de bord
* Le site est actif (vérifiez son statut dans le tableau de bord)

### `403` — Domaine non autorisé

Le domaine de votre site ne figure pas dans la liste **Allowed Domains** de ce site de suivi.

1. Ouvrez **Analyses → Suivi des conversions**
2. Sélectionnez votre site → cliquez sur **Edit**
3. Ajoutez le nom d'hôte exact (par exemple `yoursite.com`, `www.yoursite.com`, `staging.yoursite.com`)
4. Enregistrez

<Note>
  La vérification du domaine s'appuie sur l'en-tête `Origin` ou `Referer` de la requête. Ajoutez exactement le nom d'hôte affiché dans la barre d'adresse : inclure ou non `www` change tout.
</Note>

### `422` — Erreur de validation

Le payload de l'événement n'a pas passé la validation. Causes fréquentes :

* `event_type` est absent ou vide
* Un champ dépasse la longueur autorisée
* `metadata` contient une adresse e-mail en clair : utilisez `user_identifiers` avec une valeur hachée
* `metadata` dépasse 10 Ko

### `429` — Limite de débit dépassée

Votre site envoie des événements plus vite que la limite autorisée (100 événements/min par IP pour les événements navigateur). C'est rare en usage normal. Si cela survient en test, espacez vos événements.

### Les événements apparaissent dans le réseau mais pas dans le tableau de bord

* Patientez jusqu'à 60 secondes : il y a un court délai de traitement
* Vérifiez que vous consultez le bon site de suivi dans le tableau de bord
* Vérifiez que le `site_id` du payload correspond au site du tableau de bord

### Aucune requête `/ct` pour une visite donnée

Si une visite ne génère aucune requête, la personne est très probablement arrivée sans scan de QR Code : le paramètre `?scnv=` est absent. Sans `scan_session_id`, le SDK n'envoie aucun événement. C'est le comportement attendu : le SDK ne suit que le trafic issu d'un scan.

### Deux événements par chargement de page

Vous avez à la fois `autoPageview: true` et un appel manuel `scanova('track', 'page_view', ...)`. Supprimez-en un. Voir [Événements automatiques](/fr/conversion-tracking/browser/auto-tracking#page-view) pour le détail.
