# Events und Routing

## Die Event-Typen

**Abschlüsse** — darauf optimieren Kampagnen:
`purchase`, `refund`, `lead`, `sign_up`, `schedule`, `contact`, `subscribe`

**Kaufweg** — nützlich für Zielgruppen und Katalog-Retargeting:
`view_item`, `view_item_list`, `add_to_cart`, `remove_from_cart`, `view_cart`,
`begin_checkout`, `add_payment_info`

**Allgemein:** `page_view`, `search`

**Trichter** — interne Messung, verlässt Trackdolphin nie:
`form_viewed`, `form_started`, `field_focused`, `form_validation_error`,
`form_submitted`, `success_shown`, `confirmed_double_optin`

Sie beantworten „wo brechen Leute ab?“ und hätten in einem Werbekonto nichts zu
erklären — sie würden dort nur die Ereignisliste fluten.

## Routing

Nicht jedes Event gehört zu jedem Ziel. Die Voreinstellungen sind
zurückhaltend, weil die beiden Fehler ungleich schwer wiegen: Ein Event zu
wenig sieht man in den Zahlen. Ein Event zu viel verzerrt die Optimierung, ohne
sich zu zeigen.

| | Google Ads, LinkedIn | Meta | GA4 |
|---|---|---|---|
| Abschlüsse | an | an | an |
| Kaufweg | aus | an | an |
| `page_view`, `search` | aus | aus | an |
| Trichter | aus | aus | aus |

Google Ads und LinkedIn kennen nur Conversion-Actions — ein Zwischenschritt
dort erzeugt Conversions, auf die niemand bieten will. GA4 ist ein
Analysewerkzeug, dort gehört alles hin.

Änderbar im Dashboard unter *Einstellungen → Event-Routing*. Gespeichert werden
nur Abweichungen.

## Eigene Events

```js
lead("newsletter_bestaetigt", { value: 5 });
```

Eigene Events gehen **ohne ausdrückliche Freigabe nicht** an Werbeplattformen.
Der Name ist freier Text; ein Tippfehler würde sonst lautlos eine Conversion
auslösen, auf die eine Kampagne dann optimiert.

Im Routing kannst du je Ziel festlegen: freischalten, unter welchem Namen
(`newsletter_bestaetigt` → `Lead`), und mit welchem festen Wert.

Ein fester Wert greift nur, wenn das Event keinen mitbringt. Ein Lead hat
keinen Warenkorbwert, aber du weißt, was dir einer wert ist — ein echter
Kaufbetrag wird davon nie überschrieben.

## Umgebungen

Teste dein Tracking auf Staging, ohne die Produktionszahlen zu verschmutzen:
Gib Events deiner Testinstanz ein `environment` mit — `staging`, `development`
oder ein eigener Name (Kleinbuchstaben, Ziffern, `-` und `_`).

```js
init({ endpoint: "…", shopId: "…", environment: "staging" });
```

Ohne Angabe gilt `production`. Staging-Events erscheinen in der Event-Liste
(mit Etikett und eigenem Filter), werden aber **nie** an Werbeplattformen
gemeldet und tauchen in **keiner** Kennzahl auf — eine Test-Conversion im
echten Werbekonto würde die Optimierung verfälschen und wäre nicht rückholbar.
Der Wächter und die Erkennungsquote rechnen ebenfalls nur mit production.

Im Dashboard änderst du das Routing unter
[Einstellungen — Event-Routing](/docs/app-einstellungen-event-routing.md); die
empfangenen Events selbst siehst du unter
[Events ansehen](/docs/app-shop-events.md).
