[amoCRM] Интеграция с востребованным сервисом
Как многие помнят, месяц назад вместе с MODSTORE.PRO мы объявили о создании компонента для интеграции сайта на MODX Revo с популярной amoCRM. Реакция сообщества тогда обрадовала, что означало достаточно высокую востребованность такого инструмента.
И вот, теперь он готов!
Если вкратце, то AmoCRM — это простая и понятная система учета потенциальных клиентов и сделок, которая поможет контролировать и увеличивать ваши продажи. С помощью нее вы не только с легкостью сможете контролировать сделки, но и не потеряете ни одной заявки от потенциальных клиентов.
Перейдите в раздел API настроек amoCRM (YOUR_DOMAIN.amocrm.ru/settings/dev/) и добавьте новый виджет, если не создан ранее. В окне ввода кода виджета можно ввести что-то осмысленное, но самое главное, чтобы код оказался уникальным в рамках всего amoCRM.
Затем в таблице виджетов скопируйте значение из колонки «Секретный ключ» и введите в системну настройку.
Компонент написан мной, Воеводским Михаилом, совместно с нашим разработчиком Волковым Николаем.
Отдельное спасибо Павлу Гвоздю за предоставление своих наработок в этом направлении.
Пакет отправлен в магазин, доступен здесь.
И вот, теперь он готов!
Если вкратце, то AmoCRM — это простая и понятная система учета потенциальных клиентов и сделок, которая поможет контролировать и увеличивать ваши продажи. С помощью нее вы не только с легкостью сможете контролировать сделки, но и не потеряете ни одной заявки от потенциальных клиентов.
Ключевые возможности компонента:
- Из заказа на сайте создает сделку и контакт (или привязывает существующий)
- В свойствах заказа указывается метод оплаты и список товаров
- При смене статуса заказа изменяет статус сделки и наоборот
- Из любой формы обратной связи создает контакт
- Автоматически создает новую воронку для заказов с сайта и статусы заказов в ней
- Автоматически создает дополнительные поля сделок для списка товаров и метода оплаты
- Автоматически создает и обновляет Контакты при сохранении Пользователей на сайте
- Может создавать неограниченное количество дополнительных полей для контактов (упрощенный режим)
Установка и настройка
Системные настройки
Название | Значение по умолчанию | Описание | amocrm_account | Аккаунт. Поддомен домена amocrm.ru | amocrm_hash | Ключ пользователя, можно получить на странице редактирования профиля пользователя | amocrm_login | Логин, с которым вы авторизуетесь в amoCRM | amocrm_new_order_status_id | 1 | ID статуса нового заказа minishop2 | amocrm_pipeline_id | ID воронки для нового заказа, заполняется автоматически при первом заказе | amocrm_secret_key | Секретный ключ виджета |
---|
Как получить значение amocrm_secret_key
Ввод значения секретного ключа необходим только для создания дополнительных полей с помощью модуля. Если Вы планируете создавать поля самостоятельно, ключ вводить не требуется.Перейдите в раздел API настроек amoCRM (YOUR_DOMAIN.amocrm.ru/settings/dev/) и добавьте новый виджет, если не создан ранее. В окне ввода кода виджета можно ввести что-то осмысленное, но самое главное, чтобы код оказался уникальным в рамках всего amoCRM.
Затем в таблице виджетов скопируйте значение из колонки «Секретный ключ» и введите в системну настройку.
Настройка Webhook
Для получения изменений из amoCRM на сайт в блоке Webhook введите адрес<http://stite.ru>/assets/components/amocrm/webhook.php
, заменив <http://stite.ru>
на URL Вашего сайта. После этого в выпадающем списке справа отметьте галочками события: * Изменить сделку * Смена статуса сделкиДобавление дополнительных полей Контактам
При создании или изменении Контакта с сайта могут передаваться любые данные Пользователя. Единственное условие — должны быть созданы соответствующие дополнительные поля. Если секретный ключ виджета указан, то новые поля можно создать прямо с сайта. Для этого удобнее всего использовать компонент Console и выполнить в нем следующий код:<code>if (!$amo = $modx->getService('amocrm', 'amoCRM', $modx->getOption('amocrm_core_path', null, $modx->getOption('core_path') . 'components/amocrm/') . 'model/amocrm/', array()) ) { return 'Could not load amoCRM class!'; } $amo->auth(); $amo->addContactsCustomFields(array('username', 'email', 'phone'));</code>Здесь видно, что перечень полей задается в виде стандартного массива PHP. Важно: поля должны совпадать со свойствами пользователей MODX.
Компонент написан мной, Воеводским Михаилом, совместно с нашим разработчиком Волковым Николаем.
Отдельное спасибо Павлу Гвоздю за предоставление своих наработок в этом направлении.
Пакет отправлен в магазин, доступен здесь.
Комментарии: 81
Из любой формы обратной связи создает контактНа днях просили фичу: если письмо отправлено через AjaxForm (или FormIt) то создается отдельный контакт в CRM. Можно будет сделать такое через ваш модуль?
Да.
Да.
я сначала подумал, это открытое письмо Паше Гвоздю)))
я тоже по первому слову так подумал)
Это была чистая случайность :) спасибо, исправил.
Компонент опубликован: modstore.pro/packages/import-and-export/amocrm
Когда ожидается Битрикс24?
Планируем к НГ.
Спасибо, наш Дед Мороз.
Наш подарок уже в пути?
Увы, не успели. Следующий расчетный срок — середина января. В любом случае, постараемся не затягивать :)
С новым годом!
С новым годом!
Ок. Даем второй шанс — до Старого Нового Года.
Иначе добрый Дед Мороз, станет горбатым дедом нетрадиционной ориентации.
С Новым Годом!
Иначе добрый Дед Мороз, станет горбатым дедом нетрадиционной ориентации.
С Новым Годом!
Пожелание передано Деду Морозу ;)
Здравствуй, Дедушка Мороз, борода из ваты! Ты подарки нам принёс?!
Ждём с нетерпением интеграции с Битрикс24 — у ник как раз выкатили новый релиз, куча новых плюшек и удобностей, поэтому связка MODX + Битрикс24 = СУПЕР ДУЭТ, очень ждём!
Спасибо, за компонент.
Подскажите как можно реализовать передачу контакта или создать сделку при заказе обратного звонка с сайта, через обычную форму?
Подскажите как можно реализовать передачу контакта или создать сделку при заказе обратного звонка с сайта, через обычную форму?
Сегодня-завтра дополним документацию по компоненту, там будет со скринами освещен этот вопрос.
Спасибо. Мы всем ждем!)
Нет еще документации? очень срочно нужно цепляться к формам на formit (через ajaxform)! Если уже есть, то где почитать?
Выпущена версия 1.0.0-pl. Добавлены системные настройки для указания полей объектов msOrder и msOrderAddress, которые будут переданы в amoCRM.
Обновляйтесь корректируйте под свои нужды.
Обновляйтесь корректируйте под свои нужды.
Из любой формы обратной связи создает контактЭто через ajax работает?
Контакт или лид создает?
Работает как хук FormIt. Создает контакт.
Лид нужно сразу делать.
Наверно можно легко поправить.
Наверно можно легко поправить.
Михаил, в результате эксплуатации поняли, что реалтайм отправка корзины в amo медленная.
Секунд около 10 примерно.
Вишлист:
опционально в настройках: реалтайм или данные в файл, в csv или json мб.
А далее можно будет по крону как нито разобрать.
Спасибо!
Секунд около 10 примерно.
Вишлист:
опционально в настройках: реалтайм или данные в файл, в csv или json мб.
А далее можно будет по крону как нито разобрать.
Спасибо!
Игорь, 10 секунд — странно, не должно быть так. Но пожелание касательно очереди принято, в январе подумаем.
Добавьте проверку на контекст — при сохранения профиля в админке — создает контакт в CRM
Обновляйтесь.
Спасибо за оперативность!)
А подскажите:
Все работает, контакт при заполнении формы создается. Но в админке сыпятся ошибки:
А подскажите:
Все работает, контакт при заполнении формы создается. Но в админке сыпятся ошибки:
/core/cache/includes/elements/modsnippet/46.include.cache.php : 26) PHP warning: in_array() expects parameter 2 to be array, null given
Посмотрел — жалуется на сниппет amoCRMAddContact, а конкретно на эту строку:if (in_array($key, array_keys($formFields))) {
Добавьте в этом сниппете на 8 строке
$formFields = array();
Напишите результат.
Ошибка пропала) Спасибо)
Битрикс24 не добавлен еще?
Еще нет.
Доброго дня. Можно от вас узнать сколько чистого времени у вас заняло разработка интеграции? ну или хотя бы с погрешностью в 20% ))) Очень хочется понять на сколько вообще подобные интеграции времязатратны. Спасибо!
Приветствую. 50 часов, ±
Михаил, вот такой момент: в методе prepareContact() у тебя жестко прописано $default_fields = array('name'); На самом же деле дефолтных полей значительно больше developers.amocrm.ru/rest_api/contacts_set.php
Особенно важно поле tags. Если прописать хотя бы вот так $default_fields = array('name','tags'), уже получается создавать контакты с тэгами.
Пока же пришлось делать так:
А в целом все работает, контакты создаются, список контактов из АМО получается забрать и прочий необходимый функционал есть. Спасибо за компонент! Пригодился.
Особенно важно поле tags. Если прописать хотя бы вот так $default_fields = array('name','tags'), уже получается создавать контакты с тэгами.
Пока же пришлось делать так:
if($amo->auth()){
$contact = $amo->prepareContact(array(
'name' => "Имя",
'email' => "email@...",
'phone' => "777777777",
));
$contact['tags'] = 'RU';
$data = array('request' => array('contacts' => array()));
$data['request']['contacts']['add'] = array($contact);
$result = $amo->sendRequest('/private/api/v2/json/contacts/set', $data);
}
И вот здесь всплывает еще один момент: хорошо было бы иметь возможность в метод addContext() передавать объект контакта, чтобы не приходилось формировать запрос.А в целом все работает, контакты создаются, список контактов из АМО получается забрать и прочий необходимый функционал есть. Спасибо за компонент! Пригодился.
Николай, спасибо за замечания по полям. Изменю механизм.
addContext() — где такой метод? Мб, addContact()?
addContext() — где такой метод? Мб, addContact()?
Не за что.
addContext() — где такой метод? Мб, addContact()?Да, все верно, моя ошибка.
Михаил, вот еще информация: создание заметок по контактам и сделкам. В контакте результат выглядит так:
Возможность создавать заметки особенно полезна, когда с сайта передаются не только простые поля (типа емейл, имя и т.п.), а какие-нибудь данные из более сложных форм (произвольные текстовые сообщения, информация по товару или типа того).
Создание События:
element_id: id объекта (в нашем случае аккаунта).
note_type: 4 — это произвольная заметка по контакту.
Полный список типов здесь: developers.amocrm.ru/rest_api/notes_type.php
Получение всех Событий по контакту:
Возможность создавать заметки особенно полезна, когда с сайта передаются не только простые поля (типа емейл, имя и т.п.), а какие-нибудь данные из более сложных форм (произвольные текстовые сообщения, информация по товару или типа того).
Создание События:
if (!$amo = $modx->getService('amocrm', 'amoCRM', $modx->getOption('amocrm_core_path', null,
$modx->getOption('core_path') . 'components/amocrm/') . 'model/amocrm/', array())
) {
return 'Could not load amoCRM class!';
}
if($amo->auth()){
$note = array(
'element_type' => 1,
'element_id' => 123456789,
'note_type' => 4,
'text' => "gfgggggff",
);
$data = array('request' => array('notes' => array()));
$data['request']['notes']['add'] = array($note);
$result = $amo->sendRequest('/private/api/v2/json/notes/set', $data);
print_r($result);
}
else{
print "Error auth";
}
element_type: 1 — контакт, 2 — сделка. element_id: id объекта (в нашем случае аккаунта).
note_type: 4 — это произвольная заметка по контакту.
Полный список типов здесь: developers.amocrm.ru/rest_api/notes_type.php
Получение всех Событий по контакту:
if (!$amo = $modx->getService('amocrm', 'amoCRM', $modx->getOption('amocrm_core_path', null,
$modx->getOption('core_path') . 'components/amocrm/') . 'model/amocrm/', array())
) {
return 'Could not load amoCRM class!';
}
if($amo->auth()){
$data = array(
'type' => 'contact',
'element_id' => 123456789,
);
$result = $amo->sendRequest('/private/api/v2/json/notes/list', $data, "GET");
print_r($result);
}
else{
print "Error auth";
}
Николай, спасибо!
Не за что!
Для пример: мой код, который создает Сделку, Контакт с тегами, связывает Контакт со Сделкой, и создает заметку по Контакту.
if (!$amo = $this->modx->getService('amocrm', 'amoCRM', $this->modx->getOption('amocrm_core_path', null,
$this->modx->getOption('core_path') . 'components/amocrm/') . 'model/amocrm/', array())
) {
$this->modx->log(modX::LOG_LEVEL_ERROR, "[". __CLASS__ ."] Could not load amoCRM class!");
}
if($amo->auth()){
/*
Создаем сделку
*/
$data = array(
'name' => "Заявка с сайта",
);
$lead_id = $amo->addLead($data);
/*
Создаем контакт
*/
$contact = $amo->prepareContact(array(
'name' => $this->getProperty('name'),
'phone' => $this->getProperty('phone'),
'email' => $this->getProperty('email'),
));
$contact['tags'] = 'ClientsFromWebsite,RUS';
$contact['linked_leads_id'] = $lead_id;
$data = array('request' => array('contacts' => array()));
$data['request']['contacts']['add'] = array($contact);
$result = $amo->sendRequest('/private/api/v2/json/contacts/set', $data);
if(!empty($result['out']['contacts']['add'][0]['id'])){
$contact_id = $result['out']['contacts']['add'][0]['id'];
}
/*
Создаем заметку по контакту
*/
if(
$message = $this->getProperty("message")
AND $contact_id
){
$note = array(
'element_type' => 1,
'element_id' => $contact_id,
'note_type' => 4,
'text' => $message,
);
$data = array('request' => array('notes' => array()));
$data['request']['notes']['add'] = array($note);
$result = $amo->sendRequest('/private/api/v2/json/notes/set', $data);
}
}
else{
$this->modx->log(modX::LOG_LEVEL_ERROR, "[". __CLASS__ ."] amoCRM Error auth");
}
Получается вот такой результат:
Доброго времени.
Установил плагин. В crm передаются данные заказов и всех форм через хук formit
С заказами минишопа проблем нет, а вот при отправке форм в логах ошибка
Установил плагин. В crm передаются данные заказов и всех форм через хук formit
С заказами минишопа проблем нет, а вот при отправке форм в логах ошибка
/public_html/core/xpdo/xpdo.class.php : 644) Could not load class: amoCRMLead from mysql.amocrmlead.
На работу компонента и отправку данных ошибка не влияет, но хотелось бы от нее избавиться.
Напишите в поддержку с указанием доступа к админке.
Три вопроса:
1. Как к вашему модулю добавить добавление Заметки, я так понимаю то-что описал Николай это его собственное решение не привязанное к модулю.
2. Можно ли в принципе создать задачу сразу после попадания заявки в CRM? Если это возможно то планируете ли такое улучшение модуля.
3. Развитие модуля прекращено?
1. Как к вашему модулю добавить добавление Заметки, я так понимаю то-что описал Николай это его собственное решение не привязанное к модулю.
2. Можно ли в принципе создать задачу сразу после попадания заявки в CRM? Если это возможно то планируете ли такое улучшение модуля.
3. Развитие модуля прекращено?
1. Это его решение, основанное на методах модуля
2. Возможно. В будущем такое обновление появится
3. Не прекращено. Заявок на добавление возможностей не поступало.
2. Возможно. В будущем такое обновление появится
3. Не прекращено. Заявок на добавление возможностей не поступало.
Проверки на дубли тоже нету в модуле? а то мне тут в амо прилетает по 15 заявок одинаковых.
Напишите в поддержку в магазине, какого плана проверки нужны.
Здравствуйте, писал в поддержке, там пока тишина. Купил вчера модуль и насколько понял, в нём, при создании контакта, реализована поддержка лишь 3-х полей — name, phone, email.
Вопрос: передача кастомного поля реализована в модуле? Если да, то подскажите как передать, так как я не разобрался, если нет, то надо дописывать, будете ли вы этим заниматься или это уже удел того, кто купил модуль?
Вопрос: передача кастомного поля реализована в модуле? Если да, то подскажите как передать, так как я не разобрался, если нет, то надо дописывать, будете ли вы этим заниматься или это уже удел того, кто купил модуль?
Добрый день.
Ответил в поддержке.
На всякий случай, дублирую:
Добавьте в вызов FormIt параметр:
Ответил в поддержке.
На всякий случай, дублирую:
Добавьте в вызов FormIt параметр:
&amoCRMNameField=`amoField1==formField1||amoField2==formField2||amoField3==formField3`
Добрый день. Помогите пожалуйста разобраться. При создании сделки ответственный назначается сразу администратор и менеджеры по продажам не видят эту сделку, т.к. она автоматически ставится на меня. Каким образом можно сделать что бы сделка просто создавалась без назначенного ответственного и ее видели все.
Как работает сниппет-хук amoCRMAddContactGeo?
В этой ветке документации больше чем в самой документации.
В этой ветке документации больше чем в самой документации.
Данный хук смотрит на системную настройку amocrm_geo_users и выставляет ответственного для заявки на основании геоинформации из компонента GeoLocation.
Настройка указывается в формате:
{«userLogin@email.com»:«UA-43,RU-ROS,RU-KDA,RU-STA,RU-SPE»,«userLogin2@email.com»:«RU-LEN»}
Настройка указывается в формате:
{«userLogin@email.com»:«UA-43,RU-ROS,RU-KDA,RU-STA,RU-SPE»,«userLogin2@email.com»:«RU-LEN»}
Добрый день!
у меня форма с полями name, phone, email, но они называются contact_name, contact_phone, contact_email. Я прописала
&hooks=`email,FormItAutoResponder,amoCRMAddContact`
&amoCRMNameField=`name==contact_name||phone==contact_phone||email==contact_email`
это правильно? В amoCRM контакт не попадает :(
у меня форма с полями name, phone, email, но они называются contact_name, contact_phone, contact_email. Я прописала
&hooks=`email,FormItAutoResponder,amoCRMAddContact`
&amoCRMNameField=`name==contact_name||phone==contact_phone||email==contact_email`
это правильно? В amoCRM контакт не попадает :(
Выглядит правильно.
Предоставьте доступ в админку, напишите данные в поддержке магазина.
Предоставьте доступ в админку, напишите данные в поддержке магазина.
Написала.
Здравствуйте.
Интересует покупка вашего плагина. Возможно ли с помощью вашего плагина сделать следующие:
1. Пользователь заходит на сайт, находит интересующий его товар.
2. Заполняет форму и нажимает отправить. У формы есть дополнительное поле «Название товара».
3. Форма отправляется в амоцрм, в качестве Контакта.
4. Дальше менеджер уже работает с контактом, проводя его по ссылке.
В документации у вас указано «Важно: поля контактов amoCRM должны совпадать с названиями полей формы.»
А как в форму добавить поле «Название товара», чтобы данные из нее отправились в амоцрм? Это возможно сделать?
На сайте корзины нету, все заказы через формы обычные на Formit.
Интересует покупка вашего плагина. Возможно ли с помощью вашего плагина сделать следующие:
1. Пользователь заходит на сайт, находит интересующий его товар.
2. Заполняет форму и нажимает отправить. У формы есть дополнительное поле «Название товара».
3. Форма отправляется в амоцрм, в качестве Контакта.
4. Дальше менеджер уже работает с контактом, проводя его по ссылке.
В документации у вас указано «Важно: поля контактов amoCRM должны совпадать с названиями полей формы.»
А как в форму добавить поле «Название товара», чтобы данные из нее отправились в амоцрм? Это возможно сделать?
На сайте корзины нету, все заказы через формы обычные на Formit.
Повторю вопрос taxsin
Как сделать чтобы не назначался ответственный, и сделки падали в раздел неразобранное?
Какую настройку изменить? Очень прошу помочь! Так как никто в офисе не видит приход новых сделок.
Как сделать чтобы не назначался ответственный, и сделки падали в раздел неразобранное?
Какую настройку изменить? Очень прошу помочь! Так как никто в офисе не видит приход новых сделок.
Всем привет!
Купил дополнение, настроил всё что нужно, кроме отправки текста сообщения из formit. Почему-то оно не добавляется в amoCRM.
вызов formit
в системных настройках сделал так.
Шаблон формы:
Купил дополнение, настроил всё что нужно, кроме отправки текста сообщения из formit. Почему-то оно не добавляется в amoCRM.
вызов formit
&hooks=`email,amoCRMAddContact`
&amoCRMNameField=`name==name||phone==phone||email==email||comment==comment`
&validate=`name:required:minLength=`2`,phone:required, email:email:required, comment:stripTags, agree:required, site_message:blank`
но я так понимаю что name==name||phone==phone||email==email|| не нужно указывать, оно и так добавляется в amoCRM, а вот комментарий добавить не получается.в системных настройках сделал так.
Шаблон формы:
<form id="contactform" class="form" name="contactform" action="[[~[[*id]]]]" method="post">
<input type="hidden" name="nospam:blank" value="" />
<div class="form-group">
<input type="text" name="site_message" class="site_message" value="" />
<input type="text" name="name" id="name" class="form-control" placeholder="Введите Ваше имя (Обязательное поле)">
<div class="invalid-feedback error_name">
[[+fi.error.name]]
</div>
</div>
<div class="form-group">
<input type="text" name="email" id="email" class="form-control" placeholder="Введите адрес электронной почты (Обязательное поле)">
<div class="invalid-feedback error_email">
[[+fi.error.email]]
</div>
</div>
<div class="form-group">
<input type="text" name="phone" id="phone" class="form-control " placeholder="Введите номер телефона (Обязательное поле)">
<div class="invalid-feedback error_phone">
[[+fi.error.phone]]
</div>
</div>
<div class="form-group">
<textarea type="text" name="comment" id="comment" class="form-control" rows="3" placeholder="Сообщение"></textarea>
</div>
<div class="form-check d-flex">
<input type="hidden" name="agree[]" value="">
<input type="checkbox" name="agree[]" id="agree" class="form-check-input" checked>
<label class="form-check-label">Я согласен с <a href="[[~3]]" class="aPerson">условиями обработки персональных данных</a></label>
<div class="invalid-feedback error_agree">
[[+fi.error.agree]]
</div>
</div>
<button type="submit" class="btn btn-priceForm mt-2">Отправить</button>
</form>
Подскажите, кто уже это настраивал – автор дополнения не отвечает уже неделю…
В модуле есть возможность передавать visitor_uid?
Интересует вот этот функционал: www.amocrm.ru/developers/content/digital_pipeline/site_visit
Интересует вот этот функционал: www.amocrm.ru/developers/content/digital_pipeline/site_visit
Есть. На фронте сделайте все, что описано в документации, а в параметрах для хука и в системной настройке полей сделок укажите данное поле для передачи.
<script>
window.AMOPIXEL_IDENTIFIER_PARAMS = window.AMOPIXEL_IDENTIFIER_PARAMS || {};
window.AMOPIXEL_IDENTIFIER_PARAMS.onload = function (pixel_identifier) {
var visitor_uid = pixel_identifier.getVisitorUid(); // Получаем visitor_uid
// console.log ( 'visitor_uid' , visitor_uid) ;
if (visitor_uid) {
// Записываем его в скрытое поле формы 'visitor_uid'
$(document).ready(function () {
$('form input[name = "visitor_uid"]').val(visitor_uid);
});
}
};
</script>
Добрый день, подскажите может ли компонент добавлять товары в сделку из каталога амо? не текстовым полем, а поиск по артикулу и добавление товаров из каталога, который есть в амо црм.
Такой возможности нет. В стандартном варианте amoCRM товары отсутствуют. Возможно, в Вашем аккаунте установлены виджеты, добавляющие каталог товаров. Если так, напишите на почту, обсудим доработку под Ваш сайт.
Добрый день. Я интегратор amocrm и хочу узнать вот, что. Я сейчас ставлю СРМ-ку клиенту, у них сайт на modx, вот результат из builtwith builtwith.com/sakurasimferopol.ru.
Подойдёт ли данный модуль интеграции с этим сайтом? sakurasimferopol.ru. Спасибо
Подойдёт ли данный модуль интеграции с этим сайтом? sakurasimferopol.ru. Спасибо
Возможно кому то пригодится.
Вместе с передачей необходимых полей нужно было передавать UTM метки, а также client ID Yandex метрики и GA.
Пишу как реализовал:
В наши формы добавляем скрытые поля:
Где XXXXXXX — номер поля в AmoCRM.
Далее создаем сниппет utmSnippet — для сохранения значений UTM меток в кукки. Для чего это нужно, а чтобы отслеживать метки не только по ссылке, по которой пришел клиент с рекламы, а также при переходе по другим страницам сайта метки не терялись.
Получаем значения Client ID:
Для облегчения получения значений UTM меток воспользуемся либой js-cookie
Вместе с передачей необходимых полей нужно было передавать UTM метки, а также client ID Yandex метрики и GA.
Пишу как реализовал:
В наши формы добавляем скрытые поля:
<input type="hidden" name="client_id_yandex" value="">
<input type="hidden" name="client_id_google" value="">
<input type="hidden" name="utm_source" value="">
<input type="hidden" name="utm_medium" value="">
<input type="hidden" name="utm_content" value="">
<input type="hidden" name="utm_term" value="">
<input type="hidden" name="utm_campaign" value="">
В код вызова AjaxForm в параметр amoCRMmodxAmoFieldsEq добавляем соответствие полей:'amoCRMmodxAmoFieldsEq' => 'phone||email||amocrm_link==XXXXXXX||amocrm_name==XXXXXXX||amocrm_form==XXXXXXX||amocrm_nameform==XXXXXXX||amocrm__subtitle==XXXXXXX||client_id_yandex==v||client_id_google==XXXXXXX||utm_source==XXXXXXX||utm_medium==XXXXXXX||utm_content==XXXXXXX||utm_term==XXXXXXX||utm_campaign==XXXXXXX||question==XXXXXXX||visitor_uid==visitor_uid',
Где XXXXXXX — номер поля в AmoCRM.
Далее создаем сниппет utmSnippet — для сохранения значений UTM меток в кукки. Для чего это нужно, а чтобы отслеживать метки не только по ссылке, по которой пришел клиент с рекламы, а также при переходе по другим страницам сайта метки не терялись.
<?php
if (!isset($_COOKIE['utm_source']))
{
$utm_source = $_GET['utm_source'];
setcookie("utm_source", $utm_source, time() + 60 * 60 * 24 * 5);
}
if (!isset($_COOKIE['utm_medium']))
{
$utm_medium = $_GET['utm_medium'];
setcookie("utm_medium", $utm_medium, time() + 60 * 60 * 24 * 5);
}
if (!isset($_COOKIE['utm_content']))
{
$utm_content = $_GET['utm_content'];
setcookie("utm_content", $utm_content, time() + 60 * 60 * 24 * 5);
}
if (!isset($_COOKIE['utm_term']))
{
$utm_term = $_GET['utm_term'];
setcookie("utm_term", $utm_term, time() + 60 * 60 * 24 * 5);
}
if (!isset($_COOKIE['utm_campaign']))
{
$utm_campaign = $_GET['utm_campaign'];
setcookie("utm_campaign", $utm_campaign, time() + 60 * 60 * 24 * 5);
}
Вызываем, в body сниппет [[!utmSnippet?]]
Переходим к получению, подстановке в скрытые поля и передаче значений UTM меток, client ID в AmoCRM.Получаем значения Client ID:
$(document).ready(function () {
//GA Client_ID
var clientId = ga.getAll()[0].get('clientId');
$(document).ready(function () {
$('form input[name = "client_id_google"]').val(clientId);
});
// Yandex.metrica client ID
var clientidym = yaCounterXXXXXXX.getClientID();
$(document).ready(function () {
$('form input[name = "client_id_yandex"]').val(clientidym);
});
}
Для облегчения получения значений UTM меток воспользуемся либой js-cookie
$(document).ready(function () {
var utm_campaign = Cookies.get('utm_campaign');
$(document).ready(function () {
$('form input[name = "utm_campaign"]').val(utm_campaign);
});
var utm_content = Cookies.get('utm_content');
$(document).ready(function () {
$('form input[name = "utm_content"]').val(utm_content);
});
var utm_medium = Cookies.get('utm_medium');
$(document).ready(function () {
$('form input[name = "utm_medium"]').val(utm_medium);
});
var utm_source = Cookies.get('utm_source');
$(document).ready(function () {
$('form input[name = "utm_source"]').val(utm_source);
});
var utm_term = Cookies.get('utm_term');
$(document).ready(function () {
$('form input[name = "utm_term"]').val(utm_term);
});
}
Иван, спасибо!
Так как удалить коммент не могу. Вот обновленный код:
Сниппет: utmSnippet
Сниппет: utmSnippet
<?php
$cookies = array('utm_source', 'utm_medium', 'utm_content', 'utm_term', 'utm_campaign');
foreach ($cookies as $key) {
if (!isset($_COOKIE[$key]))
{
$val = $_GET[$key];
$_COOKIE[$key] = $val;
setcookie($key, $val, time() + 60 * 60 * 24 * 5);
}
}
Обновление получения данных из кук и передача в поля:<script>
//GA Client_ID
ga(function (tracker) {
var clientId = tracker.get('clientId');
$('form input[name=client_id_google]').val(clientId);
});
// Yandex.metrica client ID
ym(XXXXXXXXX, 'getClientID', function (clientID) {
$('form input[name=client_id_yandex]').val(clientID);
});
var cookies = ['utm_campaign', 'utm_content', 'utm_medium', 'utm_source', 'utm_term'];
cookies.forEach(function(key) {
$('form input[name=' + key + ']').val(Cookies.get(key));
});
</script>
Добрый день, подскажите пожалуйста как меняется формат списка товаров, мне нужно выводин некоторые кастомные поля из товара которые добавил. Но никак не могу разобраться где это меняется.
prnt.sc/uy0m24
prnt.sc/uy0m24
Вообще мертво все по поводу этого компонента?
Купить купил, а извините вопрос возник ноль ответа, ни в поддержке ни тут.
Купить купил, а извините вопрос возник ноль ответа, ни в поддержке ни тут.
Здравствуйте. Поддержка должна сидеть возле компьютера круглосуточно, отходя только на обед?
Я видел ваш вопрос в магазине. Отвечу как будет возможность.
Касательно вашего вопроса здесь. Я вот ни слова не понял из вопроса.
Я видел ваш вопрос в магазине. Отвечу как будет возможность.
Касательно вашего вопроса здесь. Я вот ни слова не понял из вопроса.
Прошу прощения за возможный флуд во всех местах, но дело совсем не в «должна сидеть возле компьютера круглосуточно», а в том что месяц прошел с момента первого обращения в поддержку (https://prnt.sc/vj63iq), но даже если не понятно было то все же человек ждет ответа, а его не было.
Буду ждать возможно попробую как-то более понятно обьяснить всю суть проблемы.
Но большое спасибо за ответ хотя бы тут.
Буду ждать возможно попробую как-то более понятно обьяснить всю суть проблемы.
Но большое спасибо за ответ хотя бы тут.
Николай забрал дополнение на поддержку неделю назад. Нужно время для адаптации под новое АПИ
Принял, спасибо, с нетерпением жду.
Хорошо что вообще к Николаю перешел компонент во владения, ранее был человек другой и он совсем не отвечал ( А тут появился хотя бы фидбек от разработчиков
Хорошо что вообще к Николаю перешел компонент во владения, ранее был человек другой и он совсем не отвечал ( А тут появился хотя бы фидбек от разработчиков
Просто Михаил отошел от работы с MODX и попросил найти человека на замену. Что и было сделано.
А сможете пожалуйста сориентировать по срокам когда планируется обновление?
Иван вас вряд ли сможет сориентировать.
Вообще странно такой вопрос задавать постороннему человеку.
Обновление будет выпущено по мере свободного времени.
Вообще странно такой вопрос задавать постороннему человеку.
Обновление будет выпущено по мере свободного времени.
Добрый день. Есть понимание, когда выйдет обновленный пакет для AMO Crm?
клиенты ждут)) уже в следующем году или можно в этом ждать?
клиенты ждут)) уже в следующем году или можно в этом ждать?
Добрый день. По мере свободного времени. Не готов ответить точнее.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.