# Метод достижения цели

В некоторых случаях требуется вручную передать информацию о том, что какой-то клиент достиг какой-то цели. Например, если достижение цели происходит не на сайте (в мобильном приложении или вообще в вашей ЦРМ).

Данный функционал является аналогом офлайн-конверсий в Яндекс.Метрике (opens new window)

# Описание метода

POST: https://api.sales-ninja.me/outer/v1.0/goal/reach

Тело запроса:
{
    "Ip": "<IP клиента (пользователя). Необязательно>",
    "GoalId": "<Id цели в Sales Ninja. Обязательно>",
    "CustomerId": "<Id клиента в Sales Ninja. Обязательно>",
    "SessionId": "<Id сессии клиента в Sales Ninja. Необязательно>",
    "CreatedOnUtc": "<время совершения конверсии по UTC. Необязательно>",
    "CustomUserScopeParams": "<параметры пользователя. Необязательно>",
    "CustomPageScopeParams": "<параметры пользователя. Необязательно>"
}

# Примеры тела запроса

{
    "Ip": "185.237.80.128",
    "GoalId": "299837db-9b51-45a4-996b-844d3fd05bbd",
    "CustomerId": "2eccd743-4164-4892-a416-dc5c16f44971",
    "SessionId": "123212db-9b51-a416-996b-844d3fd09b51",
    "CreatedOnUtc": "2022-10-27 12:23:25.367999",
    "CustomUserScopeParams": {
        "Revenue": "12350",
        "NetProfit": "900"
    },
    "CustomPageScopeParams": {
    }
}

Или

{
    "GoalId": "299837db-9b51-45a4-996b-844d3fd05bbd",
    "CustomerId": "2eccd743-4164-4892-a416-dc5c16f44971",
    "CustomPageScopeParams": {
        "Revenue": "12350",
        "NetProfit": "900"
    }
}

# Ip

IP адрес пользователя, совершившего конверсию - необязательно, но желательно передавать для обогащения данных на стороне Sales Ninja.

# GoalId

GoalId - это уникальный ID цели в системе Sales Ninja. Обратите внимание — именно в системе Sales Ninja, а не в системе, откуда передаются данные.

GoalId можно получить, например, в адресной строке редактора цели:

https://app.sales-ninja.me/goal/<Id будет ут>/edition

Представляет собой GUID/UUID (opens new window) - например, ea565c1b-70b1-4165-bd39-4df0d4e4f9bc.

# CustomerId

CustomerId можно получить через вызов JS-метода внутри вашего сайта:

//Устаревший вариант
window.SalesNinja.getCustomerId() // Это синхронная функция, будет работать только при window.SalesNinja.ready == true

//Новый вариант (асинхронное получение) - вариант 1
ninja('getCustomerIdAsync').then(id => {
    //id в параметре придет customer id
})

//Новый вариант (асинхронное получение) - вариант 2
const id = await ninja('getCustomerIdAsync')

# SessionId

SessionId можно получить через вызов JS-метода внутри вашего сайта:

//Вариант 1
ninja('getSessionIdAsync').then(id => {
    //id в параметре придет session id
})

//Вариант 2
const id = await ninja('getSessionIdAsync')

# CustomUserScopeParams

В параметре CustomUserScopeParams можно передать пользовательские параметры клиента в виде объекта ключ-значение.

Пользовательские параметры клиента используются для обогащения данных. В том числе так можно передать выручку или чистую прибыль. Значение каждого параметра обязательно должно быть строкой (не 12500, а "12500").

# CustomPageScopeParams

В параметре CustomUserScopeParams можно передать пользовательские параметры страницы в виде объекта ключ-значение.

Пользовательские параметры страницы используются для обогащения данных. В том числе так можно передать выручку или чистую прибыль. Значение каждого параметра обязательно должно быть строкой (не 12500, а "12500").

В случае успешного выполнения, метод вернет пустой ответ со статусом 200 OK (opens new window).

Информация о достигнутой цели (конверсии) появится в системе через какое-то время.