Сбор данных для SaaS с помощью Web API

Для настройки автоматических сообщений нам потребуется информация о действиях пользователя на сайте. Для SaaS интересны такие события и свойства как: регистрация, оплата заказа, доход с пользователя и др. Ниже приведены примеры скриптов, при выполнении которых на определенных страницах сайта нужные данные будут отправляться в CQ. Также важным моментом интеграции является настройка передачи User ID и загрузка информации о пользователях, которые посещали сайт до установки сервиса.

Подробнее о всех возможностях использования API можно почитать в разделе для разработчиков.

 

Настройка передачи User ID

User ID мы используем для объединения пользователей с разных устройств. Как только пользователь авторизуется в вашей системе необходимо передать нам его ID, командой (пример):

carrotquest.auth('25', 'hmac-sha256-hash');

Первый аргумент — User ID. Второй — хеш HMAC SHA 256(Текстом для хеширования является User ID, ключом - User Auth Key его можно узнать в панели администратора).

Пример на PHP:

$userId = '…';
$hash = hash_hmac('sha256', $userId, 'User-Auth-Key' );
echo "carrotquest.auth('".$userId."', '".$hash."')" 

Подробнее об передаче User ID можно посмотреть в статье, а о методе в разделе для разработчиков.

 

События “Регистрация” и “Авторизация”

Соответствующий скрипт должен срабатывать в момент регистрации, либо авторизации:

carrotquest.track("$registered", {"$email": user_email, "$name": user_name});

Скопировать код

carrotquest.track("$authorized", {"$email": user_email, "$name": user_name});

Скопировать код

вместо user_email в обоих случаях необходимо подставить емейл пользователя, а вместо user_name - имя пользователя.

 

Свойство “Имя”, ”Email”, ”Телефон”

Для записи этих свойств должен выполняться скрипт при каждой отправке данных, введенных в поля "Имя", "Email" или "Телефон" на сайте (регистрация, авторизация, подписка или отправка любой формы обратной связи). Используйте в скрипте передачу только тех свойств, поля для которых есть в самой форме. Например, при отправке формы, где есть только "Имя" и "Email", убирайте из скрипта запись свойства $phone:

carrotquest.identify([
    {op: "update_or_create", key: "$email", value: user_email},
    {op: "update_or_create", key: "$phone", value: user_phone},
    {op: "update_or_create", key: "$name", value: user_name}
]);

Скопировать код

где вместо user_email необходимо подставить емейл пользователя, вместо user_phone - телефон пользователя, а user_name заменить на имя пользователя.

 

Передача событий и свойств пользователей

Для передачи любых других событий (зашел на страницу "Контакты", просмотрел видеоролик, поделился ссылкой с друзьями, подписался на рассылку новостей и т.д.) можно воспользоваться методами JS API:

// Без параметров
carrotquest.track('Event name');
// С параметрами
carrotquest.track('Event name', {
  'param1': 'value1',
  'param2': 340,
  'param3': '2014-05-23T05:12:45',
  'param4': false,
  'param5': ['key1', 'key2', 'key3']
});

либо методами Web API:

//Без параметров
curl -X POST \
  --data-urlencode "event=Order Created" \
  --data-urlencode "auth_token=XXX" \
  "https://api.carrotquest.io/v1/users/{id}/events"
//С параметрами
curl -X POST \
  --data-urlencode "event=Order Created" \
  --data-urlencode 'params={"item": "chicken"}' \
  --data-urlencode "auth_token=XXX" \
  "https://api.carrotquest.io/v1/users/{id}/events"

где ID это идентификатор пользователя из нашей системы (id пользователя лежит в cookie carrotquest_uid). Так же можно использовать ваш User ID в случае, если настроено склеивание. Подробнее о методах track и events.

Для установка свойств пользователя (идентификации) так же есть методы на JS API и Web API. Пример на JS API:

// Упрощенный формат:
carrotquest.identify({'$name': 'Maks', 'myProp': 'myValue'});
// Сложный формат:
carrotquest.identify([
  {op: 'add', key: 'segment1', value: 1},
  {op: 'update_or_create', key: 'segment2', value: 1},
]);

 Пример на Web API:

curl -X POST \
  --data-urlencode "operations=[{op: "update_or_create","key: "$name", value: "Maks"}]" \
  --data-urlencode "auth_token=XXX" \
  "https://api.carrotquest.io/v1/users/{id}/props"

 

Событие “Оплатил заказ”

На странице успеха оплаты должен выполняться следующий скрипт:

carrotquest.track("$order_paid", {"$order_id": order_id});

Скопировать код

где вместо order_id подставляем ID заказа.

 

Свойство “Сумма последнего заказа”

На странице успеха оплаты должен выполняться следующий скрипт:

carrotquest.identify([
    {op: "update_or_create", key: "$last_payment", value: order_amount},
]);    

Скопировать код

где вместо order_amount необходимо вставить сумму заказа.

 

Свойство “Доход с пользователя”

На странице успеха оплаты должен выполняться следующий скрипт:

carrotquest.identify([
    {op: "add", key: "$profit", value: order_amount}
]);

Скопировать код

где вместо order_amount необходимо вставить сумму заказа.

 

Свойство “Количество заказов”

На странице успеха оплаты должен выполняться следующий скрипт:

carrotquest.identify([
    {op: "add", key: "$orders_count", value: order_amount}
]);

Скопировать код

где вместо order_amount необходимо вставить сумму заказа.

 

Загрузка пользователей в Carrot quest

Для загрузки информации о пользователях, которые посещали сайт до установки CQ, рекомендуем воспользоваться Web API. Также есть возможность загрузить базу пользователей через интерфейс сервиса, подробнее по ссылке.

Пример кода для импорта пользователей на PHP:

# Список пользователей, которых нужно импортировать
# Первый элемент - User ID из вашей системы
$users = array(
	array('id' => 123, 
		  'email' => 'mail1@mail.ru', 
		  'phone' => '891xxxxxx',
		  'name' => 'Test'
	),
	array('id' => 456,
		  'email' => 'mail2@mail.ru',
		  'phone' => '891xxxxxx',
		  'name' => 'Test2'
	)
);
$auth_token = 'xxx'  # TODO: ПОДСТАВЬТЕ СЮДА ВАШ AUTH_TOKEN, его можно найти в разделе Настройки > API КЛЮЧИ


for ($i =0; $i < count($users); ++$i ) {
	$url = 'http://api.carrotquest.io/v1/users/'.$users[$i]['id'].'/props?auth_token='.$auth_token;
	$operations = json_encode(array(
			array('op' => 'update_or_create',
				  'key' => '$email',
				  'value' => $users[$i]['email']
			),
			array('op' => 'update_or_create',
				  'key' => '$phone',
				  'value' => $users[$i]['phone']
			),
			array('op' => 'update_or_create',
				  'key' => '$name',
				  'value' => $users[$i]['name']
			),
		)
	);
	
	$result = file_get_contents($url, false, stream_context_create(array(
	  'http' => array(
		'method'  => 'POST',
		'header'  => 'Content-type: application/x-www-form-urlencoded',
		'content' => http_build_query(array('operations' => $operations,'by_user_id'  => 'true')),
	  )
	)));
	
	
	print $result;
}

Скопировать код

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0
Еще есть вопросы? Отправить запрос

Комментарии