Segmente
Erstellen Sie dynamische Segmente basierend auf Abonnentenattributen und -verhalten
Segmente sind dynamische Abonnentengruppen, die durch Bedingungen definiert werden. Im Gegensatz zu statischen Listen werden Segmente automatisch aktualisiert, wenn sich Abonnentendaten ändern. Verwenden Sie Segmente, um Kampagnen auf bestimmte Zielgruppen basierend auf Attributen, Engagement und Verhalten auszurichten.
Übereinstimmungstypen
| Übereinstimmungstyp | Wert | Beschreibung |
|---|---|---|
All | 0 | Alle Bedingungen müssen übereinstimmen (AND-Logik) |
Any | 1 | Jede Bedingung kann übereinstimmen (OR-Logik) |
Segment erstellen
POST https://api.mail.land/v1/marketing/segments{
"name": "Active Engaged Users",
"description": "Users who opened or clicked in last 30 days",
"matchType": "All",
"conditions": [
{
"field": "lastemailopenedat",
"operator": "inlast",
"value": "30"
},
{
"field": "status",
"operator": "equals",
"value": "Active"
}
]
}| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name | string | Ja | Segmentname (eindeutig pro Arbeitsbereich) |
description | string | Nein | Segmentbeschreibung |
matchType | string | Nein | All (Standard) oder Any |
conditions | array | Ja | Mindestens eine Bedingung |
curl -X POST https://api.mail.land/v1/marketing/segments \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "Active Engaged Users",
"matchType": "All",
"conditions": [
{ "field": "lastemailopenedat", "operator": "inlast", "value": "30" },
{ "field": "status", "operator": "equals", "value": "Active" }
]
}'Antwort
{
"id": "0qe306asbapwvd",
"name": "Active Engaged Users",
"description": "Users who opened or clicked in last 30 days",
"matchType": "all",
"matchTypeName": "All",
"conditionsCount": 2,
"subscriberCount": 450,
"createdAt": "2026-02-17T12:00:00Z",
"updatedAt": "2026-02-17T12:00:00Z"
}Antworten geben matchType in Kleinbuchstaben zurück ("all" / "any"), auch wenn die Erstellungs-/Aktualisierungsanfrage "All"/"Any" akzeptiert.
Bedingungsfelder, die auf Öffnungen/Klicks basieren (emailsopened, lastemailopenedat usw.), enthalten maschinelle Aktivität, Apple Mail Privacy Protection Prefetch und Sicherheits-Link-Scanner, die heute nicht herausgefiltert wird.
Ein undokumentierter Endpunkt GET /{id}/preview existiert ebenfalls und liefert eine Stichprobe von Abonnenten, die derzeit den Bedingungen des Segments entsprechen.
Bedingungsfelder
Textfelder
Felder: email, firstname, lastname, company, source, phone
| Operator | Beschreibung | Wert erforderlich |
|---|---|---|
equals | Exakte Übereinstimmung | Ja |
notequals | Nicht gleich | Ja |
contains | Enthält Teilzeichenfolge | Ja |
notcontains | Enthält nicht | Ja |
startswith | Beginnt mit | Ja |
endswith | Endet mit | Ja |
isempty | Feld ist leer | Nein |
isnotempty | Feld ist nicht leer | Nein |
Numerische Felder
Felder: emailssent, emailsopened, emailsclicked
| Operator | Beschreibung | Wert erforderlich | Wert2 erforderlich |
|---|---|---|---|
equals | Gleich | Ja | Nein |
notequals | Nicht gleich | Ja | Nein |
greaterthan | Größer als | Ja | Nein |
greaterthanorequal | Größer oder gleich | Ja | Nein |
lessthan | Kleiner als | Ja | Nein |
lessthanorequal | Kleiner oder gleich | Ja | Nein |
between | Zwischen zwei Werten | Ja | Ja |
Datumsfelder
Felder: createdat, subscribedat, lastemailsentat, lastemailopenedat, lastemailclickedat
| Operator | Beschreibung | Wert erforderlich |
|---|---|---|
equals | An bestimmtem Datum | Ja (ISO-Datum) |
before | Vor Datum | Ja (ISO-Datum) |
after | Nach Datum | Ja (ISO-Datum) |
onorbefore | Am oder vor | Ja (ISO-Datum) |
onorafter | Am oder nach | Ja (ISO-Datum) |
between | Zwischen Daten | Ja (value + value2) |
inlast | In den letzten N Tagen | Ja (ganzzahlige Tage) |
isnull | Datum nicht gesetzt | Nein |
isnotnull | Datum gesetzt | Nein |
Enum-Felder
Feld: status
| Operator | Beschreibung | Werte |
|---|---|---|
equals | Gleich Status | Active, Unsubscribed, Bounced, Complained |
notequals | Nicht gleich | Gleiche Werte |
Bedingungsbeispiele
{ "field": "email", "operator": "contains", "value": "example.com" }{ "field": "emailssent", "operator": "between", "value": "10", "value2": "50" }{ "field": "lastemailclickedat", "operator": "inlast", "value": "7" }{ "field": "firstname", "operator": "isempty" }Segment-Metadaten abrufen
Rufen Sie alle verfügbaren Felder, Operatoren und Enum-Werte für die Erstellung von Segmentbedingungen ab:
GET https://api.mail.land/v1/marketing/segments/metadata/fieldscurl https://api.mail.land/v1/marketing/segments/metadata/fields \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"fields": [
{
"name": "email",
"label": "Email",
"type": "string",
"operators": ["equals", "notequals", "contains", "notcontains", "startswith", "endswith", "isempty", "isnotempty"],
"enumValues": null
},
{
"name": "status",
"label": "Status",
"type": "enum",
"operators": ["equals", "notequals"],
"enumValues": ["Active", "Unsubscribed", "Bounced", "Complained"]
}
]
}Segmente auflisten
GET https://api.mail.land/v1/marketing/segments| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
cursor | string | - | Opaker Cursor aus dem nextCursor der vorherigen Seite. Für die erste Seite weglassen. |
limit | int | 20 | Elemente pro Seite |
search | string | - | Nach Name oder Beschreibung suchen |
sortBy | string | - | Sortierfeld |
sortDesc | bool | false | Absteigend sortieren |
curl "https://api.mail.land/v1/marketing/segments?limit=20" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Segmentdetails abrufen
GET https://api.mail.land/v1/marketing/segments/{id}Gibt das vollständige Segment mit seinen Bedingungen zurück:
curl https://api.mail.land/v1/marketing/segments/0qe306asbapwvd \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"id": "0qe306asbapwvd",
"name": "Active Engaged Users",
"description": "Users who engaged in last 30 days",
"matchType": "all",
"matchTypeName": "All",
"conditionsCount": 2,
"subscriberCount": 450,
"conditions": [
{
"field": "lastemailopenedat",
"operator": "inlast",
"value": "30",
"value2": null
},
{
"field": "status",
"operator": "equals",
"value": "Active",
"value2": null
}
],
"cachedCount": 450,
"cachedAt": "2026-02-17T10:00:00Z",
"createdAt": "2026-01-10T08:00:00Z",
"updatedAt": "2026-02-17T10:00:00Z"
}Bedingungen in der Vorschau anzeigen
Zeigen Sie das Ergebnis der Bedingungen vor der Erstellung eines Segments in der Vorschau an. Die Segmentauswertung beschränkt sich immer auf Abonnenten mit dem Status Active, sodass eine Bedingung wie status notequals Active auf niemanden zutrifft.
POST https://api.mail.land/v1/marketing/segments/preview{
"conditions": [
{ "field": "lastemailopenedat", "operator": "inlast", "value": "30" }
],
"matchType": "All"
}curl -X POST https://api.mail.land/v1/marketing/segments/preview \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"conditions": [
{ "field": "lastemailopenedat", "operator": "inlast", "value": "30" }
],
"matchType": "All"
}'{
"count": 450,
"sampleEmails": [
"[email protected]",
"[email protected]",
"[email protected]"
]
}Segmentanzahl abrufen
GET https://api.mail.land/v1/marketing/segments/{id}/countcurl https://api.mail.land/v1/marketing/segments/0qe306asbapwvd/count \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"segmentId": "0qe306asbapwvd",
"count": 450
}Segment-Cache aktualisieren
Erzwingen Sie eine erneute Zählung der übereinstimmenden Abonnenten:
POST https://api.mail.land/v1/marketing/segments/{id}/refreshcurl -X POST https://api.mail.land/v1/marketing/segments/0qe306asbapwvd/refresh \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"segmentId": "0qe306asbapwvd",
"count": 460,
"refreshedAt": "2026-02-17T12:30:00Z"
}Segment duplizieren
POST https://api.mail.land/v1/marketing/segments/{id}/duplicate?name=Copy%20of%20SegmentErstellt ein neues Segment mit geklonten Bedingungen. Der Parameter name ist optional.
curl -X POST "https://api.mail.land/v1/marketing/segments/0qe306asbapwvd/duplicate?name=Copy%20of%20Segment" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Segment aktualisieren
PUT https://api.mail.land/v1/marketing/segments/{id}Der Anfragekörper entspricht der Erstellungsanfrage. Das Aktualisieren eines Segments aktualisiert automatisch dessen zwischengespeicherte Anzahl.
curl -X PUT https://api.mail.land/v1/marketing/segments/0qe306asbapwvd \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "Active Engaged Users (Updated)",
"matchType": "All",
"conditions": [
{ "field": "lastemailopenedat", "operator": "inlast", "value": "14" },
{ "field": "status", "operator": "equals", "value": "Active" }
]
}'Segment löschen
DELETE https://api.mail.land/v1/marketing/segments/{id}Das Löschen eines Segments trennt es von jeder Kampagne im Status Draft oder Scheduled, die es als Ziel hat (die segmentId der Kampagne wird geleert), wodurch diese Kampagne keine Zielgruppe mehr hat: beim Senden erhalten Sie 422, oder es wird an niemanden zugestellt. Eine Kampagne, die sich bereits im Status Sending befindet, ist davon nicht betroffen, da ihre Empfänger bereits aufgelöst wurden.
curl -X DELETE https://api.mail.land/v1/marketing/segments/0qe306asbapwvd \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Fehlerantworten
| Status | Code | Beschreibung |
|---|---|---|
400 | VALIDATION_FAILED | Name oder Bedingungen ungültig |
400 | INVALID_REQUEST | Segmentname existiert bereits |
403 | FORBIDDEN | Unzureichende Berechtigungen |
404 | RESOURCE_NOT_FOUND | Segment nicht gefunden |
Nächste Schritte
- Kampagnen: Kampagnen mit Segmenten ausrichten
- Automatisierungen: Automatisierungen werden derzeit nicht durch Segmentzugehörigkeit ausgelöst
- Abonnenten: Kontakte in Ihren Segmenten verwalten