Блог
SignalHost для Drupal: установите модуль, подключитесь один раз — и серверное отслеживание работает
Опубликовано · 6 мин чтения
Модуль SignalHost добавляет серверный Google Tag Manager на сайт Drupal без единой строчки вставленного кода. Он размещает загрузчик отслеживания на каждой странице, которая не относится к администрированию, поддерживает его в актуальном состоянии, когда что-то меняется на нашей стороне, и снова убирает его, когда вы отключаетесь. Руководство идёт в том порядке, в каком вы с этим столкнётесь: установка модуля, подключение контейнера, проверка работы и что делать, если что-то не работает.
Прежде чем начать
- Drupal 10.3 или 11 на PHP 8.1 или новее с расширением sodium, которое входит в PHP начиная с версии 7.2.
- Аккаунт SignalHost. Чтобы попробовать, хватит бесплатного тарифа: 10 000 запросов в месяц и один контейнер. Аккаунт можно создать прямо во время подключения.
- Учётная запись с правом Administer SignalHost Server-Side Tagging. Подключать и отключать сайт могут только пользователи с этим правом.
1. Установите модуль
Установите его как любой другой contributed-модуль со страницы проекта на drupal.org: добавьте через Composer, затем включите.
composer require drupal/signalhost_server_side_tagging
drush en signalhost_server_side_taggingБез Drush включите его в разделе Extend, где он значится как SignalHost Server-Side Tagging в группе Statistics. Пока сайт не подключён, модуль ничего не выводит.
2. Подключите сайт к контейнеру
Откройте Конфигурация › Веб-службы › SignalHost (/admin/config/services/signalhost) и нажмите «Connect with SignalHost». Если аккаунта у вас ещё нет, «Create a free account» вместо этого ведёт на регистрацию. Пока вы не нажмёте кнопку подключения, в SignalHost ничего не отправляется.
На signalhost.io войдите в аккаунт. Следующий экран перечисляет, что модуль сможет и чего не сможет делать, и спрашивает, какой контейнер должен использовать сайт. Контейнер — это ваш собственный сервер тегинга: веб-контейнер и серверный контейнер Tag Manager, созданные в вашем собственном аккаунте Google, так что они остаются вашими.
Выберите существующий контейнер или нажмите «Новый контейнер для» вашего сайта и пройдите короткий мастер. Создание нового занимает несколько минут; подключиться можно сразу, и код будет добавлен, как только контейнер будет готов. Нажмите «Подключить». Вы вернётесь на страницу SignalHost в Drupal с сообщением «Connected». Теперь код SignalHost добавлен на каждую страницу вашего сайта.
3. Проверьте, что код есть на сайте
Теперь на странице написано «Tracking is live» или, пока новый контейнер ещё создаётся, «Tracking starts as soon as your container is ready». Затем посмотрите на строку «On your home page»: сразу после подключения модуль загружает вашу главную страницу так, как это сделал бы посетитель, и ищет на ней свой код. Нужный вам ответ — «Code found». «Check again» в любой момент повторяет проверку, а остальные ответы описаны в разделе «Если что-то не работает».
4. Проверьте работу
Откройте свой сайт в приватном окне и пройдитесь по нескольким страницам; посетитель, который отклонил ваш cookie-баннер, всё равно учитывается — как пинг Google без cookie. Затем нажмите «Open statistics & settings», чтобы открыть страницу вашего контейнера на signalhost.io.
В разделе «Расширенная аналитика» вкладка «Недавнее» показывает просмотры страниц за последние 30 минут, в том числе ваши. «Запустить проверку» в разделе «Устранение неполадок» внизу страницы сравнивает то, что получил ваш сервер тегинга, с тем, что Google Analytics показывает за те же 30 минут. Меньшее число в Analytics — это нормально: там не учитываются посетители, отказавшиеся от cookie. Начиная с тарифа Growth раздел «Мониторинг событий в реальном времени» показывает каждое событие в момент поступления.
Что модуль добавляет на ваш сайт
Один небольшой скрипт и один сеанс связи в час:
- Загрузчик Google Tag Manager в head каждой страницы, которая не относится к администрированию, направленный на ваш собственный адрес тегинга вместо googletagmanager.com. Он загружает оттуда ваш контейнер Tag Manager. Модуль собирает загрузчик сам из двух проверенных значений; ничто из того, что присылает SignalHost, никогда не выводится как скрипт. Эти страницы помечены тегом кеша, поэтому кеш страниц обновляется при каждом изменении загрузчика — включая страницы, закешированные до подключения.
- Раз в час, после того как ответ отправлен, модуль связывается с signalhost.io, чтобы оставаться актуальным. Он отправляет только версии модуля, Drupal и PHP, адрес вашего сайта и то, был ли найден код на главной странице: никаких данных посетителей, контента или учётных записей пользователей. Если signalhost.io недоступен, сайт сохраняет последнюю рабочую конфигурацию. Ничего из того, что модуль хранит, не попадает в экспорт конфигурации.
Каждый запрос покидает браузер в виде, который блокировщики рекламы не распознают, и ваш сервер тегинга пересылает его в Google Analytics 4 и на рекламные платформы, которые вы настроили на странице контейнера: Google Ads, Meta, TikTok и другие. Отслеживание следует за вашим cookie-баннером через Google Consent Mode; размещайте код баннера перед кодом SignalHost.
Модуль не читает формы и заказы, в том числе Drupal Commerce. Просмотры страниц приходят сами; покупка или заявка попадает в ваш контейнер, когда ваш сайт отправляет её в слой данных.
Ваш собственный домен отслеживания
Сначала ваш контейнер работает на адресе под signalhost.io. На платном тарифе кнопка «Подключить собственный домен» на странице контейнера переносит его на поддомен вашего собственного сайта, например sgtm.yoursite.com, с помощью одной DNS-записи у вашего провайдера. Такой адрес переживает списки фильтров и сохраняет cookie кликов как cookie первого лица. Когда домен заработает, модуль переключит на него ваш сайт при следующем сеансе связи, обычно в течение часа, а тег кеша обновит закешированные страницы. Вручную ничего заменять не нужно, а старый адрес до тех пор продолжает работать.
Добавить SignalHost вручную
Код можно вставить и самостоятельно. На странице контейнера найдите свой фрагмент кода в карточке «Установить на сайт» и нажмите «Копировать». Вставьте его в head каждой страницы (в Drupal — через вашу тему) сразу после скрипта вашего cookie-баннера и нажмите «Готово». «Копировать для ИИ-агента» передаёт ту же задачу агенту для программирования.
Вставляя код вручную, вы отказываетесь от того, что делает модуль: ничто не проверяет вашу главную страницу, ничто не убирает код при отключении, а когда заработает ваш собственный домен, код придётся заменить самостоятельно — из блока карточки «Обновите код на своём сайте» или из письма, сообщающего о домене. Никогда не используйте оба способа: две копии засчитывают каждое посещение дважды.
Обновления, управление и отключение
Обновления приходят через Composer, а модуль статуса обновлений Drupal сообщает о новых выпусках, как и для любого модуля с drupal.org.
Кнопка «Disconnect» на странице SignalHost один раз спрашивает: «Disconnect this site from SignalHost?» Подтверждение отзывает доступ сайта, убирает код со всех страниц и обновляет закешированные страницы. Ваш контейнер и его статистика сохраняются, и подключиться снова можно в любой момент.
На signalhost.io страница контейнера сообщает «Установлено модулем Drupal на» вашем сайте. Её кнопка «Управлять» ведёт в «Настройки › Подключённые сайты», где тоже работает «Отключить»: модуль перестанет загружать SignalHost при следующем сеансе связи, обычно в течение часа.
Удаление модуля тоже отзывает доступ сайта и стирает всё, что модуль сохранил.
Если что-то не работает
- «Could not check (your server refused a request to itself)»: ваш хостинг блокирует запросы к собственному адресу. О ваших посетителях это ничего не говорит; поищите ваш адрес тегинга в исходном коде главной страницы.
- «An older copy is on the page» или «The code is on the page twice»: копия была вставлена вручную в тему, блок или другой модуль. Удалите её; модуль добавляет актуальную, а две копии засчитывают каждое посещение дважды.
- Уведомление о том, что ваш сайт уже загружает контейнер Tag Manager собственным фрагментом Google: удалите этот фрагмент, потому что теперь контейнер загружает SignalHost, а вместе они засчитывают каждое посещение дважды. То же касается модуля Google Tag Manager (google_tag): используйте что-то одно, а не оба.
- «This site's address has changed since it was connected»: на копии, например staging, ничего не отправляется. Если переехал рабочий сайт, отключите его и подключите снова.
- «Last update» показывает давнее время: модуль выходит на связь после запросов страниц и никогда — из cron. Открытие страницы SignalHost тоже запускает сеанс связи, а «Check again» принудительно вызывает его.
- Что-то другое: напишите на hello@signalhost.io и укажите адрес сайта.
Товарные знаки
SignalHost — независимый продукт компании Algorithmo GmbH, не связанный с проектом Drupal, Google, Meta или TikTok и не одобренный ими. Google Analytics, Google Ads и Google Tag Manager — товарные знаки Google LLC; Meta — товарный знак Meta Platforms, Inc.; TikTok — товарный знак ByteDance Ltd.; Drupal — зарегистрированный товарный знак Dries Buytaert.

