Взаимодействие при использовании js-api
1. Пользователь приходит на лендинг (страницу сайта, в примере landing.html) с установленным js-кодом
Пока не определено, какой набор параметров нужно показать - показывается пустая страница либо страница со значениями по умолчанию.
2. Javascript от клиента отправляет кроссдоменный запрос к api.konvr.ru на получение списка параметров для показа в текстовом виде
Сперва выполняется проверка на то, подходит ли пользователь для эксперимента (пользователь новый, из разрешенного источника, включены ли cookie, отбирается доля трафика), если не подходит - показывается страница по умолчанию (выполняется ф-я konvr_draw). Если подходит - делается кроссдоменный запрос к api.konvr.ru за параметрами показа.
3. Сервер api.konvr.ru получает параметры запроса, создает комбинацию параметров для показа, отвечает текстом
Передаются параметры пользователя и данные по рекламной кампании (id клиента, рекламной кампании и API-ключ). После того, как сделан первый показ, сервер запоминает ссылающийся домен и последующие запросы принимает только с него. На генерацию комбинации параметров уходит менее 0.1 секунды. Ответ приходит в текстовом виде и рабирается на стороне клиента (таким образом "чужие" параметры показать невозможно, вредные действия сделать нельзя)
4. Скрипт на стороне клиента создает лендинг по набору параметров
Посетителю устанавливаются cookie от имени сайта, которые содержат данные об id показа и разыгранную комбинацию параметров, которая будет показываться cookiedays дней без дополнительных обращений к API, позже посетитель станет "новым" для эксперимента. Полученный скрипт исполняет ф-ю konvr_draw (определенную на стороне клиента), которая собирает и показывает лендинг по полученным номерам параметров (и при самом первом визите исполняется konvr_draw_once)
5. Пользователь читает и взаимодействует с лендингом
Он может переходить на другие страницы, без дополнительных обращений к api "выданные" ему параметры будут отображаться, если код установлен на всем сайте.
6. Пользователь делает целевое действие
В приведенном примере действие - это отправка формы. При нажатии кнопки исполняется ф-я konvr_success(), в которую передается id формы, и событие отправки планируется на 0.5 секунды вперед (если скрипт api не успеет ответить, форма будет отправлена в любом случае)
7. Javascript от клиента отправляет асинхронный запрос до отправки формы
Если скрипт api не успеет ответить, форма будет отправлена в любом случае
8. Сервер api.konvr.ru получает уведомление о конверсии
Ответ в текстовом виде, если OK - отправляет форму, form.submit()
9. Скрипт на стороне клиента отправляет форму.
10. Клиент получает данные своей формы.
Вместо пунктов 6,7,8,9,10, которые отправляют уведомление в api.konvr.ru ДО отправки формы, можно делать уведомление ПОСЛЕ отправки формы - например, на странице "спасибо" использовать тот же код с переопределенной ф-ей konvr_draw:
function konvr_draw() { konvr_success(''); return; };