Segmentler
Abone özelliklerine ve davranışlarına dayalı dinamik segmentler oluşturun
Segmentler, koşullarla tanımlanan dinamik abone gruplarıdır. Statik listelerden farklı olarak, segmentler abone verileri değiştikçe otomatik olarak güncellenir. Özellikler, etkileşim ve davranışa göre belirli kitleleri hedeflemek için kampanyalarda segmentleri kullanın.
Eşleşme Türleri
| Eşleşme Türü | Değer | Açıklama |
|---|---|---|
All | 0 | Tüm koşullar eşleşmelidir (AND mantığı) |
Any | 1 | Herhangi bir koşul eşleşebilir (OR mantığı) |
Segment Oluşturma
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"
}
]
}| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | Evet | Segment adı (çalışma alanı başına benzersiz) |
description | string | Hayır | Segment açıklaması |
matchType | string | Hayır | All (varsayılan) veya Any |
conditions | array | Evet | En az bir koşul |
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" }
]
}'Yanıt
{
"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"
}Yanıtlar, oluşturma/güncelleme isteği "All"/"Any" kabul etse bile matchType'ı küçük harfle ("all" / "any") döndürür.
Açma/tıklamaya dayalı koşul alanları (emailsopened, lastemailopenedat vb.), bugün filtrelenmeyen makine etkinliğini, Apple Mail Privacy Protection ön yüklemesi ve güvenlik bağlantı tarayıcılarını, içerir.
Belgelenmemiş bir GET /{id}/preview uç noktası da mevcuttur ve segmentin koşullarıyla şu anda eşleşen abonelerden bir örnek döndürür.
Koşul Alanları
Metin Alanları
Alanlar: email, firstname, lastname, company, source, phone
| Operatör | Açıklama | Değer Gerekli |
|---|---|---|
equals | Tam eşleşme | Evet |
notequals | Eşit değil | Evet |
contains | Alt dizi içerir | Evet |
notcontains | İçermez | Evet |
startswith | Şununla başlar | Evet |
endswith | Şununla biter | Evet |
isempty | Alan boş | Hayır |
isnotempty | Alan boş değil | Hayır |
Sayısal Alanlar
Alanlar: emailssent, emailsopened, emailsclicked
| Operatör | Açıklama | Değer Gerekli | Değer2 Gerekli |
|---|---|---|---|
equals | Eşittir | Evet | Hayır |
notequals | Eşit değil | Evet | Hayır |
greaterthan | Büyüktür | Evet | Hayır |
greaterthanorequal | Büyük veya eşit | Evet | Hayır |
lessthan | Küçüktür | Evet | Hayır |
lessthanorequal | Küçük veya eşit | Evet | Hayır |
between | İki değer arasında | Evet | Evet |
Tarih Alanları
Alanlar: createdat, subscribedat, lastemailsentat, lastemailopenedat, lastemailclickedat
| Operatör | Açıklama | Değer Gerekli |
|---|---|---|
equals | Belirli bir tarihte | Evet (ISO tarih) |
before | Tarihten önce | Evet (ISO tarih) |
after | Tarihten sonra | Evet (ISO tarih) |
onorbefore | Tarihte veya önce | Evet (ISO tarih) |
onorafter | Tarihte veya sonra | Evet (ISO tarih) |
between | Tarihler arasında | Evet (value + value2) |
inlast | Son N günde | Evet (tam sayı gün) |
isnull | Tarih belirlenmemiş | Hayır |
isnotnull | Tarih belirlenmiş | Hayır |
Enum Alanları
Alan: status
| Operatör | Açıklama | Değerler |
|---|---|---|
equals | Duruma eşit | Active, Unsubscribed, Bounced, Complained |
notequals | Eşit değil | Aynı değerler |
Koşul Örnekleri
{ "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 Meta Verilerini Alma
Segment koşulları oluşturmak için mevcut tüm alanları, operatörleri ve enum değerlerini alın:
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"]
}
]
}Segmentleri Listeleme
GET https://api.mail.land/v1/marketing/segments| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
cursor | string | - | Önceki sayfanın nextCursor değerinden alınan opak imleç. İlk sayfa için belirtmeyin. |
limit | int | 20 | Sayfa başına öğe |
search | string | - | Ad veya açıklamada ara |
sortBy | string | - | Sıralama alanı |
sortDesc | bool | false | Azalan sıralama |
curl "https://api.mail.land/v1/marketing/segments?limit=20" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Segment Ayrıntılarını Alma
GET https://api.mail.land/v1/marketing/segments/{id}Koşullarıyla birlikte tam segmenti döndürür:
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"
}Koşulları Önizleme
Segment oluşturmadan önce koşulların sonucunu önizleyin. Segment değerlendirmesi her zaman Active durumundaki abonelerle sınırlıdır, bu nedenle status notequals Active gibi bir koşul kimseyle eşleşmez.
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]"
]
}Segment Sayısını Alma
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 Önbelleğini Yenileme
Eşleşen abonelerin yeniden sayılmasını zorla:
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 Kopyalama
POST https://api.mail.land/v1/marketing/segments/{id}/duplicate?name=Copy%20of%20SegmentKlonlanmış koşullarla yeni bir segment oluşturur. name parametresi isteğe bağlıdır.
curl -X POST "https://api.mail.land/v1/marketing/segments/0qe306asbapwvd/duplicate?name=Copy%20of%20Segment" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Segment Güncelleme
PUT https://api.mail.land/v1/marketing/segments/{id}İstek gövdesi oluşturma isteğiyle aynıdır. Bir segmenti güncellemek, önbelleğe alınan sayısını otomatik olarak yeniler.
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 Silme
DELETE https://api.mail.land/v1/marketing/segments/{id}Bir segmenti silmek, onu hedefleyen Draft veya Scheduled durumundaki her kampanyadan ayırır (kampanyanın segmentId alanı temizlenir); bu da kampanyayı hedef kitlesiz bırakır: gönderim 422 döner veya kimseye teslim edilmez. Zaten Sending durumunda olan bir kampanya etkilenmez, çünkü alıcıları daha önce belirlenmiştir.
curl -X DELETE https://api.mail.land/v1/marketing/segments/0qe306asbapwvd \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Hata Yanıtları
| Durum | Kod | Açıklama |
|---|---|---|
400 | VALIDATION_FAILED | Ad veya koşullar geçersiz |
400 | INVALID_REQUEST | Segment adı zaten mevcut |
403 | FORBIDDEN | Yetersiz izinler |
404 | RESOURCE_NOT_FOUND | Segment bulunamadı |
Sonraki Adımlar
- Kampanyalar: kampanyaları segmentlerle hedefleme
- Otomasyonlar: otomasyonlar şu anda segment üyeliğine göre tetiklenmez
- Aboneler: segmentlerinizdeki kişileri yönetme