سگمنتها
ایجاد سگمنتهای پویا بر اساس ویژگیها و رفتار مشترکین
سگمنتها گروههای پویای مشترکین هستند که بر اساس شرایط تعریف میشوند. برخلاف لیستهای ثابت، سگمنتها بهطور خودکار با تغییر دادههای مشترکین بهروزرسانی میشوند. از سگمنتها برای هدفگذاری کمپینها به مخاطبان خاص بر اساس ویژگیها، تعامل و رفتار استفاده کنید.
انواع تطابق
| نوع تطابق | مقدار | توضیح |
|---|---|---|
All | 0 | همه شرایط باید تطابق داشته باشند (منطق AND) |
Any | 1 | هر شرطی میتواند تطابق داشته باشد (منطق OR) |
ایجاد سگمنت
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"
}
]
}| فیلد | نوع | الزامی | توضیح |
|---|---|---|---|
name | string | بله | نام سگمنت (منحصر به فرد در هر فضای کاری) |
description | string | خیر | توضیحات سگمنت |
matchType | string | خیر | All (پیشفرض) یا Any |
conditions | array | بله | حداقل یک شرط |
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" }
]
}'پاسخ
{
"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"
}پاسخها matchType را بهصورت حروف کوچک برمیگردانند ("all" / "any") حتی اگر درخواست ایجاد/بهروزرسانی "All"/"Any" را بپذیرد.
فیلدهای شرط مبتنی بر باز شدن/کلیک (emailsopened، lastemailopenedat و غیره) شامل فعالیت ماشینی هستند، پیشبارگذاری Apple Mail Privacy Protection و اسکنرهای امنیتی لینک، که امروز فیلتر نمیشوند.
یک endpoint مستندنشدهی GET /{id}/preview نیز وجود دارد که نمونهای از مشترکینی را که در حال حاضر با شرایط بخش مطابقت دارند برمیگرداند.
فیلدهای شرط
فیلدهای رشتهای
فیلدها: email، firstname، lastname، company، source، phone
| عملگر | توضیح | نیاز به مقدار |
|---|---|---|
equals | تطابق دقیق | بله |
notequals | نامساوی | بله |
contains | شامل زیررشته | بله |
notcontains | شامل نیست | بله |
startswith | شروع با | بله |
endswith | پایان با | بله |
isempty | فیلد خالی است | خیر |
isnotempty | فیلد خالی نیست | خیر |
فیلدهای عددی
فیلدها: emailssent، emailsopened، emailsclicked
| عملگر | توضیح | نیاز به مقدار | نیاز به مقدار ۲ |
|---|---|---|---|
equals | مساوی | بله | خیر |
notequals | نامساوی | بله | خیر |
greaterthan | بزرگتر از | بله | خیر |
greaterthanorequal | بزرگتر یا مساوی | بله | خیر |
lessthan | کوچکتر از | بله | خیر |
lessthanorequal | کوچکتر یا مساوی | بله | خیر |
between | بین دو مقدار | بله | بله |
فیلدهای تاریخ
فیلدها: createdat، subscribedat، lastemailsentat، lastemailopenedat، lastemailclickedat
| عملگر | توضیح | نیاز به مقدار |
|---|---|---|
equals | در تاریخ مشخص | بله (تاریخ ISO) |
before | قبل از تاریخ | بله (تاریخ ISO) |
after | بعد از تاریخ | بله (تاریخ ISO) |
onorbefore | در یا قبل از | بله (تاریخ ISO) |
onorafter | در یا بعد از | بله (تاریخ ISO) |
between | بین دو تاریخ | بله (value + value2) |
inlast | در N روز گذشته | بله (عدد صحیح روز) |
isnull | تاریخ تنظیم نشده | خیر |
isnotnull | تاریخ تنظیم شده | خیر |
فیلدهای شمارشی
فیلد: status
| عملگر | توضیح | مقادیر |
|---|---|---|
equals | مساوی با وضعیت | Active، Unsubscribed، Bounced، Complained |
notequals | نامساوی با | همان مقادیر |
نمونه شرطها
{ "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" }دریافت متادیتای سگمنت
دریافت تمام فیلدها، عملگرها و مقادیر شمارشی موجود برای ساخت شرایط سگمنت:
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"]
}
]
}فهرست سگمنتها
GET https://api.mail.land/v1/marketing/segments| پارامتر | نوع | پیشفرض | توضیح |
|---|---|---|---|
cursor | string | - | نشانگر مبهم از nextCursor صفحهٔ قبل. برای صفحهٔ اول حذف کنید. |
limit | int | 20 | تعداد در هر صفحه |
search | string | - | جستجو بر اساس نام یا توضیحات |
sortBy | string | - | فیلد مرتبسازی |
sortDesc | bool | false | مرتبسازی نزولی |
curl "https://api.mail.land/v1/marketing/segments?limit=20" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."دریافت جزئیات سگمنت
GET https://api.mail.land/v1/marketing/segments/{id}سگمنت کامل همراه با شرایط را برمیگرداند:
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"
}پیشنمایش شرایط
پیشنمایش نتیجهی شرایط پیش از ایجاد سگمنت. ارزیابی سگمنت همیشه به مشترکینی با وضعیت Active محدود میشود، بنابراین شرطی مانند status notequals Active هیچکس را مطابقت نمیدهد.
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]"
]
}دریافت تعداد سگمنت
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
}بهروزرسانی کش سگمنت
اجبار به شمارش مجدد مشترکین منطبق:
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"
}کپی از سگمنت
POST https://api.mail.land/v1/marketing/segments/{id}/duplicate?name=Copy%20of%20Segmentیک سگمنت جدید با شرایط کپیشده ایجاد میکند. پارامتر name اختیاری است.
curl -X POST "https://api.mail.land/v1/marketing/segments/0qe306asbapwvd/duplicate?name=Copy%20of%20Segment" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."بهروزرسانی سگمنت
PUT https://api.mail.land/v1/marketing/segments/{id}بدنه درخواست با درخواست ایجاد مطابقت دارد. بهروزرسانی سگمنت بهطور خودکار تعداد کششده آن را بهروز میکند.
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" }
]
}'حذف سگمنت
DELETE https://api.mail.land/v1/marketing/segments/{id}حذف یک سگمنت، آن را از هر کمپینی با وضعیت Draft یا Scheduled که آن را هدف قرار داده جدا میکند (فیلد segmentId کمپین پاک میشود)، در نتیجه آن کمپین بدون مخاطب میماند: ارسال آن یا 422 برمیگرداند یا به هیچکس تحویل داده نمیشود. کمپینی که از قبل در وضعیت Sending است تحت تأثیر قرار نمیگیرد، زیرا مخاطبانش پیشتر مشخص شدهاند.
curl -X DELETE https://api.mail.land/v1/marketing/segments/0qe306asbapwvd \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."پاسخهای خطا
| وضعیت | کد | توضیح |
|---|---|---|
400 | VALIDATION_FAILED | نام یا شرایط نامعتبر |
400 | INVALID_REQUEST | نام سگمنت از قبل وجود دارد |
403 | FORBIDDEN | دسترسی ناکافی |
404 | RESOURCE_NOT_FOUND | سگمنت یافت نشد |
مراحل بعدی
- کمپینها: هدفگذاری کمپینها با سگمنتها
- اتوماسیونها: اتوماسیونها در حال حاضر بر اساس عضویت در سگمنت فعال نمیشوند
- مشترکین: مدیریت مخاطبان در سگمنتهای خود