Contact Form 7 — как отслеживать какой пользователь отправил форму?
На моем сайте есть поэтапное заполнение опросников, реализовано через формы. Отправка на каждом этапе проходит как отдельным лидом.
Но проблема в том что форму заполняет сразу несколько человек и сложно идентифицировать какой человек проходит этапы.
Подскажите можно ли как-то отслеживать цепочку отправок по каждому человеку отдельно?
Например по ip или как-то по другому. Лиды попадают поэтапно в гугл таблицу у меня.
Думал добавить поле одинаковое на каждом этапе но выглядит как-то сложно и люди в середине перестают вводить одно и тоже.
Дополнительно:
лк есть?или вы хотите только по айпи определять?
Но проблема в том что форму заполняет сразу несколько человек и сложно идентифицировать какой человек проходит этапы.
Номер телефона или почта указывается пользователем?
https://contactform7.com/special-mail-tags/
В дальнейшем сделаю личный кабинет с регистрацией для прохождения опросов и буду следить по личному кабинету.
Спасибо за информацию
Всё в целом просто.
Если человек авторизован, то присылать его например [_user_login]
Если нет, то менее надёжно - [_remote_ip].
См все служебные шорткоды CF7.
Или он должен в каждой форме указывать свой емейл (или другие данные).
АПД. Решение чуть сложнее, но универсальнее: генерировать цифровую автоинкрементную куку с ограниченным сроком жизни и вставлять её в скрытое поле формы. Будет что-то типа ID юзера независимо от авторизации.
НО
На моем сайте есть поэтапное заполнение опросников, реализовано через формы. Отправка на каждом этапе проходит как отдельным лидом.
Может лучше/достаточно сделать многошаговую форму? С CF7 это просто.
Ответы:
Но проблема в том что форму заполняет сразу несколько человек и сложно идентифицировать какой человек проходит этапы.
Номер телефона или почта указывается пользователем?
да единожны на первой форме
Достаточно не простая задача, т.к. необходимо реализовать множество этапов по связке этапов с конкретным пользователем, особенно, на бэке. Если коротко, то:
1. Форма должна слать куку пользователя, чтобы бэк мог понимать, кто перед ним.
2. Бэк должен понимать, кто шлет ему форму, чтобы связать разные этапы.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
В Contact Form 7 можно отслеживать, какой пользователь отправил форму, но нужно заранее определить, кто такой “пользователь”: авторизованный аккаунт WordPress, анонимный посетитель с cookie/session или участник конкретной цепочки опроса.
Если пользователь авторизован, всё просто: добавьте скрытое поле с ID пользователя или сохраните его на сервере при отправке.
add_filter('wpcf7_posted_data', function ($data) { if (is_user_logged_in()) { $data['user_id'] = get_current_user_id(); } return $data; });
Если пользователи не авторизованы, создайте им session ID. Например, при первом заходе ставьте cookie:
add_action('init', function () { if (empty($_COOKIE['survey_session'])) { setcookie('survey_session', wp_generate_uuid4(), time() + MONTH_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN); } });
Потом добавляйте это значение к отправке формы:
add_filter('wpcf7_posted_data', function ($data) { if (!empty($_COOKIE['survey_session'])) { $data['survey_session'] = sanitize_text_field($_COOKIE['survey_session']); } return $data; });
Чтобы видеть цепочку этапов, все формы должны отправлять один и тот же идентификатор: user_id или survey_session. Тогда в CRM/почте/таблице можно сгруппировать заявки.
Если данные важные, лучше не полагаться только на письма. Сохраняйте отправки в Flamingo, CFDB7, CRM или свою таблицу. В письмах удобно смотреть уведомления, но анализировать этапы лучше по структурированным данным.
Итог: для авторизованных используйте
get_current_user_id(), для гостей — cookie/session ID. Один и тот же идентификатор должен уходить во все формы цепочки.