Clients¶
Create or update clients¶
POST /project/clients/import
This method allows to create or update clients.
curl 'https://cloud.roistat.com/api/v1/project/clients/import?project=12345' \
--request POST \
--header 'Content-type: application/json' \
--header 'Api-key: {KEY}' \
--data Request body - see below
Request Body:
[
{
"id": "111",
"name": "John",
"phone": "78888888888",
"email": "email1@mail.com",
"company": "company1",
"birth_date": "1980-01-01",
"fields":
{
"segment": "1"
}
},
{
"id": "222",
"name": "Aria",
"phone": "79999999999",
"email": "email2@mail.com",
"company": "company2",
"birth_date": "1990-01-01",
"fields":
{
"segment": "2"
}
}
]
{
"status": "success"
}
Query String:
Parameter | Type | Description | Required |
---|---|---|---|
project | string | Project number | yes |
Request Body:
Parameter | Type | Description | Required |
---|---|---|---|
id | string | Client ID in CRM | yes |
name | string | Client's name | yes |
phone | null or string | Client's phone number (either phone or email can be specified) | no |
null or string | Client's email (either phone or email can be specified) | no | |
company | null or string | Client's company name | no |
birth_date | null or string | Client's birth date | no |
fields | object | additional fileds and their values in the following format: "field_name": "value" | no |
Parameter | Type | Description |
---|---|---|
status | string |
Get a list of customers from Client Management¶
POST /project/clients
This method allows you to get a list of customers from customer management.
curl 'https://cloud.roistat.com/api/v1/project/clients?project=12345' \
--request POST \
--header 'Content-type: application/json' \
--header 'Api-key: {KEY}' \
--data Request body - see below
Request Body:
{
"filters": [
[
"phone",
"=",
"79880002233"
]
],
"limit": 100,
"offset": 0
}
{
"clients": [
{
"id": 7,
"first_visit_date": null,
"external_id": "105",
"name": "Client Name",
"phone": "79880002233",
"email": "test@roistat.test",
"first_order_date": null,
"last_order_date": null,
"order_count": 0,
"revenue": 0,
"profit": 0,
"birth_date": null,
"company": "",
"comment": null,
"client_url": "http://example.crm.com/contacts/105",
"first_visit_marker": null,
"first_visit_marker_alias": "",
"first_visit_marker_icon": "https://cloud.roistat.com/img/arrow-right.png",
"first_visit_marker_alias_level_1": ""
},
{
"id": 6,
"first_visit_date": null,
"external_id": "106",
"name": "John",
"phone": "79880002233",
"email": "test@roistat.test",
"first_order_date": null,
"last_order_date": null,
"order_count": 0,
"revenue": 0,
"profit": 0,
"birth_date": null,
"company": "",
"comment": null,
"client_url": "http://example.crm.com/contacts/106",
"first_visit_marker": null,
"first_visit_marker_alias": "",
"first_visit_marker_icon": "https://cloud.roistat.com/img/arrow-right.png",
"first_visit_marker_alias_level_1": ""
}
],
"total": 2,
"status": "success"
}
Query String:
Parameter | Type | Description | Required |
---|---|---|---|
project | string | Project number | yes |
Request Body:
Parameter | Type | Description | Required |
---|---|---|---|
filters | object | no | |
> and | array[string] | no | |
limit | integer | no | |
offset | integer | no |
Parameter | Type | Description |
---|---|---|
clients | array[object] | |
> | object | |
>> id | integer | client ID in Roistat |
>> first_visit_date | string or null | dare of first visit |
>> external_id | string | client ID in CRM |
>> name | string | client name |
>> phone | string | client phone |
string | client email | |
>> first_order_date | string or null | date of first order |
>> last_order_date | string or null | date of last order |
>> order_count | integer | number of orders |
>> revenue | integer | revenue from orders |
>> profit | integer | profit from orders |
>> birth_date | string or null | birthday |
>> company | string | client company name |
>> comment | string or null | |
>> client_url | string | URL of client in the CRM |
>> first_visit_marker | string or null | |
>> first_visit_marker_alias | string | |
>> first_visit_marker_icon | string | |
>> first_visit_marker_alias_level_1 | string | |
total | integer | |
status | string |
Get the client feed: visits, events, orders, calls, interaction with the Lead Hunter¶
GET /project/clients/detail/feed
Use this method to get a specific client's feed: information on their visits, orders, order status changes, calls, triggered events, and interactions with the Lead Hunter.
curl 'https://cloud.roistat.com/api/v1/project/clients/detail/feed?project=12345&client=123' \
--request GET \
--header 'Content-type: application/json' \
--header 'Api-key: {KEY}'
{
"feed": [
{
"type": "visit",
"visitId": "41028",
"creationDate": "2021-11-10T14:05:12+0000",
"sourceId": "instagram_stories",
"device": {
"os": "Mac 10.15 ",
"os_icon": "https://cloud.roistat.com/img/os/macosx.png",
"agent": "Chrome 90.0 browser Blink",
"agent_icon": "https://cloud.roistat.com/img/browsers/chrome.png",
"is_mobile": false
},
"sourceTitle": "instagram → stories",
"sourceIcon": "https://cloud.roistat.com/img/instagram.png"
},
{
"type": "order",
"id": "order_41028",
"name": "order_41028",
"status": "0",
"statusType": "progress",
"statusTitle": "New",
"revenue": 0,
"formattedRevenue": "0 ₽",
"cost": 0,
"formattedCost": "0 ₽",
"fields": {
"status_name": "Pending payment",
"Менеджер": "Jane Smith",
"roistat": 41028
},
"creationDate": "2021-11-10T14:28:59+0000",
"updateDate": null
},
{
"type": "event",
"metaId": "5",
"creationDate": "2021-11-10T14:08:08+0000",
"name": "Opening the cart page"
},
{
"type": "lead_hunter_appearance",
"date": "2021-11-08T16:53:16+0000",
"page": "cozy.kitchen.com/catalog/accessories"
},
{
"type": "lead_hunter_caught",
"date": "2021-11-08T16:55:16+0000",
"page": "cozy.kitchen.com/catalog/accessories"
"name": "Jane"
"field": "71234567890"
"status": "1"
},
{
"order_id": "order_41028",
"order_title": "order_41028",
"type": "orderStatusChange",
"status": "1",
"statusType": "progress",
"statusTitle": "In Progress",
"date": "2021-11-11T06:28:59+0000"
},
{
"order_id": "order_41028",
"order_title": "order_41028",
"type": "orderStatusChange",
"status": "2",
"statusType": "progress",
"statusTitle": "Pending payment",
"date": "2021-11-11T07:28:59+0000"
},
{
"order_id": "order_41028",
"order_title": "order_41028",
"type": "orderCostChange",
"cost": 1000,
"formattedCost": "1000 ₽",
"date": "2021-11-11T07:28:59+0000"
},
{
"order_id": "order_41028",
"order_title": "order_41028",
"type": "orderPriceChange",
"price": 1000,
"formattedPrice": "1000 ₽",
"date": "2021-11-11T07:28:59+0000"
}
],
"status": "success"
}
Query String:
Parameter | Type | Description | Required |
---|---|---|---|
project | string | Project number | yes |
client | string | Client ID (you can get it by using /project/clients or find it in the list of clients) | yes |
Response Body:
No parameters.
Parameter | Type | Description |
---|---|---|
feed | array[object] | |
> | object | |
>> type | string | visit – if this type is specified, the array will contain visit data |
>> visitId | string | Visit number |
>> creationDate | string | Visit creation date in the following format: 2022-01-01T00:00:00+0300 |
>> sourceId | string | Visit marker |
>> device | object | Information about the device from which the visit was made |
>>> os | string | Операционная система |
>>> os_icon | string | OS icon link |
>>> agent | string | Browser |
>>> agent_icon | string | Browser icon link |
>>> is_mobile | boolean | Parameter indicating whether the device is mobile: true – yes, false – no |
>> sourceTitle | string | Human-readable visit marker |
>> sourceIcon | string | Link to the visit source icon |
> | object | |
>> type | string | order – if this type is specified, the array will contain order data |
>> id | string | Order ID |
>> name | string | Order name |
>> status | string | Status ID in Roistat (you can get in by using /project/integration/order/list](/API/methods/orders/#list)) |
>> statusType | string | The group to which the status is assigned in Roistat: unused – «Not included», progress – "In progress", paid – "Paid", canceled – "Rejected" |
>> statusTitle | string | Status title |
>> revenue | integer | Order revenue |
>> formattedRevenue | string | Order revenue with currency |
>> cost | integer | Order cost |
>> formattedCost | string | Order cost with currency |
>> fields | object | Additional order fields and their values |
>> creationDate | string | Order creation date in the following format: 2022-01-01T00:00:00+0300 |
>> updateDate | string or null | Order update date |
> | object | |
>> type | string | event – if this type is specified, the array will contain event data |
>> metaId | string | Event ID in Roistat |
>> creationDate | string | Event firing date in the following format: 2022-01-01T00:00:00+0300 |
>> name | string | Event name |
> | object | |
>> type | string | lead_hunter_appearance – if this type is specified, the array will contain data on the client's interaction with the Lead Hunter |
>> date | string | Date of interaction with the Lead Hunter in the following format: 2022-01-01T00:00:00+0300 |
>> page | string | The page where the client interacted with the Lead Hunter |
> | object | |
>> type | string | lead_hunter_caught – if this type is specified, the array will contain data on caught leads |
>> date | string | Lead creation date in the following format: 2022-01-01T00:00:00+0300 |
>> page | string | The page where the lead was caught |
>> name | string | Lead name |
>> field | string | Entered phone number |
>> status | string | Lead status: 1 – sent, 0 – not sent |
> | object | |
>> type | string | orderStatusChange – if this type is specified, the array will contain information about the order status change |
>> order_id | string | Order ID |
>> order_title | string | Order title |
>> status | string | Status ID in Roistat (you can get in by using /project/integration/order/list](/API/methods/orders/#list)) |
>> statusType | string | The group to which the status is assigned in Roistat: unused – «Not included», progress – "In progress", paid – "Paid", canceled – "Rejected" |
>> statusTitle | string | Status title |
>> date | string | Status change date in the following format: 2022-01-01T00:00:00+0300 |
> | object | |
>> type | string | orderCostChange – if this type is specified, the array will contain information about the order cost change |
>> order_id | string | Order ID |
>> order_title | string | Order title |
>> cost | integer | Changed order cost |
>> formattedCost | string | Changed order cost with currency |
>> date | string | Cost change date in the following format: 2022-01-01T00:00:00+0300 |
> | object | |
>> type | string | orderPriceChange – if this type is specified, the array will contain information about the order price change |
>> order_id | string | Order ID |
>> order_title | string | Order title |
>> price | integer | Changed order price |
>> formattedPrice | string | Changed order price with currency |
>> date | string | Price change date in the following format: 2022-01-01T00:00:00+0300 |
> | object | |
>> type | string | call – if this type is specified, the array will contain data on client's calls |
>> callee | string | Callee number |
>> caller | string | Caller number |
>> duration | string | Call duration in seconds |
>> status | string | 1 out of 9 call statuses: ACTIVE – the call is in progress; ANSWER – the call was accepted and processed by the employee; BUSY – there was an incoming call, but the line was busy; NOANSWER – there was an incoming call, but it was not accepted by the employee within the answer waiting time; CANCEL – there was an incoming call, but it was ended before the employee answered; CONGESTION – the call failed due to technical issues; CHANUNAVAIL – the called number was not available; DONTCALL – the incoming call was canceled; TORTURE – the incoming call was redirected to the answering machine. |
>> date | string | Call date in the following format: 2022-01-01T00:00:00+0300 |
>> file_url | string | Call recording link |
status | string | Request status |
Get a list of emails in specific statuses¶
POST /project/clients/campaign/contact/list
This method allows you to get a list of emails in specific statuses: Sent, Delivered, Opened, Clicked, Unsubscribed, Marked as spam. One or more statuses can be specified.
curl 'https://cloud.roistat.com/api/v1/project/clients/campaign/contact/list?project=12345' \
--request POST \
--header 'Content-type: application/json' \
--header 'Api-key: {KEY}' \
--data Request body - see below
Request Body:
{
"metric_ids": ["sent"],
"campaign_ids": [2]
}
{
"data": [
{
"contact": "john_smith@example.com",
"metrics": {
"sent": 1
}
},
{
"contact": "jack_peterson@example.com",
"metrics": {
"sent": 1
}
},
{
"contact": "jane_johnson@example.com",
"metrics": {
"sent": 1
}
}
],
"count": 3,
"total_count": 3,
"status": "success"
}
Query String:
Parameter | Type | Description | Required |
---|---|---|---|
project | string | Project number | yes |
Request Body:
Parameter | Type | Description | Required |
---|---|---|---|
metric_ids | array[string] | Statuses for which you want to get emails: "sent" – Sent, "delivered" – Delivered, "opened" – Opened, "click" – Clicked, "unsubscribe" – Unsubscribed, "spam" – Marked as spam. One or more statuses can be specified. | yes |
campaign_ids | array[integer] | Campaign IDs for which you want to get emails. Campaign IDs are displayed in the list of campaigns in the ID column. One or more IDs can be specified. | yes |
Parameter | Type | Description |
---|---|---|
data | array[object] | |
> | object | |
>> contact | string | Client's email |
>> metrics | object | Object containing information about the selected statuses |
>>> statusN | integer | Instead of statusN , the status specified in the metric_ids array is passed: "sent" , "delivered" , "opened" , "click" , "unsubscribe" , or "spam" . The value of the parameter is the number of emails in this status sent to the client. |
count | integer | Number of query results within the limit |
total_count | integer | Number of results regardless of the limit |
status | string | Request status |