Почему важно передавать UTM-метки через Contact Form 7
Для маркетологов и аналитиков важно связывать заявки с источниками трафика. UTM-метки, переданные из URL, позволяют понять, с какого рекламного канала или кампании пришел пользователь. Если формы обратной связи не содержат этих данных, аналитика становится неполной.
Contact Form 7 не умеет автоматически сохранять UTM-метки из URL, поэтому нужно реализовать это вручную. В статье разберем, как автоматически подхватывать UTM-метки из URL и добавлять их скрытыми полями в форму Contact Form 7.
Диагностика проблемы: UTM-метки не передаются с формой
Проверьте, что при переходе на страницу с формой в URL есть UTM-метки, например:
https://site.ru/contact?utm_source=google&utm_medium=cpc&utm_campaign=spring_saleЕсли при отправке формы эти параметры не передаются в письме или в базе, значит, Contact Form 7 не получает их из URL.
Часто пользователи пытаются добавить скрытые поля вручную, но без динамической подстановки значений из URL это не работает.
Пошаговое решение: добавляем скрытые поля для UTM с автозаполнением
1. Добавьте скрытые поля в форму Contact Form 7
Откройте вашу форму и вставьте в нее следующие поля:
[hidden utm_source default:get]
[hidden utm_medium default:get]
[hidden utm_campaign default:get]Параметр default:get указывает, что значение берется из GET-параметров URL с именем поля.
2. Настройте форму для передачи этих полей в Email
В шаблоне письма используйте теги:
Источник (utm_source): [utm_source]
Канал (utm_medium): [utm_medium]
Кампания (utm_campaign): [utm_campaign]3. Обработка и очистка данных (по желанию)
Если хотите дополнительно очистить данные или обрабатывать их в PHP, добавьте следующий код в functions.php вашей темы:
add_filter('wpcf7_posted_data', function($posted_data) {
foreach (['utm_source', 'utm_medium', 'utm_campaign'] as $key) {
if (!empty($posted_data[$key])) {
$posted_data[$key] = sanitize_text_field($posted_data[$key]);
}
}
return $posted_data;
});Проверяем результат после внедрения
- Перейдите по URL с UTM-метками, например:
https://site.ru/contact?utm_source=facebook&utm_medium=cpc&utm_campaign=summer - Откройте форму Contact Form 7, заполните и отправьте её.
- Проверьте письмо с заявкой — в нем должны быть значения UTM из URL.
- Если вы сохраняете данные в базе или CRM, убедитесь, что поля передаются корректно.
Частые ошибки и их исправление
- UTM-параметры не передаются: проверьте правильность написания полей в форме, используйте
default:get, а неdefault:post. - Поля не отображаются в письме: убедитесь, что теги полей добавлены в шаблон письма.
- UTM-параметры теряются при переходе между страницами: используйте сохранение UTM в cookie или session, либо передавайте в URL при навигации.
- Данные не фильтруются: для безопасности используйте
sanitize_text_fieldили аналогичные функции при обработке.
Практические советы по безопасности и производительности
- Не доверяйте напрямую GET-параметрам — всегда фильтруйте и валидируйте данные.
- Минимизируйте количество скрытых полей, передавая только необходимые UTM-метки.
- Для сохранения UTM при переходах между страницами используйте JS скрипты или серверные решения.
- Если нужно хранить UTM на длительный срок, лучше сохранять их в сессии или куках с ограничением по времени.
Альтернативные способы реализации: сравнение
| Метод | Плюсы | Минусы |
|---|---|---|
| Скрытые поля с default:get | Простая реализация, не требует плагинов | Работает только при первом заходе на страницу с UTM |
| Сохранение UTM в cookie через JS + вставка в форму | Передача UTM при переходах между страницами | Требует добавления JS, сложнее в поддержке |
| Использование плагинов (например, CF7 Dynamic Text Extension) | Больше возможностей для динамического заполнения | Зависимость от стороннего плагина |