---
slug: funnel-schritte-einbauen
title: "Wie melde ich einen Zielschritt?"
category: installation
locale: de
updated: 2026-10-14
keywords: ["goal","identify","goal_key","Zielschritt","Funnel","Server Events API","SDK","Event-ID","Testschritt","SaaS"]
questions: ["Wie sende ich die Schritte meines Funnels aus Browser oder Backend?","metrunio.goal","Wie sende ich ein goal-Ereignis?","Wie melde ich einen Zielschritt aus dem Backend?","Wozu brauche ich identify() vor goal()?","Welche Event-ID nehme ich für einen Zielschritt?","Wie teste ich einen Zielschritt?","Wie lege ich einen SaaS-Funnel im Assistenten an?"]
url: https://bench.metrunio.com/de/hilfe/funnel-schritte-einbauen
---

# Wie melde ich einen Zielschritt?

**Wie sende ich die Schritte meines Funnels aus Browser oder Backend?**

Im Browser mit `metrunio.identify(userId)` einmal nach der Anmeldung und dann `metrunio.goal('schluessel')` je Schritt; aus dem Backend mit `POST /v1/server/events` und einem Ereignis vom Typ `goal` mit `goal_key` und `user_id`. Beide Wege sind gleichwertig; ein Schritt ohne Kundenkennung wird abgelehnt.

Ein Zielschritt ist ein Ereignis vom Typ `goal` mit dem Schlüssel des Schritts und einer Kundenkennung. Woher es kommt, ist gleich: Das SDK im Browser und die Server Events API führen zu demselben Ereignis, mit derselben Regel „einmal je Kunde“. Nimm den Weg, an dem der Schritt tatsächlich entsteht: die Registrierung dort, wo dein Backend das Konto anlegt; ein abgeschlossener Einrichtungsdialog dort, wo er im Browser endet.

## Im Browser

```javascript
// einmal nach der Anmeldung: macht den Kunden über Geräte hinweg zu demselben
metrunio.identify('kunde-4711');

// je Schritt einmal; ein zweiter Aufruf desselben Kunden zählt nicht noch einmal
metrunio.goal('shop_angelegt');

// mit Betrag, wenn das Ereignis ihn kennt: zählt als Umsatz.
// Ohne Betrag gilt der Akquisitionswert aus dem Portal.
metrunio.goal('erste_zahlung', { value: 49, currency: 'EUR' });
```

`identify()` kommt vor `goal()`, und zwar in derselben Seitenladung oder früher: Das SDK hängt die Kundenkennung an alles, was danach gesendet wird. Ohne identify() geht der Schritt mit der pseudonymen Browserkennung hinaus. Er wird angenommen, zählt aber je Browser statt je Kunde. Der Schlüssel wird kleingeschrieben und ohne Leerzeichen gesendet; ein leerer Schlüssel ergibt in der Konsole `GOAL_KEY_MISSING`.

## Aus dem Backend

```bash
curl -X POST "$METRUNIO_COLLECTOR/v1/server/events" \
  -H "authorization: Bearer $METRUNIO_SERVER_KEY" \
  -H "content-type: application/json" \
  -d '{
    "site_id": "site_demo_app",
    "events": [{
      "event_id": "kunde-4711-shop_angelegt",
      "event_type": "goal",
      "goal_key": "shop_angelegt",
      "user_id": "kunde-4711",
      "occurred_at": "2026-09-14T10:15:00Z",
      "consent_state": "granted",
      "consent_purposes": ["analytics"]
    }]
  }'
```

`$METRUNIO_COLLECTOR` ist die Adresse aus dem fertigen Aufruf im Reiter „Server Events API“ der Einrichtung (siehe „Wie melde ich Conversions serverseitig?“).

Die `user_id` ist dieselbe Kundennummer, die du im Browser an identify() übergibst; sie wird beim Empfang pseudonymisiert und nie im Klartext gespeichert. Wer schon pseudonymisiert, sendet `user_id_hash`; auch sie wird beim Empfang mit dem Schlüssel deines Kontos verrechnet. Ein `goal` ohne `goal_key` oder ohne Kundenkennung wird abgelehnt, und die Antwort nennt das Feld. Wert und Währung sind optional. Schickst du sie mit, zählt der Betrag als Umsatz; fehlen sie, gilt der Akquisitionswert des Schritts, getrennt vom Umsatz. So ist es voreingestellt; welche Wertlogik ein Schritt hat, steht im Portal (siehe „Welchen Wert hat ein Zielschritt?“).

## Die Event-ID

Bilde die Event-ID aus Kunde und Schritt, etwa `kunde-4711-shop_angelegt`. Dann ist ein wiederholter Aufruf (ein erneut laufender Job, ein zweiter Klick) auf zwei Ebenen unschädlich: Dieselbe Event-ID zählt nur einmal gegen das Kontingent, und derselbe Schritt zählt je Kunde nur einmal im Bericht. Das SDK bildet seine Event-IDs selbst.

## Testen

- Im Portal unter „Bestellungen & Ziele“ hat jeder Schritt die Schaltfläche „Testschritt senden“. Das Ereignis landet in den Testdaten und zählt dort sofort als Conversion dieses Schritts, nicht in den Berichten.
- Im Einrichtungsassistenten legt der Schritt „Conversion festlegen“ mit der Wahl „Schritte in einer Anwendung (SaaS)“ drei Zielschritte an: `registriert`, `eingerichtet`, `erste_zahlung`. Du kannst sie umbenennen, ergänzen oder stilllegen.
- Aus dem eigenen System: Sende den Schritt mit `environment: "test"` beziehungsweise im SDK mit `testMode: true` und prüfe ihn unter „Bestellungen & Ziele“ mit dem Umschalter „Testdaten“.

> **Achtung:** `goal` ist ein Analytics-Ereignis. Ohne Analytics-Einwilligung verlässt es im Browser das Gerät nicht, und serverseitig wird es ohne passende `consent_purposes` nicht gespeichert. Jeder gesendete Schritt zählt gegen das Eventkontingent.

## Ebenfalls gefragt

- metrunio.goal
- Wie sende ich ein goal-Ereignis?
- Wie melde ich einen Zielschritt aus dem Backend?
- Wozu brauche ich identify() vor goal()?
- Welche Event-ID nehme ich für einen Zielschritt?
- Wie teste ich einen Zielschritt?
- Wie lege ich einen SaaS-Funnel im Assistenten an?

## Weiterführend

- https://bench.metrunio.com/de/hilfe/funnel-schritte-messen
- https://bench.metrunio.com/de/hilfe/funnel-bericht-lesen
- https://bench.metrunio.com/de/hilfe/sdk-api
- https://bench.metrunio.com/de/hilfe/server-events-api
- https://bench.metrunio.com/de/hilfe/single-page-app
- https://bench.metrunio.com/de/hilfe/erste-conversion-testen
- https://bench.metrunio.com/de/hilfe/consent-serverseitig
