Get profile action history
Description
Retrieves a single profile action history.
The request supports pagination using the limit and from_id parameters. By default, up to 1000 events are returned. If there are more events than the specified limit, the response will include the next_from_id field — the ID of the next event. To retrieve the next batch of events, pass the next_from_id value from the previous response as the from_id parameter in your next request. The first request should be made without from_id or with from_id set to "0".
Request URL
Method: POST
https://example.com/api/v1.1/subscribers/history_get
Request parameters
| Parameter | Type | Example | Required | Description |
|---|---|---|---|---|
| list_id | Int | 20 | Yes | Database ID |
| xxh | string | "0eb51aefd919f90a" | No, of you use matching for search | xx hash profile ID |
| matching | string | "email" "email_profile" "email_sub" "phone" "phone_sub" "profile_id" "push_sub" "custom" "custom_sub" "email_phone" "email_phone_sub" | No, of you use xxh for search | Profile matching mode By default — email For each type of matching, certain fields must be passed in the request body. Learn more about these fields here. |
| date_from | string | "2016-11-25" | No | Time period start YYYY-MM-DD Default — current date minus 30 days. If date_to is set but date_from is not, the left-side period restriction is removed — all events up to the specified date_to will be returned without a start date restriction. |
| date_to | string | "2016-11-29" | No | Time period end YYYY-MM-DD |
| limit | Int | 1000 | No | Maximum number of events in the response Default — 1000 |
| from_id | string | "0" | No | Event ID to start output from Default — "0" To continue pagination, pass the value from the next_from_id field of the previous response |
Request example
- JSON
- XML
{
"list_id": 20,
"xxh": "0eb51aefd919f90a",
"limit": 1000,
"from_id": "0"
}
<xml>
<list_id>20</list_id>
<xxh>0eb51aefd919f90a</xxh>
<limit>1000</limit>
<from_id>0</from_id>
</xml>
Response example
- JSON
- XML
{
"data": [
{
"xxh": "9202595093f237d4",
"profile_id": "66f66973096b3b454bbbccec",
"email": "example@example.com",
"list_id": 66,
"action": "send",
"count": 1,
"datetime": "2024-09-27T15:52:57.004Z",
"message_id": 5,
"campaign_id": 137,
"event_id": "66f6aaa9da00a9db1c0b2683",
"smid": "uBAhiRBRQhARg7y489hr5F2b2aXMJaztFS7vM7DE1NGJhZWM5",
"campaign_name": "New astral mailing",
"message_name": "testing",
"subscription": {
"resource_id": 5,
"resource_name": "res1",
"channel": "email",
"email": "sub1@yandex.ru",
"priority": 0,
"status": "subscribed",
"custom_fields": {
"_device_type": "other"
},
"cats": []
},
"channel": "email",
"subscriptions": [
{
"resource_id": 5,
"resource_name": "res1",
"channel": "email",
"email": "sub1@yandex.ru",
"priority": 0,
"status": "subscribed",
"custom_fields": {
"_device_type": "other"
},
"cats": []
},
{
"resource_id": 5,
"resource_name": "res1",
"channel": "email",
"email": "sub2@yandex.ru",
"priority": 0,
"status": "subscribed",
"custom_fields": {
"_device_type": "mob"
},
"cats": []
}
],
"campaign": {
"campaign_id": 137,
"campaign_name": "New astral mailing"
},
"sender": {
"sender_id": 5,
"sender_name": "no-reply@example.com"
}
}
],
"next_from_id": "13",
"error": 0,
"error_text": "Successful operation"
}
<xml>
<data>
<item>
<xxh>9202595093f237d4</xxh>
<profile_id>66f66973096b3b454bbbccec</profile_id>
<email>example@example.ru</email>
<list_id>66</list_id>
<action>send</action>
<count>1</count>
<datetime>2024-09-27T15:52:57.004Z</datetime>
<message_id>5</message_id>
<campaign_id>137</campaign_id>
<event_id>66f6aaa9da00a9db1c0b2683</event_id>
<smid>uBAhiRBRQhARg7y489hr5F2b2aXMJaztFS7vM7DE1NGJhZWM5</smid>
<campaign_name>New astral mailing</campaign_name>
<message_name>testing</message_name>
<subscription>
<resource_id>5</resource_id>
<resource_name>res1</resource_name>
<channel>email</channel>
<email>sub1@yandex.ru</email>
<priority>0</priority>
<status>subscribed</status>
<custom_fields>
<_device_type>other</_device_type>
</custom_fields>
<cats/>
</subscription>
<channel>email</channel>
<subscriptions>
<subscription>
<resource_id>5</resource_id>
<resource_name>res1</resource_name>
<channel>email</channel>
<email>sub1@yandex.ru</email>
<priority>0</priority>
<status>subscribed</status>
<custom_fields>
<_device_type>other</_device_type>
</custom_fields>
<cats/>
</subscription>
<subscription>
<resource_id>5</resource_id>
<resource_name>res1</resource_name>
<channel>email</channel>
<email>sub2@yandex.ru</email>
<priority>0</priority>
<status>subscribed</status>
<custom_fields>
<_device_type>mob</_device_type>
</custom_fields>
<cats/>
</subscription>
</subscriptions>
<campaign>
<campaign_id>137</campaign_id>
<campaign_name>New astral mailing</campaign_name>
</campaign>
<sender>
<sender_id>5</sender_id>
<sender_name>no-reply@example.com</sender_name>
</sender>
</item>
</data>
<next_from_id>13</next_from_id>
<error>0</error>
<error_text>Successful operation</error_text>
</xml>
Response parameters
| Parameter | Type | Description |
|---|---|---|
| data | string | An array of received data regarding events in the profile history |
| data.xxh | string | Profile xxhash ID |
| data.profile_id | string | Profile ID |
| data.email | string | Profile email |
| data.list_id (db_id) | int | Database ID |
| data.action | string | Profile action (More details) |
| data.count | int | Number of actions taken in this second |
| data.datetime | string | Date and time of the action in RFC 3339 (ISO 8601) format |
| data.message_id | int | Message template ID Returns 0 if the action does not involve using a template. |
| data.campaign_id | int | Mailing ID Returns 0 if the action does not involve using a mailing. |
| data.event_id | string | Event ID |
| data.smid | string | Unique identifier of the send within the mailing Returns an empty string if the action does not involve sending a message. |
| data.campaign_name | string | Name of the mailing Returns an empty string if the action does not involve using a mailing. |
| data.message_name | string | Name of the message template Returns an empty string if the action does not involve using a template. |
| data.subscription | string | Object containing information about the subscription under which the sending was performed |
| data.channel | string | Communication channel in which the event was recorded. Returns an empty string if the channel is not involved. |
| data.subscriptions | array of objects | All subscriptions of the profile. For CSV format, it will be represented as a JSON string. |
| data.pixel | object | Enriched pixel data. Present for any event with pixel_id ≠ 0. More details |
| data.segment | object | Segment data. Present for segs_add, segs_remove events. More details |
| data.loyalty | object | Loyalty program data. Present for points_*, loyalty_*, tier_* events. More details |
| data.promocode | object | Promo code data. Present for promocode_* events. More details |
| data.popup | object | Popup data. Present for popup_* events. More details |
| data.form | object | Form data. Present for form_* events. More details |
| data.relation | object | Profile relationship data. Present for rel_* events. More details |
| data.super_campaign | object | Campaign data. Present for sc_* events. More details |
| data.gcg | object | Global control group data. Present for gcg_* events. More details |
| data.suppress | object | Stop list data. Present for suppress_* events. More details |
| data.workflow | object | Scenario data. Present for workflow events. More details |
| data.instruction | object | Tag Manager instruction data. Present for instruction_target events. More details |
| data.order | object | Order data. Present for order_*, order_line_* events. More details |
| data.campaign | object | Campaign data. Present for any event with campaign_id ≠ 0. More details |
| data.sender | object | Sender data. Present for any event with sender_id ≠ 0. More details |
| data.channel_event | object | Channel data. Present for any event with channel_id ≠ 0. More details |
| data.policy | object | Policy data. Present for any event with policy_id ≠ 0. More details |
| next_from_id | string | ID of the next event for pagination continuation. If the number of events exceeds the limit value, pass this value as the from_id parameter in your next request to retrieve the next batch of events. If there are no more events, the field will be empty or absent. |
| error | int | Error code |
| error_text | string | Error message |
Profile history events (action)
| Email channel events | |
| send | Email sent |
| deliv | Email delivered |
| undeliv | Email not delivered |
| open | Email opened |
| read | Email read. The message was opened by the user for 8 seconds or more |
| click | Email clicked. Registered when the user clicks a link in the email. Each link click is registered as a separate click event, so if a profile clicks on two different links in the same email, two click events will be recorded. |
| confirm | Click on the subscription confirmation link in the email (confirm-link) |
| subscribe_email | Subscribed to the Email channel of the resource |
| unsubscribe_email | Unsubscribed from the Email channel of the resource |
| reply | Received a reply to the Email |
| complain | Received a Complain status |
| hbounce | Received a Hard Bounce status |
| SMS channel events | |
| send_sms | SMS message sent to the gateway for subscriber delivery |
| deliv_sms | SMS message delivered |
| undeliv_sms | SMS message not delivered |
| click_sms | Non-unique click on the link in the SMS message |
| subscribe_sms | Subscribed to the SMS channel of the resource |
| unsubscribe_sms | Unsubscribed from the SMS channel of the resource |
| Push channel events | |
| send_push | Push sent |
| deliv_push | Push delivered |
| open_push | Non-unique opening of the push message |
| click_push | Click on the Push message |
| undeliv_push | Push message not delivered |
| subscribe_push | Subscribed to the Push channel of the resource |
| unsubscribe_push | Unsubscribed from the Push channel of the resource |
| Telegram Bot Channel Events | |
| telegram_bot_send | Telegram bot event: Telegram bot sent |
| telegram_bot_deliv | Telegram bot event: Telegram bot delivered |
| telegram_bot_undeliv | Telegram bot event: Telegram bot not delivered |
| telegram_bot_click | Telegram bot event: Telegram bot click |
| telegram_bot_subscribe | Telegram bot event: Telegram bot subscription |
| WhatsApp* channel events | |
| whatsapp_send | Message sent for delivery to the WhatsApp* chat |
| whatsapp_deliv | Message delivered to the WhatsApp* chat |
| whatsapp_undeliv | Message not delivered to the WhatsApp* chat |
| whatsapp_click | Non-unique click on the link in the WhatsApp* chat message |
| whatsapp_read | Message read by the user |
| whatsapp_subscribe | WhatsApp* channel event: WhatsApp* subscription |
| Viber channel events | |
| viber_send | Message sent for delivery to the Viber chat |
| viber_deliv | Message delivered to the recipient |
| viber_undeliv | Message not delivered, rejected by Viber or Devino.Online |
| viber_click | Click on the link in the message. If the recipient clicks on the same link several times, each click event is recorded. |
| viber_read | Message read by the user |
| viber_subscribe | Viber channel event: Viber subscription |
| Events for all channels | |
| offence | Message not sent due to sending policy restrictions |
| suppress | Message not sent by the mailing because the profile is on the stop list |
| Subscriber Profile Import Events | |
| import_manual | Profile created manually |
| import_api | Profile created by API import |
| import_file | Profile created by import from a file |
| import_form | Profile created by import from a form |
| import_push | Profile created as a result of push import |
| import_popup | Profile created by import via popup |
| Unsubscribe Events | |
| unsub_api | Subscriber unsubscribed from emails via API |
| unsub_manual | Unsubscribed manually (global profile status changed to "Unsubscribed") |
| Pixel events | |
| pixel_open | Goal achieved |
| Promo codes events | |
| promocode_attach | Promo code attached |
| promocode_detach | Promo code detached |
| promocode_activate | Promo code activated |
| Segment events | |
| segs_add | Entered a static segment |
| segs_remove | Exited a static segment |
| Profile Relationship Events | |
| rel_attach | Profile receives a connection with another profile |
| rel_detach | Profile loses a connection with another profile |
| rel_strengthen | Weight of the connection between profiles increases |
| Form Events | |
| form_load | Form loaded |
| form_page_show | Form page loaded |
| form_post | Form filled and submitted |
| form_abandon | Form abandoned. The profile loads the form page and does not close it for an hour, without submitting the form. |
| form_bounce | Error in filling out the form (attempted re-filling, technical issues, etc.) |
Enriched Event Data
The API response may include additional nested objects with detailed information for each event. All new fields are optional — they are present only if the event belongs to the corresponding type.
Pixel Events
Present for any event with pixel_id ≠ 0 (not only pixel_open).
"pixel": {
"id": 42,
"name": "Purchase Pixel",
"goal": "purchase",
"value": 1500.50,
"data": {"product_id": "SKU-123", "category": "electronics"},
"referer": {"proto": "https", "domain": "example.com", "path": "/checkout", "query": "utm_source=email"},
"origin": {"proto": "https", "domain": "example.com"},
"browser": "Chrome",
"os": "Windows",
"device": "web",
"language": "ru",
"geo": {"lat": 55.7558, "lon": 37.6173, "country": "RU", "region": "Moscow", "city": "Moscow", "address": "Tverskaya st.", "zip": "125009"},
"utm": {"source": "email", "medium": "newsletter", "campaign": "summer-sale", "term": "", "content": "", "keyword": ""},
"market": {"order_eid": "ORD-12345", "product_eid": "PROD-678", "sku_eid": "SKU-999", "endpoint_eid": "EP-001", "region_eid": "RU-MOW", "sl_eid": "online", "count_items": 3, "categories": ["electronics"]},
"loyalty": {"loyalty_id": 5, "promo_id": "promo-abc"}
}
| Field | Type | Description |
|---|---|---|
id | int | Pixel ID |
name | string | Pixel name |
goal | string | Goal name |
value | float | Goal cost/value |
data | object | Custom data from the client (flat JSON, ≤1KB) |
referer.proto | string | Referrer protocol |
referer.domain | string | Referrer domain |
referer.path | string | Referrer path |
referer.query | string | Referrer query string |
origin.proto | string | Origin protocol |
origin.domain | string | Origin domain |
origin.path | string | Origin path |
origin.query | string | Origin query string |
browser | string | Browser |
os | string | Operating system |
device | string | Device type (web, mob, other) |
language | string | Language |
geo.lat | float | Latitude |
geo.lon | float | Longitude |
geo.country | string | Country |
geo.region | string | Region |
geo.city | string | City |
geo.address | string | Address |
geo.zip | string | Postal code |
utm.source | string | UTM Source |
utm.medium | string | UTM Medium |
utm.campaign | string | UTM Campaign |
utm.term | string | UTM Term |
utm.content | string | UTM Content |
utm.keyword | string | UTM Keyword |
market.order_eid | string | External ID of the order |
market.product_eid | string | External ID of the product |
market.sku_eid | string | External ID of the SKU |
market.endpoint_eid | string | External ID of the sales point |
market.region_eid | string | External ID of the sales region |
market.sl_eid | string | Sales channel |
market.count_items | int | Number of items |
market.categories | []string | Product categories |
loyalty.loyalty_id | int | Loyalty program ID |
loyalty.promo_id | string | Promo code ID (hex) |
Segment Events
Present for segs_add, segs_remove events.
"segment": {"segment_id": 15, "segment_type": "dynamic", "segment_name": "Active Buyers"}
| Field | Type | Description |
|---|---|---|
segment_id | int | Segment ID |
segment_type | string | Segment type |
segment_name | string | Segment name |
Loyalty Events
Present for points_*, loyalty_*, tier_* events.
"loyalty": {"loyalty_program_id": 3, "loyalty_program_name": "Gold Club", "amount": 100, "points_id": 7, "transaction_id": "550e8400-e29b-41d4-a716-446655440000", "register_date": "2026-07-21 12:00:00", "tier_id": 2, "level_id": 1}
| Field | Type | Description |
|---|---|---|
loyalty_program_id | int | Loyalty program ID |
loyalty_program_name | string | Program name |
amount | int | Number of points |
points_id | int | Points type ID |
transaction_id | string | Transaction UUID |
register_date | string | Registration date (YYYY-MM-DD HH:MM:SS, account timezone) |
tier_id | int | Level group ID |
level_id | int | Level ID |
Promocode Events
Present for promocode_* events.
"promocode": {"loyalty_id": 3, "promo_id": "507f191e810c19729de860ea", "promo_name": "SUMMER2026"}
| Field | Type | Description |
|---|---|---|
loyalty_id | int | Loyalty program ID |
promo_id | string | Promo code ID (hex) |
promo_name | string | Promo code |
Popup Events
Present for popup_* events.
"popup": {"popup_id": 8, "popup_name": "Welcome Popup"}
| Field | Type | Description |
|---|---|---|
popup_id | int | Popup ID |
popup_name | string | Popup name |
Form Events
Present for form_* events.
"form": {"form_id": 5, "form_page_id": 12, "form_name": "Contact Form"}
| Field | Type | Description |
|---|---|---|
form_id | int | Form ID |
form_page_id | int | Form page ID |
form_name | string | Form name |
Relation Events
Present for rel_* events.
"relation": {"relation_id": 3, "relation_name": "Family", "profile_idb": "abc123def456"}
| Field | Type | Description |
|---|---|---|
relation_id | int | Relationship ID |
relation_name | string | Relationship name |
profile_idb | string | ID of the related profile |
Super Campaign Events
Present for sc_* events.
"super_campaign": {"super_campaign_id": 10, "super_stream_id": 5, "super_campaign_name": "Q3 Campaign", "meta_data": "{\"key\": \"value\"}"}
| Field | Type | Description |
|---|---|---|
super_campaign_id | int | Campaign ID |
super_stream_id | int | Stream ID |
super_campaign_name | string | Campaign name |
meta_data | string | Metadata |
GCG Events
Present for gcg_* events.
"gcg": {"gcg_id": 7}
GCG has no name, so the gcg_name field is absent.
Suppress Events
Present for suppress_* events.
"suppress": {"suppress_id": 2, "suppress_level": "global", "suppress_name": "Global Suppression"}
| Field | Type | Description |
|---|---|---|
suppress_id | int | Stop list ID |
suppress_level | string | Level: system, account, or user |
suppress_name | string | Suppression list name |
Scenario Events
Present for workflow events.
"workflow": {"workflow_id": 4, "workflow_node_id": 123, "workflow_name": "Onboarding Flow"}
| Field | Type | Description |
|---|---|---|
workflow_id | int | Scenario ID |
workflow_node_id | int | Scenario node ID |
workflow_name | string | Scenario name |
Instruction Events
Present for instruction_target events.
"instruction": {"popup_id": 9, "popup_name": "Instruction Popup"}
The
instruction_targetevent comes through the popup tracker (tracker=pp), so onlypopup_idandpopup_namefrompopupEventare available.instruction_idis not stored in ClickHouse — the frontend does not pass this parameter during tracking.
Order Events
Present for order_*, order_line_* events.
"order": {"order_eid": "ORD-12345", "endpoint_eid": "EP-001", "sl_eid": "online", "total_price": 15000, "discounted_total_price": 12000, "order_lines_ids": ["line-1", "line-2"], "order_line_eid": "LINE-001", "custom_status_eid": "status-pending", "discounted_price_of_line": 5000, "product_eid": "PROD-678", "sku_eid": "SKU-999", "count_items": 3, "price_per_item": 4000, "categories": ["electronics"], "manufacturer_name": "Samsung", "region_eid": "RU-MOW"}
| Field | Type | Description |
|---|---|---|
order_eid | string | External ID of the order |
endpoint_eid | string | External ID of the sales point |
sl_eid | string | Sales channel |
total_price | int | Total price (in minimum units) |
discounted_total_price | int | Discounted price |
order_lines_ids | []string | Order line IDs |
order_line_eid | string | External ID of the order line |
custom_status_eid | string | External ID of the custom status |
discounted_price_of_line | int | Discounted price of the line |
product_eid | string | External ID of the product (if the line contains a product) |
sku_eid | string | External ID of the SKU (if the line contains a SKU) |
count_items | int | Number of items |
price_per_item | int | Price per unit |
categories | []string | Product categories |
manufacturer_name | string | Manufacturer name |
region_eid | string | External ID of the sales region |
Campaign Events
Present for any event with campaign_id ≠ 0.
"campaign": {"campaign_id": 42, "campaign_name": "Summer Newsletter"}
| Field | Type | Description |
|---|---|---|
campaign_id | int | Campaign ID |
campaign_name | string | Campaign name |
Sender Events
Present for any event with sender_id ≠ 0.
"sender": {"sender_id": 5, "sender_name": "no-reply@example.com"}
| Field | Type | Description |
|---|---|---|
sender_id | int | Sender ID |
sender_name | string | Sender name |
Channel Events
Present for any event with channel_id ≠ 0.
"channel_event": {"channel_id": 10, "channel_sid": "cc-abc123", "channel_name": "Telegram Bot"}
| Field | Type | Description |
|---|---|---|
channel_id | int | Channel ID |
channel_sid | string | Channel string ID (custom channels) |
channel_name | string | Channel name |
Policy Events
Present for any event with policy_id ≠ 0.
"policy": {"policy_id": 3, "name": "GDPR Policy"}
| Field | Type | Description |
|---|---|---|
policy_id | int | Policy ID |
name | string | Policy name |
*The Meta organization, which owns Instagram, Facebook and WhatsApp products, has been declared as extremist and banned in Russia.