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

# So funktioniert die Konversionsverfolgung

> Der vollständige Datenfluss vom QR-Code-Scan bis zum Bericht — Zuordnungsmodell, Lebensdauer der Sitzung und Verarbeitung der Ereignisse im Detail erklärt.

## Der Weg vom Scan zum Bericht

So läuft es ab — vom Moment des Scans bis zu dem Moment, in dem das Ereignis in Ihren Berichten auftaucht.

```mermaid theme={null}
sequenceDiagram
  participant User as Nutzer
  participant QR as QR-Code
  participant Scanova as Scanova-Weiterleitung
  participant Site as Ihre Website
  participant SDK as Browser-SDK
  participant API as Tracking-API
  participant Reports as Analysen / Berichte

  User->>QR: Scannt den QR-Code
  QR->>Scanova: Öffnet die scnv.io-Kurz-URL
  Scanova->>Site: Leitet mit ?scnv=<session_id> auf Ihre URL weiter
  Site->>SDK: SDK lädt und liest den Parameter ?scnv
  SDK->>SDK: Speichert scan_session_id im localStorage
  SDK->>API: Sendet page_view-Ereignis mit scan_session_id
  User->>Site: Klickt, füllt ein Formular aus, scrollt
  SDK->>API: Sendet click-, form_submit- und scroll-Ereignisse
  Site->>API: Ihr Server sendet ein purchase-Ereignis (serverseitig)
  API->>Reports: Ereignisse werden verarbeitet und dem QR-Code zugeordnet
```

## Die Scan-Sitzung

Der Abfrageparameter `scnv` ist der Schlüssel zur Zuordnung. Er enthält eine **Scan-Sitzungs-ID** — eine UUID, die genau einen Scan eines bestimmten QR-Codes durch eine bestimmte Person zu einem bestimmten Zeitpunkt kennzeichnet.

```
https://yoursite.com/landing?scnv=7ad26d4f-3181-4ef8-b6ca-b8f59499dd43
                                    └─────────────────────────────────────┘
                                           scan_session_id
```

Lädt das Browser-SDK auf einer Seite mit diesem Parameter, tut es Folgendes:

1. Es liest den Wert `scnv` aus der URL
2. Es speichert ihn mit 60 Tagen Gültigkeit im `localStorage`
3. Es hängt ihn als `scan_session_id` an jedes Ereignis an, das dieser Browser sendet

Kehrt die Person also innerhalb von 60 Tagen zurück, werden ihre weiteren Aktionen weiterhin dem ursprünglichen Scan zugeordnet.

## Zuordnung über Seiten und Sitzungen hinweg

Die Scan-Sitzungs-ID bleibt beim Wechsel zwischen Seiten derselben Domain erhalten. Wenn jemand:

1. einen QR-Code scannt → auf `/landing` landet
2. weiter zu `/pricing` klickt
3. sich auf `/signup` registriert

werden alle drei Seitenaufrufe demselben QR-Code-Scan zugeordnet, sofern das SDK auf allen Seiten eingebunden ist.

## Browser-Ereignisse und Server-Ereignisse

Es gibt zwei Arten von Ereignissen:

| Art                    | Gesendet von                     | Authentifizierung   | Am besten für                                            |
| ---------------------- | -------------------------------- | ------------------- | -------------------------------------------------------- |
| **Browser-Ereignisse** | Browser des Nutzers über das SDK | Keine (öffentlich)  | Seitenaufrufe, Klicks, Scrollen, Formularabsendungen     |
| **Server-Ereignisse**  | Ihr Backend über die API         | API-Schlüssel nötig | Käufe, Registrierungen, Leads, jede serverseitige Aktion |

Beide Arten nehmen eine `scan_session_id` entgegen, die sie mit dem QR-Code-Scan verknüpft. Für Server-Ereignisse muss Ihr Backend die `scan_session_id` aus dem Browser erhalten — üblicherweise über ein Formularfeld, ein Sitzungs-Cookie oder einen API-Aufruf.

## Wie Ereignisse verarbeitet werden

Sobald die Tracking-API ein Ereignis erhält, durchläuft es mehrere Verarbeitungsschritte:

1. **Prüfung** — kontrolliert Pflichtfelder, Größe der Nutzdaten und die Berechtigung von Website und Domain
2. **Dublettenerkennung** — markiert wiederholte Werte von `event_id` als Dubletten (sie werden weiterhin gespeichert, nicht verworfen)
3. **Geräteangaben** — liest aus dem User-Agent Gerätetyp, Browser und Betriebssystem aus
4. **Standortangaben** — ermittelt per GeoIP Land und Stadt aus der IP-Adresse
5. **Verknüpfung der Identität** — löst die `scan_session_id` anhand der Scanova-Datenbank zu QR-Code-ID und Nutzer-ID auf
6. **Betrugserkennung** — bewertet nach Heuristiken und markiert bot-artiges Verhalten
7. **Datenschutz / DSGVO** — entfernt personenbezogene Felder, wenn `consent` auf `denied` oder `pending` steht

Verarbeitete Ereignisse erscheinen mit kurzer Verzögerung in den Berichten Ihres Dashboards (in der Regel unter 10 Sekunden).

## Identität und Sitzungen

Jedes Ereignis, das das SDK sendet, trägt drei getrennte Identitätswerte. Wer den Unterschied kennt, liest Berichte leichter:

| Identität         | Cookie- bzw. Speicherschlüssel | Lebensdauer            | Wofür sie steht                                                                                                                           |
| ----------------- | ------------------------------ | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `scan_session_id` | `localStorage._scnv`           | 60 Tage                | Der konkrete QR-Code-Scan, der diese Nutzerreise ausgelöst hat. Der wichtigste Schlüssel für die Zuordnung.                               |
| `web_session_id`  | Cookie `_scnv_ws`              | 30 Minuten Inaktivität | Eine zusammenhängende Sitzung auf der Website. Sie beginnt nach 30 Minuten ohne Aktivität neu, wie bei einer üblichen Sitzung.            |
| `visitor_id`      | Cookie `_scnv_vid`             | 1 Jahr                 | Eine dauerhafte anonyme Kennung für einen Browser. Damit lassen sich wiederkehrende Besucher über mehrere Scan-Sitzungen hinweg erkennen. |

Ein Besucher kann viele Website-Sitzungen haben, eine Sitzung viele Ereignisse. Alle Ereignisse innerhalb von 60 Tagen nach einem Scan teilen sich dieselbe `scan_session_id`.

## Verfügbarkeit der Daten

* Ereignisse werden sofort bei Eingang aufgenommen und eingereiht
* Bei normaler Last erscheinen verarbeitete Ereignisse innerhalb von Sekunden in den Berichten
* Bei Lastspitzen sind kurze Verzögerungen von bis zu einigen Minuten möglich
