# Loyalty-Reporting, Wallet-Push & E-Mail-Newsletter: Bestandskunden reaktivieren ohne App

> KPIs deines Treueprogramms, Wallet-Push-Broadcasts auf den Lockscreen und Markdown-Newsletter — wie du im Stempelkarte-Dashboard Reichweite ohne App-Installation aufbaust.

Canonical: https://stempelkarte.app/blog/loyalty-reporting-push-newsletter
Published: 2026-04-27
Updated: 2026-04-27
Author: Stempelkarte.app Team (candybytes GmbH)

---
export const metadata = {
  title:
    'Loyalty-Reporting, Wallet-Push & E-Mail-Newsletter: Bestandskunden reaktivieren ohne App',
  description:
    'KPIs deines Treueprogramms, Wallet-Push-Broadcasts auf den Lockscreen und Markdown-Newsletter — wie du im Stempelkarte-Dashboard Reichweite ohne App-Installation aufbaust.',
  publishedAt: '2026-04-27',
  updatedAt: '2026-04-27',
  category: 'Reporting & Marketing',
  tags: [
    'Reporting',
    'Push-Nachrichten',
    'Wallet-Broadcast',
    'Newsletter',
    'Loyalty',
    'Stempelkarte',
  ],
  readingMinutes: 11,
};

Wenn dein **digitales Stempelkarten-Programm** läuft und die ersten hundert Karten im Wallet deiner Gäste sind, fängt der eigentliche Job an: **Bestandskunden zur Wieder­kehr bewegen**. Wallet-Push erreicht in der Praxis oft deutlich höhere Sicht­barkeits- und Engagement-Werte als ein klassischer E-Mail-Newsletter — die genaue Spanne hängt von deinem Setup, deiner Frequenz und dem konkreten Reward ab. Stempelkarte gibt dir beide Kanäle — plus ein Reporting-Dashboard, das dir zeigt, was wirkt. Dieser Artikel erklärt jede Kennzahl, jede Push-Strategie, jeden Newsletter-Use-Case.

Den vollständigen Dashboard-Überblick findest du im [Pillar-Artikel](/blog/merchant-dashboard-funktionen). Wie du dein Programm überhaupt einrichtest, steht im [Spoke „Stempelkarte erstellen"](/blog/digitale-stempelkarte-erstellen).

## Warum klassische Newsletter scheitern und Wallet-Pushes funktionieren

Ein klassischer E-Mail-Newsletter erreicht typischerweise nur einen Teil deiner Bestands­kund*innen: Manche Mails landen im Promotion-Tab, andere im Spam-Folder, viele werden nie geöffnet. Klick- und Wiederkehr-Quoten liegen oft im niedrigen einstelligen Prozent­bereich. Das reicht für saisonale Kampagnen, aber nicht für die wöchentliche Reaktivierung.

Ein **Wallet-Push** läuft anders: Die Notification erscheint direkt am Sperrbildschirm, mit Logo und Brand-Farbe deiner Karte. Der Kunde sieht sie ohne App-Öffnen, ohne Inbox-Filter, ohne Spam-Folder-Risiko. In der Praxis sehen wir bei Stempelkarte-Kund*innen, dass Wallet-Pushes deutlich mehr Engagement erzeugen als ein klassischer Newsletter — wie groß der Unterschied ausfällt, hängt aber von Branche, Angebot und Reward ab. Behandle jede Push-Kampagne als Experiment, miss die Stempel-Spitze in den Tagen danach und vergleiche sie mit deinem normalen Verlauf. Genau dafür ist das Reporting-Dashboard gebaut.

## Das Reporting-Dashboard im Detail

Bevor du Kampagnen fährst, musst du wissen, was funktioniert. Das Reporting-Dashboard ist die Single-Source-of-Truth.

<DashboardMock variant="kpi-overview" caption="Kompletter Überblick: 4 KPI-Kacheln, Verlaufschart, zwei Donut-Funnels, Plan-Usage." />

### Zeiträume und Datenfrische

Vier Zeiträume sind verfügbar: **24 Stunden, 7 Tage, 30 Tage, 90 Tage**. Jeder Wechsel feuert einen Backend-Request gegen `/api/stats/overview?range=...&tz=Europe/Vienna`. Die Antwort ist 60 Sekunden cached pro `(merchant, range, tz)`-Tupel — d. h. wenn du innerhalb einer Minute zweimal denselben Bericht aufrufst, kommt der zweite aus dem Cache (Header `x-stats-cache: hit`).

Alle Aggregate sind **timezone-aware** — die Buckets bilden sich nach deiner Geschäfts­zeitzone, nicht nach UTC. Wichtig für Auswertungen wie „Stempel pro Tag", die sonst um Mitternacht weltweit verschoben wären.

### Die acht Kern-KPIs erklärt

#### 1. Stempel im Zeitraum

Summe aller positiven Stempel-Transaktionen im gewählten Zeitraum. Negative Stempel (Korrekturen, Stornos) werden gegengerechnet. **Praxis-Interpretation:** Volumen-Indikator. Wenn die Stempel-Zahl Woche zu Woche steigt, gewinnst du Frequenz.

#### 2. Belohnungen im Zeitraum

Anzahl der Redeem-Transaktionen — wie viele Kunden haben eine volle Karte tatsächlich eingelöst? **Praxis-Interpretation:** Closing-Rate-Signal. Hoher Wert = Programm kommt durch. Niedriger Wert = Belohnung uninteressant oder Schwelle zu hoch.

#### 3. Neue Karten

Karten, die im Zeitraum erstmals ausgegeben wurden (`issuedAt` im Range). **Praxis-Interpretation:** Akquise-Indikator. Wenn neue Karten stagnieren, brauchst du mehr QR-Codes in deinem Geschäft, eine Aktion oder mehr Werbung.

#### 4. Aktive Karten

Distinct cards mit ≥1 Stempel im Zeitraum. **Praxis-Interpretation:** Engagement-Indikator. Vergleichst du diesen Wert mit deinem Total-Karten-Bestand, hast du die wahre Aktivierungs-Rate.

#### 5. Aktivierungs-Rate

`(Karten mit ≥1 Stempel ÷ Karten total) × 100 %`. **Praxis-Interpretation:** Wie viele deiner ausgegebenen Karten werden tatsächlich genutzt? Werte unter 60 % deuten darauf hin, dass viele Karten nach dem Save-to-Wallet vergessen werden — ein Push kann hier Wunder wirken.

#### 6. Abschluss-Rate

`(Karten mit ≥1 Einlösung ÷ Karten total) × 100 %`. **Praxis-Interpretation:** Wie viele Kunden gehen den vollen Weg von Karte → erste Stempel → Belohnung? Werte unter 25 % bedeuten oft: Stempel-Ziel zu hoch oder Belohnung nicht attraktiv genug.

#### 7. Ø Stempel pro aktiver Karte

Stempel im Zeitraum geteilt durch aktive Karten. **Praxis-Interpretation:** Frequenz pro Stamm-Kunde. Bei einem Kaffee-Programm sind 2,5–4 typisch (1× pro Woche bei 4-Wochen-Fenster). Niedriger = wenig Frequenz, höher = sehr engagierte Stammkundschaft.

#### 8. Top-Programm

Programm mit der höchsten Stempel-Zahl im Zeitraum. **Praxis-Interpretation:** Wenn du mehrere Programme parallel betreibst, siehst du sofort, welches der „Hero" ist. Tipp: Lege Aktionen in Programm B an, wenn Programm A das Top ist — du nutzt deine bestehende Reichweite, ohne in Konkurrenz zum Hauptprogramm zu treten.

### Verlaufs-Chart und Donut-Funnels

Der **Verlaufs-Chart** stellt Stempel und Belohnungen über die Zeit gegenüber. Bei 24h: stündliche Buckets. Bei 7d und 30d: tägliche Buckets. Bei 90d: wöchentliche Buckets. Die Linien zeigen Trend, die schraffierten Flächen Volumen.

Die zwei **Donut-Funnels** sind:

- **Aktivierung** — Anteil der Karten mit ≥1 Stempel (wie viele wurden überhaupt einmal benutzt?)
- **Abschluss** — Anteil der Karten mit ≥1 Einlösung (wie viele schließen das Programm tatsächlich ab?)

<KpiGrid>
  <KpiTile label="Stempel 30 d" value="1.284" delta="+18 %" hint="ggü. Vor­periode" tone="brand" />
  <KpiTile label="Belohnungen" value="142" delta="+9 %" hint="Einlösungen 30 d" tone="reward" />
  <KpiTile label="Aktivierungs-Rate" value="78 %" delta="+5 Pp" hint="der Karten-Basis" tone="accent" />
  <KpiTile label="Top-Programm" value="Kaffee" hint="Kaffee-Treuekarte führt" tone="neutral" />
</KpiGrid>

### Programm-Top-Listen und Filter

Du kannst alle KPIs **pro Programm filtern**. Im Bereich Programme siehst du eine Tabelle mit:

- Programm-Name
- Status (Aktiv / Pausiert / Beendet)
- Aktive Karten
- Stempel im Zeitraum
- Einlösungen im Zeitraum

Sortierbar nach jeder Spalte — schnell erkennst du, welches Programm den meisten Beitrag liefert und wo es lohnt, mit Push und Newsletter nachzulegen.

### Tier-Limits-Karte

Auf der Übersicht siehst du eine **Plan-Usage-Card** mit deinem aktuellen Karten- und Programm-Verbrauch im Vergleich zum Tarif-Limit. Bei 80 % bekommst du eine automatische Mail mit Upgrade-Link. Bei 100 % erscheint ein hellgrauer Hinweis-Banner — Bestandskarten funktionieren weiter, neue Anmeldungen zeigen eine freundliche „aktuell keine neuen Karten"-Seite.

## Wallet-Push-Broadcasts: dein Direkt-Kanal zum Lockscreen

Sobald du im Business-Tarif bist, hast du Zugriff auf den **Broadcast-Composer**. Die schnellste Methode, alle deine Bestandskunden auf einmal zu erreichen.

<DashboardMock variant="broadcasts" caption="Broadcast-Composer mit Reichweite, Programm-Auswahl und Live-Preview im Lockscreen-Stil." />

### So funktioniert ein Push

1. Du komponierst Header (≤50 Zeichen) und Body (≤200 Zeichen)
2. Wählst die Ziel­programme (multi-select) — du siehst pro Programm die Anzahl der Google-Wallet-User
3. Sendet via „Jetzt senden"
4. Backend triggert die Google-Wallet-Push-API über `patchLoyaltyClassMessages`
5. Eine Nachricht (`messageType: TEXT_AND_NOTIFY`) wird an die LoyaltyClass angehängt
6. Google verteilt sie an alle LoyaltyObjects, die mit dieser Class verknüpft sind
7. Beim Empfang erscheint die Notification auf dem Lockscreen — Banner mit Logo und Brand-Farbe der Karte

### Apple-Wallet-Limitation

Apple erlaubt **keine direkten Lockscreen-Pushes** durch Drittanbieter. Stattdessen aktualisiert Stempelkarte still die Karte (z. B. durch ein neues Hero-Image mit deinem Aktions-Hinweis), und über die Geofences triggert iOS die Karte automatisch, sobald der Gast in der Nähe deiner Filiale ist. Praktischer Effekt: Apple-User sehen deine Aktion, sobald sie das nächste Mal an deinem Café vorbeigehen — was oft besser konvertiert als ein zufälliger Push.

### Reichweiten-Logik

Die Reichweite einer Push-Kampagne berechnet sich pro Programm als **Summe der `googleSavedCount`-Werte**. Das ist die Anzahl der LoyaltyObjects, die in einem Google-Wallet gespeichert wurden. Apple-Karten werden hier **nicht mitgezählt** — sie bekommen den Push aus den oben genannten Gründen nicht.

### Push-Best-Practices

<Callout tone="tip" title="Wann Push schicken?">
- **Vormittags 9–11 Uhr** für Frühstücks-Cafés und Bäckereien<br />
- **Nachmittags 14–16 Uhr** für Cafés und Snacks<br />
- **Abends 17–19 Uhr** für Restaurants und Bistros<br />
- **Niemals nach 21 Uhr** oder vor 7 Uhr — Notification-Müdigkeit<br />
- **Maximal 1× pro Woche** pro Karte — sonst verlieren Pushes an Wirkung
</Callout>

**Inhaltlich** funktionieren am besten:

- Konkrete Aktionen mit Zeit­fenster („Heute 16–18 Uhr Happy Hour")
- Bonus-Stempel-Versprechen („Bring deine Karte mit — heute doppelte Stempel")
- Saisonale News („Frühlings-Sorten ab Montag")
- Persönliche Erinnerung („Du hast 3 von 5 Stempeln — der nächste ist bei uns")

**Vermeide**: zu lange Sätze, mehrere CTAs, generische Texte ohne Bezug.

### Versand-Verlauf und Resend

Auf der Verlaufs-Seite (`/dashboard/broadcasts/verlauf`) siehst du jede gesendete Nachricht mit:

- Sent-Timestamp
- Reichweite
- Failed-Count (nicht zustellbare Karten)
- Resend-Button für nachträgliche Korrekturen

Wenn ein Push schiefgeht (Tippfehler, falscher Termin), schickst du einfach einen Korrektur-Push hinterher — wirkt zwar etwas peinlich, aber besser als ein verwirrter Kundenstamm.

## E-Mail-Newsletter: deeper Content für Subscriber

Wo der Wallet-Push der schnelle, kurze Banner ist, ist der **E-Mail-Newsletter** dein Format für längere Inhalte: Saisonal-News, Story-Telling, Mehrere CTAs, Bilder. Voraussetzung: Du hast im Programm-Editor `emailCaptureMode` auf `optional` oder `required` gesetzt und dadurch E-Mail-Adressen gesammelt.

<DashboardMock variant="newsletter" caption="Newsletter-Composer mit Markdown-Editor und Live-Preview. Hero-Image und CTA-Button optional." />

### Composer-Felder

| Feld | Beschreibung |
| --- | --- |
| **Betreff (Subject)** | Erste Wahrnehmung in der Inbox — entscheidend für Open-Rate |
| **Preheader** | Vorschau-Text neben dem Betreff (10–80 Zeichen empfohlen) |
| **Hero-Image** | Optional, großes Banner-Bild oben (URL, JPG/PNG/WebP) |
| **Markdown-Body** | Hauptinhalt mit Headers, Listen, Bold, Italic, Links, Tabellen |
| **CTA-Button-Text** | Optional, Button-Beschriftung (z. B. „Karte öffnen") |
| **CTA-Button-Link** | Wohin der Button führt (interne oder externe URL) |
| **Ziel-Programm** | Multi-select; entscheidet, welche Subscriber den Newsletter bekommen |

### Live-Preview rechts

Während du im Editor schreibst, rendert die Live-Preview rechts den Newsletter genauso, wie er in der Inbox deines Subscribers ankommen wird. Du siehst Markdown sofort als HTML, Hero-Image, Button-Styling — alles WYSIWYG.

### Versand via Resend

Wenn du auf „Senden" klickst, läuft der Versand über die Batch-API von [Resend](https://resend.com). Pro 1.000 Empfänger einen API-Call, sehr schnell. Tarif-abhängig:

- **Business**: bis zu 5.000 Empfänger pro Monat
- **Scale**: bis zu 25.000 Empfänger pro Monat

Bei Überschreitung bekommst du eine Vorwarnung — du kannst entweder upgraden oder bis zum nächsten Monat warten.

### Subscriber-Verwaltung

Auf `/dashboard/broadcasts/subscribers` siehst du alle eingetragenen E-Mail-Adressen mit:

- E-Mail-Adresse (vollständig oder anonymisiert je nach Modus)
- Programm-Bindung
- Opt-in-Datum
- Letztes Versand-Datum
- Opt-in-Status

Du kannst einzelne Subscriber manuell ausschließen (z. B. nach Beschwerden) oder eine ganze Subscriber-Liste in CSV exportieren.

### Newsletter-Best-Practices

<Callout tone="info" title="Frequenz und Ton">
- **1× pro Monat** ist solide — fokussiert, nicht nervig<br />
- **2× pro Monat** für aktive Saisons (Sommer-Aktion, Weihnachten)<br />
- **Wöchentlich nur ausnahmsweise** — bei klar definierten Aktions-Wochen<br />
- **Persönlicher Ton**, du-Form, kurze Sätze<br />
- **Mindestens ein Bild** — Cafés mit Latte-Foto haben 35 % höhere Click-Rates als Text-only
</Callout>

### Was wirkt: drei Newsletter-Templates

#### Template 1: Saisonale Neuheit

> **Betreff:** Frühlings-Sorten sind da 🌸
> **Hero:** Foto deines Signature-Drinks
> **Body:** 1 Absatz Storytelling, 3 neue Sorten als Bullet-Liste, 1 Bonus-Hinweis
> **CTA:** „Karte öffnen" (Link zur Wallet-Karte)

#### Template 2: Bonus-Aktion

> **Betreff:** Diese Woche: doppelte Stempel
> **Hero:** Optional — kann auch text-only stark wirken
> **Body:** Klare Mechanik, Zeit­fenster, Limitierung („nur 100 Karten")
> **CTA:** „Vorbeischauen" (Link zur Filial-Adresse / Google Maps)

#### Template 3: Re-Engagement

> **Betreff:** Wir vermissen dich (3 Stempel = gratis Kaffee)
> **Hero:** Personalisiertes Bild oder Stempel-Visualisierung
> **Body:** „Du hast 3 von 5 Stempel — der nächste ist auf uns"
> **CTA:** „Karte öffnen"

## Wann Push, wann Newsletter, wann beides?

| Szenario | Bester Kanal |
| --- | --- |
| Spontane Aktion in den nächsten 2 Stunden | Push |
| Wochenend-Aktion ab Freitag | Push am Freitag, Newsletter am Donnerstag-Abend |
| Saisonale Neuheit mit Story | Newsletter |
| Bestandskunden-Re-Engagement nach 30 Tagen Inaktivität | Push (kurz) + Follow-up-Newsletter (deeper) |
| Lokales Event in deiner Filiale | Push (Geofencing reicht oft schon) |
| Bonus-Stempel-Aktion | Push als Erinnerung am Aktions-Tag |

**Doppel-Strategie** funktioniert besonders gut: Newsletter am Donnerstagabend mit Story und CTA, Push am Freitagmorgen mit kurzer Erinnerung. Reichweite addiert sich, Engagement verdoppelt sich teils.

## Tier-Gating und Reichweiten-Limits

Beide Kanäle sind tarif-gating, aber sehr großzügig dimensioniert:

| Feature | Starter | Business | Scale |
| --- | --- | --- | --- |
| Wallet-Push-Broadcasts | – | unbegrenzt* | unbegrenzt |
| Newsletter-Reichweite/Monat | – | 5.000 | 25.000 |
| Subscriber-Liste | – | ✓ | ✓ |
| Versand-Historie | – | ✓ | ✓ |

*Push-Broadcasts haben keine harten Mengen­limits. Google API hat ein technisches Quoten­limit (mehrere tausend pro Stunde), das normaler Geschäfts­betrieb nie erreicht. Wir parallelisieren in 20er-Batches, um Quoten zu schonen.

## Reporting + Kampagnen = Loyalty-Loop

Die wirkungsvollste Strategie ist nicht Push **oder** Newsletter, sondern der **Loyalty-Loop**:

1. **Reporting** zeigt dir, welches Programm schwächelt
2. **Push-Kampagne** reaktiviert die schlafenden Karten
3. **Reporting** misst die Wirkung — Stempel-Zuwachs, neue aktive Karten
4. **Newsletter** vertieft die Geschichte für die motivierten Subscriber
5. **Reporting** zeigt Conversion-Rates, du iterierst

Mit dem Stempelkarte-Dashboard hast du diesen Loop in einer einzigen Web-App. Keine zusätzliche Tool-Stack, kein Daten-Export, keine API-Integrationen.

<Callout tone="success" title="Nächste Schritte">
- [Komplettübersicht aller Dashboard-Funktionen →](/blog/merchant-dashboard-funktionen)<br />
- [Wie du dein erstes Programm erstellst →](/blog/digitale-stempelkarte-erstellen)<br />
- [Live-Beispiele aus 6 Branchen →](/beispiele)<br />
- [Tarif-Vergleich →](/preise)<br />
- [Kostenlos starten →](/signup)
</Callout>
