ارسال رویداد RetenX از سمت سرور
ثبت رویداد سفارشی از سمت سرور برای شروع، خروج، ادامه Wait Until و تأیید تبدیل و درآمد واقعی Journey.
شناسایی مخاطب
رویداد میتواند با subscriber_id، external_id، یک شناسه سفارشی (Custom Alias) مانند mobile یا fcm_token به پروفایل متصل شود. external_id همان Alias عادی و اصلی است و با شناسههای سفارشی برچسبدار در aliases[label] تفاوت دارد. اگر پروفایل وجود نداشته باشد و external_id یا شناسه سفارشی (Custom Alias) ارسال شود، پروفایل SMS-only بهصورت خودکار ساخته میشود. idempotency_key از ثبت دوباره یک رویداد در retryهای سرور جلوگیری میکند.
پارامترها
| فیلد | توضیح | الزام |
|---|---|---|
| api_public_key | کلید عمومی سرویس پوشفا | بله |
| api_private_key | کلید خصوصی سرویس پوشفا | بله |
| event_name | نام event مطابق Start، رویداد هدف/Exit یا Wait Until سفر | بله |
| subscriber_id | شناسه ثابت مخاطب (Subscriber ID) | یکی از روشهای شناسایی |
| external_id | Alias عادی و اصلی کاربر؛ متفاوت از شناسه سفارشی (Custom Alias) | یکی از روشهای شناسایی |
| aliases[mobile] | شناسه سفارشی (Custom Alias) برچسبدار برای جستجو یا ساخت پروفایل | یکی از روشهای شناسایی |
| params[key] | properties رویداد برای شرط، شخصیسازی یا تبدیل | خیر |
| params[order_id] | شناسه یکتای سفارش مطابق پارامتر شناسه تنظیمشده در سفر مشتری | برای درآمد تأییدشده بله |
| params[amount] | مبلغ سفارش مطابق پارامتر مبلغ تنظیمشده در سفر مشتری | برای محاسبه درآمد بله |
| event_time | زمان ISO 8601 رویداد؛ پیشفرض زمان دریافت | خیر |
| idempotency_key | UUID یکتا برای جلوگیری از رویداد تکراری | خیر ولی پیشنهادی |
نمونه form-data
curl -X POST https://pushfa.com/api/webservices/retention/events \
-F "api_public_key=YOUR_PUBLIC_KEY" \
-F "api_private_key=YOUR_PRIVATE_KEY" \
-F "event_name=add_to_cart" \
-F "aliases[mobile]=09120000000" \
-F "params[mobile]=09120000000" \
-F "params[product_id]=123" \
-F "idempotency_key=550e8400-e29b-41d4-a716-446655440000"
نمونه تأیید تبدیل و درآمد از سمت سرور
بعد از تأیید قطعی پرداخت، رویداد هدف سفر مشتری را از سمت سرور بفرستید. درخواست دارای api_private_key و شناسه سفارش معتبر، تبدیل را سروری تأیید میکند و مبلغ آن وارد درآمد تأییدشده میشود. api_private_key نباید در مرورگر یا اپلیکیشن قرار بگیرد.
curl -X POST https://pushfa.com/api/webservices/retention/events \
-H "Content-Type: application/json" \
-d '{
"api_public_key": "YOUR_PUBLIC_KEY",
"api_private_key": "YOUR_PRIVATE_KEY",
"subscriber_id": "SUBSCRIBER_UUID",
"event_name": "checkout_completed",
"event_time": "2026-08-23T14:35:00+03:30",
"idempotency_key": "550e8400-e29b-41d4-a716-446655440000",
"params": {
"order_id": "ORD-1042",
"amount": 850000
}
}'
تشخیص پذیرش رویداد
رویداد زمانی پذیرفته میشود که نام آن با Start یک سفر مشتری فعال، رویداد هدف/Exit یا یک گره Wait Until در سفر مشتری واجد شرایط مطابقت داشته باشد. برای تشخیص نتیجه، HTTP status و فیلد status پاسخ را بررسی کنید؛ پاسخ 200 یا 201 با status برابر success یعنی رویداد پذیرفته شده و پاسخ 404 با status برابر error یعنی پذیرفته نشده است.
| HTTP status | نتیجه | توضیح |
|---|---|---|
| 201 | پذیرفته شد | رویداد جدید با موفقیت ثبت شده است. |
| 200 | پذیرفته شد | رویداد با همین idempotency_key قبلاً ثبت شده و دوباره ساخته نشده است. |
| 404 | پذیرفته نشد | نام رویداد توسط هیچ کمپین جاری پذیرفته نمیشود. |
پاسخ موفق (201)
{
"status": "success",
"message": "Event recorded successfully.",
"subscriber_id": "462c6a8d-5997-4b38-a7a5-17b795d8d20a",
"profile": {
"external_id": null,
"aliases": {
"mobile": "09120000000"
}
},
"conversion": {
"attributed": true,
"campaign_id": 42,
"value": 850000,
"currency": "IRT",
"verified": true
}
}
پاسخ رویداد پذیرفتهنشده (404)
{
"status": "error",
"message": "This event is not accepted by any current campaign."
}
ارسالهای Push و پروفایل بدون توکن
پروفایلهای SMS-only در صفحه مشترکین و Segmentها قابل مشاهدهاند، اما ارسال گروهی Push، Topic، ارسال API/پنل، A/B Test و هدفگیری alias یا شناسه ثابت مخاطب (Subscriber ID) فقط پروفایلهای دارای توکن معتبر را وارد صف FCM میکند.
معنی فیلد conversion
attributed فقط وقتی true است که پیش از رویداد هدف، اعلان پوش یا پیامک یک سفر مشتری برای همان مخاطب ارسال شده و تماس داخل پنجره انتساب باشد. verified برای درخواست سرور دارای شناسه سفارش true است. ممکن است Event با status=success ثبت شود اما به دلیل نبود تماس معتبر، conversion.attributed برابر false باشد.