Contact Form 7 — как отслеживать какой пользователь отправил форму?

Ссылка скопирована
1 ответ

На моем сайте есть поэтапное заполнение опросников, реализовано через формы. Отправка на каждом этапе проходит как отдельным лидом.
Но проблема в том что форму заполняет сразу несколько человек и сложно идентифицировать какой человек проходит этапы.
Подскажите можно ли как-то отслеживать цепочку отправок по каждому человеку отдельно?
Например по ip или как-то по другому. Лиды попадают поэтапно в гугл таблицу у меня.
Думал добавить поле одинаковое на каждом этапе но выглядит как-то сложно и люди в середине перестают вводить одно и тоже.

Дополнительно:

лк есть?или вы хотите только по айпи определять?

  • Но проблема в том что форму заполняет сразу несколько человек и сложно идентифицировать какой человек проходит этапы.

    Номер телефона или почта указывается пользователем?

  • godsplane, нет
  • Михаил Р., да единожны на первой форме
  • DimasikLebed, насколько я помню сf7 позволяет указать в шаблоне email письма как раз ip адрес
    https://contactform7.com/special-mail-tags/
  • godsplane, я правильно понимаю в теле формы и в теле сообщения отправки нужно прописать тег?
  • DimasikLebed, просо вставляете тег из доки в шаблон html письма
  • Поставил тег для отправки мне ip адреса, наверное пока так буду отслеживать.
    В дальнейшем сделаю личный кабинет с регистрацией для прохождения опросов и буду следить по личному кабинету.
    Спасибо за информацию
  • Всё в целом просто.
    Если человек авторизован, то присылать его например [_user_login]
    Если нет, то менее надёжно - [_remote_ip].
    См все служебные шорткоды CF7.
    Или он должен в каждой форме указывать свой емейл (или другие данные).

    АПД. Решение чуть сложнее, но универсальнее: генерировать цифровую автоинкрементную куку с ограниченным сроком жизни и вставлять её в скрытое поле формы. Будет что-то типа ID юзера независимо от авторизации.

    НО

    На моем сайте есть поэтапное заполнение опросников, реализовано через формы. Отправка на каждом этапе проходит как отдельным лидом.

    Может лучше/достаточно сделать многошаговую форму? С CF7 это просто.

    Ответы:

    Но проблема в том что форму заполняет сразу несколько человек и сложно идентифицировать какой человек проходит этапы.

    Номер телефона или почта указывается пользователем?

    да единожны на первой форме

    Достаточно не простая задача, т.к. необходимо реализовать множество этапов по связке этапов с конкретным пользователем, особенно, на бэке. Если коротко, то:
    1. Форма должна слать куку пользователя, чтобы бэк мог понимать, кто перед ним.
    2. Бэк должен понимать, кто шлет ему форму, чтобы связать разные этапы.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Артём Dev Ответ

    В 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;
    });

    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_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;
    });

    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. Один и тот же идентификатор должен уходить во все формы цепочки.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно