Zielgruppen-Segmente
Ein Segment ist ein gespeicherter Filter über Ihre Fahrer. Engage wertet jedes Segment gegen Ihre Live-Datenbank aus, sodass der angezeigte Zähler dem entspricht, was den nächsten Versand erhält.
Navigation
Segmente unter Engage > Segmente.
Wie Segmentierung funktioniert
Jede Segmentdefinition ist ein Baum aus UND / ODER / NICHT-Gruppen mit Regeln. Engage kompiliert den Baum zu einem parametrisierten SELECT gegen customers mit Rollup-Views (engage_ride_agg, engage_wallet_agg usw.) und führt ihn über die engage_run_segment_sql RPC aus.
Die RPC erzwingt eine SELECT-Whitelist und verbietet Semikolons, sodass eine Segmentdefinition niemals einen Schreibvorgang ausführen kann. Service-Role steuert den Aufruf.
Verfügbare Attribute
| Quelle | Attribute |
|---|---|
customers | created_at, language, city, country, timezone, marketing_*_consent, push_token, rider_score, rider_score_tier |
rides (Rollup) | first_ride_at, last_ride_at, total_count, total_revenue, force_ended_count |
wallet_transactions (Rollup) | current_balance, lifetime_topup, last_topup_at, auto_topup_enabled |
subscriptions (Rollup) | active_plan, status, next_renewal_at, churned_at |
violations (Rollup) | total_count, last_violation_at, severity_max |
referrals, loyalty | counts, tier, points balance |
Die Rollup-Views werden zur Abfragezeit ausgewertet. Es gibt kein Staleness-Fenster.
Operatoren
| Operator | Funktioniert auf | Beispiel |
|---|---|---|
equals | Text, Zahl, Bool | language = "es" |
not_equals | Text, Zahl, Bool | country != "DE" |
greater_than | Zahl, Datum | rides.total_count > 5 |
less_than | Zahl, Datum | wallet.current_balance < 3 |
within_last | Datum | last_ride_at within last 30 days |
more_than_ago | Datum | last_ride_at more than 60 days ago |
is_set / is_null | beliebig | push_token is_set |
in | Text | language in ("en", "de") |
Boolesche Komposition
Gruppieren Sie Regeln mit UND, ODER, NICHT. Gruppen können bis zu 4 Ebenen tief verschachtelt werden.
Beispiel - Re-Engagement-Kandidaten
UND
├── rides.last_at more than 60 days ago
├── rides.last_at within last 180 days
├── marketing_email_consent = true
└── NICHT
└── violations.severity_max >= "high"
Dieses Segment findet Fahrer, die früher aktiv waren, noch nicht zu lange weg sind, per E-Mail kontaktiert werden dürfen und keine schweren Sicherheitsprobleme haben.
Live-Zähler
Jedes Segment zeigt einen Live-Zähler, der 60 Sekunden gecacht wird.
- Regeln bauen.
- Vorschau klicken.
- Zähler erscheint mit 10 Stichprobenzeilen zur Plausibilitätsprüfung.
Speichern und Wiederverwenden
Gespeicherte Segmente leben auf Ihrem Subaccount und sind RLS-geschützt - kein anderer Betreiber sieht sie.
- Speichern klicken.
- Segment benennen (
Aktiv 30T,Hochwertig inaktivusw.). - Erscheint im Zielgruppen-Dropdown des Kampagnen-Composers.
Bearbeiten beeinflusst keine bereits laufenden Kampagnen - diese nutzen die zum Sendezeitpunkt kompilierte Zielgruppe.
CSV-Export
Klicken Sie CSV exportieren auf der Detailseite. Der CSV streamt aus dem gleichen kompilierten SQL.
Ad-hoc-Segmente
Nicht jedes Segment muss gespeichert werden. Der Kampagnen-Composer akzeptiert einen Inline-Filter für Einmalversände:
- Im Composer: Zielgruppe > Benutzerdefinierter Filter.
- Regeln bauen.
- Engage nutzt sie nur für diesen Versand.
Empfohlene Starter-Segmente
| Segment | Definition |
|---|---|
Aktiv 30T | last_ride_at within last 30 days |
Inaktiv 30-60T | last_ride_at between 30 and 60 days ago |
Inaktiv 60-90T | last_ride_at between 60 and 90 days ago |
Tief inaktiv 90T+ | last_ride_at more than 90 days ago |
Niedriges Guthaben, keine Auto-Aufladung | wallet.current_balance < 3 AND wallet.auto_topup_enabled = false |
Neue Anmeldung, noch keine Fahrt | created_at within last 14 days AND rides.total_count = 0 |
Top 10 % nach Fahrtanzahl | rides.total_count >= 50 (anpassen) |
Deutschsprachig aktiv | language = "de" AND last_ride_at within last 60 days |
Abo-Verlängerung nächste 7 Tage | subscription.next_renewal_at within next 7 days AND subscription.status = "active" |
Performance und Limits
- Segment-SQL ist parametrisiert - keine String-Interpolation, keine Injection.
- Validierung begrenzt Verschachtelung auf 4 Ebenen.
- Zähler sind 60 Sekunden pro Segment gecacht.
- Große Segmente (>100k Fahrer) kompilieren problemlos, aber Versände unterliegen Ratenbegrenzungen.
Best Practices
- Immer vor dem Speichern Vorschau ansehen.
- Consent-Flags in jedes Segment einschließen.
- Benannte Segmente für wiederkehrende Versände.
- Aktive Quote überwachen.
Fehlerbehebung
Segmentzähler ist null
- Haben Sie sowohl
marketing_*_consentals auch die Rollup-Filter geprüft? - Neue Kundenspalten sind nullable - eine NOT-NULL-artige Regel schließt jeden ohne Score aus.
Zähler sieht zu hoch aus
- Rollup-Views ignorieren gelöschte Kunden via
is_deleted = false. Prüfen Sie auf Test-/Mitarbeiter-Accounts.
Bearbeitung brach laufende Kampagne
- Tat sie nicht. Kampagnen erfassen ihre Zielgruppe zur Kompilierzeit. Änderungen wirken beim nächsten Versand.
Hilfe nötig?
Bei Segmentierungs-Fragen: support@levyelectric.com.