Segmentierungssprache
Pushwoosh bietet eine leistungsstarke Segmentierungs-Engine zum Erstellen granularer Segmente basierend auf Tag-Werten. Die Segmentierungssprache ist eine spezielle Methode zum Schreiben und Kombinieren von Segmentierungskriterien, um eine bestimmte Gruppe von Benutzern zu beschreiben, die diesen Kriterien entsprechen, und sie als ein einziges Zielgruppensegment zu behandeln.
Dieser Artikel beschreibt die grundlegenden Konzepte und die Syntax der Segmentierungssprache und bietet umfassende Beispiele für die Erstellung von Segmentierungskriterien für verschiedene Fälle.
Inline-Verwendung ohne gespeichertes Segment
Anchor link toEin Filterausdruck muss nicht zu einem gespeicherten Segment gehören. Übergeben Sie einen direkt im Feld expression von NotifySegment, um eine einzelne Sendung zu adressieren – es wird kein Segment erstellt und der Ausdruck wird nicht im Konto gespeichert.
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \ -H "Authorization: Token YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "segment": { "application": "XXXXX-XXXXX", "platforms": ["IOS", "ANDROID"], "expression": "T(\"City\", eq, \"Tokyo\") * T(\"Age\", gte, 18)", "payload": { "content": { "localized_content": { "en": { "ios": { "body": "Hello, Tokyo!" } } } } }, "schedule": { "at": "2026-05-01T12:00:00Z" } } }'Grundlagen
Anchor link toJedes Gerät in Ihrer Benutzerbasis hat spezifische Attribute, die ihm über Tag-Werte zugeordnet sind.
Nehmen wir zum Beispiel an, eine Benutzerin namens Jane lebt in Tokio und ist 28 Jahre alt. Für das Gerät dieser Benutzerin werden die folgenden Tags gesetzt:
- Name: Jane
- Stadt: Tokio
- Alter: 28
Um Jane anzusprechen, müssen Sie ein Segment wie folgt beschreiben:
T("Name", eq, "Jane") * T("Age", eq, 28) * T("City", eq, "Tokyo")
Diese Kombination von Bedingungen ist ein Filterausdruck, der in der Segmentierungssprache verwendet wird, um Benutzergruppen, auch Zielgruppensegmente genannt, zu beschreiben.
Filterausdrücke
Anchor link toEin Filterausdruck ist eine Zeichenfolge, die eine Bedingung oder eine Kombination von Bedingungen enthält, die das von Ihnen benötigte Segment beschreiben.
Bedingungen
Anchor link toJede Bedingung beschreibt ein Segment von Geräten, die den in dieser Bedingung angegebenen Kriterien entsprechen.
Die folgende Bedingung erstellt beispielsweise ein Segment von Benutzern, die in Tokio leben:
T("City", e, "Tokyo")
wobei
- T ein Tag ist (Bedingungstyp);
- eq ein anzuwendender Operator ist;
- „Tokyo“ ein Tag-Wert ist, den Benutzer ihren Geräten zugeordnet haben.
Bedingungstypen
Anchor link toDie folgenden Bedingungstypen sind für die Segmentierung verfügbar:
- A (Anwendung) – beschreibt ein Segment von Geräten, auf denen eine bestimmte App installiert ist. Aliase: App, Application;
- T (Tag) – beschreibt ein Segment von Geräten mit den angegebenen Tag-Werten;
- AT (App-bezogener Tag) – sucht einen Tag-Wert innerhalb einer bestimmten Anwendung; der App-Code ist als erstes Argument erforderlich. Alias: Tag;
- Event – beschreibt ein Segment von Geräten, die ein bestimmtes Pushwoosh-Ereignis ausgelöst haben;
- Geo – beschreibt ein Segment von Geräten innerhalb eines bestimmten geografischen Radius;
- BTTS – beschreibt ein Segment von Geräten basierend auf ihrer besten Sendezeit;
- Updated – beschreibt ein Segment von Geräten basierend auf ihrem letzten Aktualisierungszeitstempel;
- Segment – verweist auf einen anderen Filter/ein anderes Segment über dessen Code;
Operationen mit Bedingungen
Anchor link toFür die Erstellung komplexer Segmente können die folgenden Operationen auf Bedingungen innerhalb des Filterausdrucks angewendet werden:
Vereinigung (+)
Anchor link toVerbindet die Segmente, d. h. erstellt ein neues Segment von Benutzern, die mindestens einer der angegebenen Bedingungen entsprechen.

Um beispielsweise Benutzer anzusprechen, die in Tokio oder Osaka leben, müssen Sie das Segment mit den folgenden Bedingungen beschreiben:
T("City", eq, "Tokyo") + T("City", eq, "Osaka")
Schnittmenge (*)
Anchor link toErstellt ein Segment von Benutzern, die zu beiden durch die Bedingungen beschriebenen Segmenten gehören. Es werden also nur diejenigen Benutzer einbezogen, die jede von Ihnen angegebene Bedingung erfüllen.

Der folgende Ausdruck beschreibt ein Segment von Benutzern, die sowohl in Tokio leben als auch ihre Namen angegeben haben:
T("City", eq, "Tokyo") * T("Name", any)
Differenz (\)
Anchor link toErstellt ein Segment von Benutzern, die zu einem der beschriebenen Segmente gehören und nicht zu einem anderen.

Benutzer, die in Tokio leben, aber Ihnen ihre Namen nicht mitgeteilt haben, werden wie folgt beschrieben:
T("City", eq, "Tokyo") \ T("Name", any)
Klammern
Anchor link toBestimmen die Reihenfolge der Operationen, die mit den Bedingungen in Ihrem Filterausdruck ausgeführt werden sollen.
Der folgende Filterausdruck ermittelt beispielsweise zuerst ein Segment der Abonnenten von 12345-67890, deren Alter 18 ist, und subtrahiert dann alle Männer dieses Segments:
( A("12345-67890") * T("Age", eq, 18) ) \ T("Gender", eq, "Male")
Operatoren für Tag-Bedingungen
Anchor link toFür jeden Tag-Typ werden eigene Operatoren angewendet.
Integer-Tag-Operatoren
Anchor link to- eq - gleich einem angegebenen Wert
- noteq - ungleich einem angegebenen Wert
- lte - kleiner oder gleich einem angegebenen Wert
- gte - größer oder gleich einem angegebenen Wert
- in - einer der angegebenen Werte
- notin - ungleich einem der angegebenen Werte
- between - in einem angegebenen Bereich
- any - Geräte mit beliebigen für den Tag gesetzten Werten
- notset - Geräte ohne für den Tag gesetzten Wert
String-Tag-Operatoren
Anchor link to- eq - gleich einem angegebenen Wert
- noteq - ungleich einem angegebenen Wert
- startswith - beginnt mit einem angegebenen Präfix
- endswith - endet mit einem angegebenen Suffix
- contains - enthält eine angegebene Teilzeichenfolge
- in - gleich einem der angegebenen Werte
- notin - ungleich einem der angegebenen Werte
- any - Geräte mit beliebigen für den Tag gesetzten Werten
- notset - Geräte ohne für den Tag gesetzten Wert
Listen-Tag-Operatoren
Anchor link to- in - Geräte mit einem der angegebenen Tag-Werte
- notin - keiner der angegebenen Tag-Werte ist dem Gerät zugeordnet
- any - Geräte mit beliebigen für den Tag gesetzten Werten
- notset - Geräte ohne für den Tag gesetzten Wert
Datums-Tag-Operatoren
Anchor link to- eq - gleich dem angegebenen Datum
- noteq - ungleich dem angegebenen Datum
- lte - vor oder am angegebenen Datum
- gte - nach oder am angegebenen Datum
- in - gleich einem der angegebenen Daten
- notin - ungleich einem der angegebenen Daten
- between - in einem angegebenen Bereich
- any - Geräte mit beliebigen für den Tag gesetzten Werten
- notset - Geräte ohne für den Tag gesetzten Wert
- match - entspricht einem angegebenen Monat des Jahres und Tag des Monats.
- daysago eq - gleich einer angegebenen Anzahl von Tagen vor dem heutigen Tag
- daysago noteq - ungleich einer angegebenen Anzahl von Tagen vor dem heutigen Tag
- daysago lte - kleiner oder gleich einer angegebenen Anzahl von Tagen vor dem heutigen Tag
- daysago gte - größer oder gleich einer angegebenen Anzahl von Tagen vor dem heutigen Tag
- daysago between - zwischen der angegebenen Anzahl von Tagen
- minutesago lte - kleiner oder gleich einer angegebenen Anzahl von Minuten vor dem jetzigen Zeitpunkt
- minutesago gte - größer oder gleich einer angegebenen Anzahl von Minuten vor dem jetzigen Zeitpunkt
- daysahead - in N bis M Tagen ab dem heutigen Tag (UTC), beidseitig einschließlich
Boolesche Tag-Operatoren
Anchor link to- eq - gleich einem angegebenen Wert
- noteq - ungleich einem angegebenen Wert
- any - Geräte mit beliebigen für den Tag gesetzten Werten
- notset - Geräte ohne für den Tag gesetzten Wert
Preis-Tag-Operatoren
Anchor link to- eq - gleich einem angegebenen Wert
- noteq - ungleich einem angegebenen Wert
- lte - kleiner oder gleich einem angegebenen Wert
- gte - größer oder gleich einem angegebenen Wert
- in - gleich einem der angegebenen Werte
- notin - ungleich einem der angegebenen Werte
- between - in einem angegebenen Bereich
- any - Geräte mit beliebigen für den Tag gesetzten Werten
- notset - Geräte ohne für den Tag gesetzten Wert
Versions-Tag-Operatoren
Anchor link to- eq - gleich einem angegebenen Wert
- noteq - ungleich einem angegebenen Wert
- lte - kleiner oder gleich einem angegebenen Wert
- gte - größer oder gleich einem angegebenen Wert
- in - gleich einem der angegebenen Werte
- notin - ungleich einem der angegebenen Werte
- between - in einem angegebenen Bereich
- any - Geräte mit beliebigen für den Tag gesetzten Werten
- notset - Geräte ohne für den Tag gesetzten Wert
Operatoren für Event-Bedingungen
Anchor link toEvent-Anzahl
Anchor link to- count gte - Geräte, die das Event mehr als oder genau n-mal ausgelöst haben
- count lte - Geräte, die das Event weniger als oder genau n-mal ausgelöst haben
- count eq - Geräte, die das Event genau n-mal ausgelöst haben
- count noteq - Geräte, die das Event beliebig oft, aber nicht genau n-mal ausgelöst haben
Event-Datum
Anchor link to- date gte - Geräte, die das Event später als oder genau am angegebenen Datum ausgelöst haben
- date lte - Geräte, die das Event früher als oder genau am angegebenen Datum ausgelöst haben
- date eq - Geräte, die das Event genau am angegebenen Datum ausgelöst haben
- date noteq - Geräte, die das Event jederzeit, aber nicht am angegebenen Datum ausgelöst haben
- date in - Geräte, die das Event an einem der angegebenen Daten ausgelöst haben
- date notin - Geräte, die das Event jederzeit, aber nicht an einem der angegebenen Daten ausgelöst haben
- date between - Geräte, die das Event innerhalb eines angegebenen Zeitraums ausgelöst haben
- date daysago eq - Auslösedatum des Events ist gleich einer angegebenen Anzahl von Tagen vor dem heutigen Tag
- date daysago noteq - Auslösedatum des Events ist ungleich einer angegebenen Anzahl von Tagen vor dem heutigen Tag
- date daysago lte - Auslösedatum des Events ist kleiner oder gleich einer angegebenen Anzahl von Tagen vor dem heutigen Tag
- date daysago gte - Auslösedatum des Events ist größer oder gleich einer angegebenen Anzahl von Tagen vor dem heutigen Tag
- date daysago between - Auslösedatum des Events liegt zwischen der angegebenen Anzahl von Tagen
- date daysahead - Auslösedatum des Events liegt in einer angegebenen Anzahl von Tagen ab dem heutigen Tag (Intervall ist beidseitig einschließlich, siehe Datums-Tag-Operatoren oben für die vollständige Semantik)
- date minutesago lte - Auslösedatum des Events ist kleiner oder gleich einer angegebenen Anzahl von Minuten vor dem jetzigen Zeitpunkt
- date minutesago gte - Auslösedatum des Events ist größer oder gleich einer angegebenen Anzahl von Minuten vor dem jetzigen Zeitpunkt
Event-Plattformen
Anchor link toFiltern Sie Events nach der Plattform, auf der sie ausgelöst wurden.
- platforms - Liste der Plattformen (z. B. [“ios”, “android”])
Event-Attribute
Anchor link toEvent-Bedingungen können basierend auf den Werten von Event-Attributen filtern. Attribute unterstützen verschiedene Datentypen mit den entsprechenden Operatoren.
Integer-Event-Attribute
Anchor link to- attribute “name” eq - Attribut ist gleich einem angegebenen Wert
- attribute “name” noteq - Attribut ist ungleich einem angegebenen Wert
- attribute “name” gte - Attribut ist größer oder gleich einem angegebenen Wert
- attribute “name” lte - Attribut ist kleiner oder gleich einem angegebenen Wert
- attribute “name” between - Attribut liegt in einem angegebenen Bereich
- attribute “name” in - Attribut ist gleich einem der angegebenen Werte
- attribute “name” notin - Attribut ist ungleich einem der angegebenen Werte
- attribute “name” any - beliebiger Wert für das Attribut gesetzt
- attribute “name” notset - kein Wert für das Attribut gesetzt
String-Event-Attribute
Anchor link to- attribute “name” eq - Attribut ist gleich einem angegebenen Wert
- attribute “name” noteq - Attribut ist ungleich einem angegebenen Wert
- attribute “name” startswith - Attribut beginnt mit einem angegebenen Präfix
- attribute “name” endswith - Attribut endet mit einem angegebenen Suffix
- attribute “name” contains - Attribut enthält eine angegebene Teilzeichenfolge
- attribute “name” in - Attribut ist gleich einem der angegebenen Werte
- attribute “name” notin - Attribut ist ungleich einem der angegebenen Werte
- attribute “name” any - beliebiger Wert für das Attribut gesetzt
- attribute “name” notset - kein Wert für das Attribut gesetzt
Boolesche Event-Attribute
Anchor link to- attribute “name” eq - Attribut ist gleich true oder false
- attribute “name” noteq - Attribut ist ungleich true oder false
Datums-Event-Attribute
Anchor link to- attribute “name” eq - Attribut ist gleich einem angegebenen Datum
- attribute “name” noteq - Attribut ist ungleich einem angegebenen Datum
- attribute “name” gte - Attribut ist nach oder an einem angegebenen Datum
- attribute “name” lte - Attribut ist vor oder an einem angegebenen Datum
- attribute “name” between - Attribut liegt innerhalb eines angegebenen Datumsbereichs
- attribute “name” in - Attribut ist gleich einem der angegebenen Daten
- attribute “name” notin - Attribut ist ungleich einem der angegebenen Daten
- attribute “name” daysago eq/noteq/gte/lte/between - Attribut relativ zu Tagen zuvor
- attribute “name” daysahead from to - Attribut in einem angegebenen Intervall von Tagen ab dem heutigen Tag (Intervall ist beidseitig einschließlich, siehe Datums-Tag-Operatoren oben für die vollständige Semantik)
- attribute “name” minutesago gte/lte - Attribut relativ zu Minuten zuvor
- attribute “name” any - beliebiger Wert für das Attribut gesetzt
- attribute “name” notset - kein Wert für das Attribut gesetzt
Preis-Event-Attribute
Anchor link to- attribute “name” eq - Attribut ist gleich einem angegebenen Preiswert
- attribute “name” noteq - Attribut ist ungleich einem angegebenen Preiswert
- attribute “name” gte - Attribut ist größer oder gleich einem angegebenen Preis
- attribute “name” lte - Attribut ist kleiner oder gleich einem angegebenen Preis
- attribute “name” between - Attribut liegt in einem angegebenen Preisbereich
- attribute “name” in - Attribut ist gleich einem der angegebenen Preise
- attribute “name” notin - Attribut ist ungleich einem der angegebenen Preise
- attribute “name” any - beliebiger Wert für das Attribut gesetzt
- attribute “name” notset - kein Wert für das Attribut gesetzt
Listen-Event-Attribute
Anchor link to- attribute “name” in - Attribut enthält einen der angegebenen Werte
- attribute “name” notin - Attribut enthält keinen der angegebenen Werte
- attribute “name” any - beliebiger Wert für das Attribut gesetzt
- attribute “name” notset - kein Wert für das Attribut gesetzt
Zusätzliche Bedingungstypen
Anchor link toGeo-Bedingung
Anchor link toGeräte basierend auf dem geografischen Standort innerhalb eines bestimmten Radius ansprechen.
Syntax: Geo("<App-Code>", <Breitengrad>, <Längengrad>, <Reichweite-in-km>)
BTTS-Bedingung
Anchor link toGeräte nach ihrer besten Sendezeit für Benachrichtigungen ansprechen (Stunde des Tages, 0-23).
Operatoren:
- any - beliebiger Wert für die beste Sendezeit gesetzt
- eq - exakte Stundenübereinstimmung
- noteq - ungleich der Stunde
- gte - Stunde größer oder gleich
- lte - Stunde kleiner oder gleich
Updated-Bedingung
Anchor link toGeräte nach ihrem letzten Aktualisierungszeitstempel filtern.
Operatoren:
- gte - aktualisiert nach oder am angegebenen Datum
- lte - aktualisiert vor oder am angegebenen Datum
- between - aktualisiert innerhalb des Datumsbereichs
Segment-Bedingung
Anchor link toAuf einen anderen Filter/ein anderes Segment über dessen Code verweisen.
Flags für die Gerätepräsenz in Anwendungsbedingungen
Anchor link toAnwendungsbedingungen unterstützen zusätzliche Flags zur Steuerung der Geräte- und Token-Filterung:
- with_tokens - Geräte mit Push-Benachrichtigungs-Tokens
- without_tokens - Geräte ohne Push-Benachrichtigungs-Tokens
- with_devices - Benutzer mit registrierten Geräten
- without_devices - Benutzer/Profile ohne registrierte Geräte
Beispiele für Filterausdrücke
Anchor link toGrundlegende Beispiele
Anchor link to- iOS- und Android-Geräte, auf denen die App installiert ist und die Push-Tokens haben:
A("11111-11111", ["ios","android"], [with_tokens])- iOS- und Android-Geräte, auf denen die App installiert ist, aber ohne Push-Tokens:
A("11111-11111", ["ios","android"], [without_tokens])- iOS- und Android-Geräte, auf denen die App installiert ist, unabhängig davon, ob sie Push-Tokens haben oder nicht:
A("11111-11111", ["ios","android"], [with_tokens, without_tokens])- Alle App-Abonnenten, die etwas in der App gekauft haben:
AT("11111-11111", "In-App Purchase", gte, 1)Fortgeschrittene Beispiele
Anchor link to- Benutzer in Tokio, die die App in den letzten 7 Tagen geöffnet haben:
T("City", eq, "Tokyo") * Event("11111-11111", "App Open", date daysago lte 7)- Benutzer, die in den letzten 30 Tagen einen Kauf über 50 $ getätigt haben:
Event("11111-11111", "Purchase", attribute "total_price" gte 50.00, date daysago lte 30)- Benutzer, deren Namen mit „J“ beginnen oder mit „e“ enden:
T("Name", startswith, "J") + T("Name", endswith, "e")- Aktive iOS-Benutzer innerhalb von 100 km von New York, die in letzter Zeit nichts gekauft haben:
A("11111-11111", ["ios"], [with_tokens]) * Geo("11111-11111", 40.7128, -74.0060, 100) \ Event("11111-11111", "Purchase", date daysago lte 30)- Benutzer mit der besten Sendezeit zwischen 9 und 17 Uhr:
BTTS("11111-11111", gte 9) * BTTS("11111-11111", lte 17)- Benutzer, die in der letzten Stunde ein bestimmtes Event auf Android oder iOS ausgelöst haben:
Event("11111-11111", "Button Click", platforms ["android", "ios"], date minutesago lte 60)- Geräte, die in den letzten 3 Monaten aktualisiert wurden und die App-Version 4.2 oder höher haben:
Updated("11111-11111", gte "2024-07-01 00:00:00") * AT("11111-11111", "App Version", gte, "4.2")