Здравствуйте!
Сегодня расскажем об использовании ActiveCampaign API для передачи информации со сторонних сервисов на примере интеграции с сервисом Бизон365. В нашем случае, мы используем Бизон для проведения вебинаров/автовебинаров, курсов, приема платежей и ActiveCampaign для email-маркетинга.
Почему ActiveCampaign
Бизон365 имеет встроенный функционал email-рассылки, причем достаточно удобный, легко настраиваемый и идеальный для запуска проекта. После успешного запуска, если вы планируете расширятся, имеет смысл переходить на специализированные платформы email-маркетинга для длительного взаимодействия с клиентами, более персонализированных рассылок, проведения А/Б-тестов на различных этапах воронки.
Мы работали с такими сервисами как SendPulse, MailChimp, getResponse и пришли к выводу, что ActiveCampaign имеет наиболее широкий, гибкий и удобный функционал. Сравнительных таблиц в этой статье не будет, я лишь опишу преимущества, которые мы получили при переходе на ActiveCampaign:
- возможность внедрения цепочки дожима и серии возврата, взаимодействие с клиентом в течение месяца после оставления заявки, и как показывает практика, это работает;
- автоматическая подмена сценария автовебинара в случае, если человек уже посетил один из вебинаров или посмотрел его запись;
- параллельное распределение пользователей по разным цепочкам автоворонки с возможностью получения подробной аналитики;
- проведение А/Б-тестов заголовков и содержимого писем;
- определение нетипичных ситуаций (например, когда пользователь подтвердил регистрацию на вебинар после даты вебинара) и отправка соответствующих сообщений (например, закрытие его на новую дату);
- упрощение повторной регистрации (простым нажатием кнопки в письме вместо нового перехода на сайт и заполнения формы);
- и многое другое…
Многие из этих мелочей дают небольшой прирост, однако в совокупности это помогает поднять выручку на 20-30%. Более подробно все нюансы и «фишки», внедряемые нами, будут описаны в следующих статьях, сегодня же перейдем непосредственно к работе с API.
Использование ActiveCampaign API
Все доступные функции описаны на соответствующей странице официального сайта. Все предельно просто, достаточно лишь указать URL вашей страницы и уникальный ключ API key, который можно найти в настройках аккаунта в разделе «Разработчик», как показано на рисунке ниже.
Далее создаем файл, где опишем все используемые нами функции и будем подключать его в скриптах, где это необходимо. Назовем его activeCampaign_API.php.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
<?php header('Content-Type: text/html; charset=utf-8'); $url = 'https://YOUR_ACCAUNT.api-us1.com'; $api_key = 'YOUR_API_KEY'; //добавляет тег к контакту function contact_tag_add($email, $tag) { global $api_key; $params = array( 'api_key' => $api_key, 'api_action' => 'contact_tag_add', 'api_output' => 'serialize', ); $post = array( 'email' => $email, 'tags' => $tag, ); return sendPOST($params, $post); } //обновляет значение пользовательского поля контакта function contact_sync_field($email, $field, $value){ global $api_key; $params = array( 'api_key' => $api_key, 'api_action' => 'contact_sync', 'api_output' => 'serialize', ); $post = array( 'email' => $email, 'field['.$field.',0]' => $value, ); return sendPOST($params, $post); } //добавляет информацию об оформленном/оплаченном заказе к контакту function contact_sync_order($action, $email, $name, $good, $utm){ global $url; global $api_key; $dateNow = date('d').'.'.date('m').'.'.date('o'); //вешаем тег оформления/оплаты любого заказа $tag = (($action == 'neworder') ? 'Оформил заказ' : (($action == 'paidorder') ? ' Оплатил заказ' : 'Ошибка. Скрипт API. Внесение заказа')); //передаем значения пользовательских полей //с информацией о заказе $params = array( 'api_key' => $api_key, 'api_action' => 'contact_sync', 'api_output' => 'serialize', ); $n = explode(" ", $name); $firstn = ($n[1] ? $n[1] : ''); $lastn = ($n[0] ? $n[0] : ''); $post = array( 'email' => $email, 'first_name' => $firstn, 'last_name' => $lastn, ); //заказ оформлен if ($action == 'neworder') { $post['field[%LAST_ORDER_DATE%,0]'] = $dateNow; $post['field[%LAST_ORDER_GOOD%,0]'] = $good; $post['field[%LAST_ORDER_UTM%,0]'] = $utm; } //заказ оплачен if ($action == 'paidorder') { $post['field[%LAST_PAID_DATE%,0]'] = $dateNow; $post['field[%LAST_PAID_GOOD%,0]'] = $good; $post['field[%LAST_PAID_UTM%,0]'] = $utm; } sendPOST($params, $post); //добавляем тег return contact_tag_add($email, $tag)['result_message']; } //непосредственно отправляет POST-запрос на сервер function sendPOST($params, $post){ global $url; // This section takes the input fields and converts them to the proper format $query = ""; foreach( $params as $key => $value ) $query .= urlencode($key) . '=' . urlencode($value) . '&'; $query = rtrim($query, '& '); // This section takes the input data and converts it to the proper format $data = ""; foreach( $post as $key => $value ) $data .= urlencode($key) . '=' . urlencode($value) . '&'; $data = rtrim($data, '& '); // clean up the url $url = rtrim($url, '/ '); // define a final API request - GET $api = $url . '/admin/api.php?' . $query; $request = curl_init($api); // initiate curl object curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1) curl_setopt($request, CURLOPT_POSTFIELDS, $data); // use HTTP POST to send form data //curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment if you get no gateway response and are using HTTPS curl_setopt($request, CURLOPT_FOLLOWLOCATION, true); $response = (string)curl_exec($request); curl_close($request); $result = unserialize($response); return $result; } ?> |
В нашей ситуации, нам необходимо лишь добавлять теги к карточке пользователя и обновлять информационные поля. Использование API ActiveCampaign мы рассматриваем на примере интеграции с Бизон365, поэтому остановимся подробнее на функции внесения информации о заказах. После получения информации о заказе мы обновляем встроенные поля «Имя», «Фамилия» и наши пользовательские поля «Дата последнего оформления заказа/последней покупки», «Последний оформленный/оплаченный заказ» и «utm-метка последнего заказ/покупки» и добавляем тег «Оформил заказ» или «Оплатил заказ».
Для того, чтобы получать информацию о заказах, в настройках кассы Бизон365 в разделе «Интеграция API» указываем путь к скрипту на нашем сервере, назовем его pay.php.
Теперь Бизон будет пересылать всю информацию о заказах к нам на сервер, мы же будем принимать ее, обрабатывать и вносить изменения в карточку пользователя ActiveCampaign. Опишем файл pay.php.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<?php include('activeCampaign_API.php'); //ловим post-запрос $postData = file_get_contents('php://input'); $data = array( 'action' => $_POST['action'], 'orderstatus' => $_POST['orderstatus'], 'resend' => $_POST['resend'], 'user' => $_POST['user'], 'orderid' => $_POST['orderid'], 'email' => $_POST['email'], 'amount' => $_POST['amount'], 'currency' => $_POST['currency'], 'items' => $_POST['items'], 'payby' => $_POST['payby'], 'date' => $_POST['date'], 'refid' => $_POST['refid'], 'ip' => $_POST['ip'], 'city' => $_POST['city'], 'name_utf8' => $_POST['name_utf8'], 'name' => $_POST['name'], 'channel' => $_POST['channel'], 'appear' => $_POST['appear'], 'coupon' => $_POST['coupon'], 'clientId' => $_POST['clientId'], 'custom1' => $_POST['custom1'], 'custom2' => $_POST['custom2'], 'custom3' => $_POST['custom3'], 'accessdata' => $_POST['accessdata'], 'hash' => $_POST['hash'], 'secret' => $_POST['secret'], 'netid' => $_POST['netid'], 'network' => $_POST['network'], 'avatar' => $_POST['avatar'], 'utm_source' => $_POST['utm_source'], 'utm_medium' => $_POST['utm_medium'], 'utm_campaign' => $_POST['utm_campaign'] ); //передаем информацию об оплате в ActiveCampaign $utm = $data['utm_source'].';'.$data['utm_medium'].';'.$data['utm_campaign']; $r = contact_sync_order($data['action'], $data['email'], $data['name_utf8'], $data['items'], $utm); ?> |
В результате, после выполнения скрипта, карточка пользователя в нашей концепции выглядит следующим образом:
Послесловие
Как видите передать информацию из Бизон365 или любого другого сервиса в ActiveCampaign с помощью API достаточно просто, после этого ее необходимо правильно интерпретировать и выстроить соответствующие цепочки автоматизации. О том, как мы это делаем, расскажем в следующих статьях.
Пишите ваши вопросы в комментариях или обращайтесь напрямую по контактам, указанным на этой странице.