Ошибка dfp is required появляется в консоли браузера или в отчётах рекламного сервера, когда скрипт пытается вызвать объект googletag или рекламный слот DFP до того, как библиотека Google Publisher Tag (GPT) загружена и инициализирована. Типичный симптом: рекламные места на странице остаются пустыми, а в консоли разработчика видно сообщение об отсутствующем объекте dfp или googletag.
Проблема почти всегда связана с порядком подключения скриптов, с ошибкой в имени переменной или с тем, что код вызова рекламы выполняется вне обёртки googletag.cmd.push(). Ниже разберём, как локализовать причину и исправить конфигурацию без риска сломать остальную вёрстку страницы.
Что означает сообщение «dfp is required»
Аббревиатура DFP расшифровывается как DoubleClick for Publishers — старое название платформы, которая сейчас называется Google Ad Manager. Несмотря на ребрендинг, в коде библиотек и плагинов имя «dfp» встречается повсеместно: в переменных, путях к скриптам, настройках плагинов для CMS.
Когда скрипт сообщает, что «dfp is required», он фактически говорит: «мне нужен объект рекламной библиотеки, но я его не нашёл». Возможные варианты: библиотека GPT не подключена на странице вовсе, она загружается асинхронно и ещё не готова, либо плагин ожидает глобальную переменную с конкретным именем, а она названа иначе.
Важно понимать: это не ошибка со стороны серверов Google. Ошибка возникает на стороне вашего сайта — в коде страницы или в настройках подключения рекламных скриптов, поэтому и исправляется она локально, без обращения в поддержку.
Основные причины появления ошибки
Прежде чем что-то менять, стоит определить, какой из сценариев соответствует вашему случаю. Ниже перечислены наиболее распространённые причины.
- 📌 Библиотека
gpt.jsне подключена в<head>страницы или подключена с ошибкой в URL. - ⏱️ Код вызова рекламного слота выполняется раньше, чем загрузился GPT, — нарушен порядок скриптов.
- 🔌 Блокировщик рекламы (AdBlock, uBlock и подобные) режет загрузку
gpt.js, и объектgoogletagне создаётся. - 🧩 Плагин CMS или сторонний модуль ожидает переменную с именем
dfp, которой нет в глобальной области видимости. - ✏️ Опечатка в идентификаторе рекламного слота или в пути сети Ad Manager.
Если сайт работает через плагин к WordPress или другой CMS, причина чаще всего кроется в настройках самого плагина: он может требовать заполнения обязательного поля с кодом сети, и при пустом значении выводит именно такое сообщение.
Диагностика через консоль браузера
Первый шаг — открыть инструменты разработчика (клавиша F12 в большинстве браузеров) и перейти на вкладку Console. Перезагрузите страницу и посмотрите, какие сообщения появляются рядом с ошибкой: часто рядом видны сетевые ошибки загрузки скриптов или предупреждения самого GPT.
Далее полезно проверить, загрузилась ли библиотека вообще. Введите в консоли команду:
typeof googletag
Если ответ — "undefined", значит, GPT на странице отсутствует: проверяйте подключение скрипта и блокировщики рекламы. Если ответ — "object", библиотека на месте, и проблема, скорее всего, в порядке вызовов или в настройках плагина.
Дополнительно проверьте страницу в режиме инкогнито с отключёнными расширениями. Если ошибка исчезает — виноват блокировщик или иное расширение, а не код сайта.
Пошаговое исправление конфигурации
Порядок действий зависит от результата диагностики, но универсальная последовательность выглядит так: сначала убеждаемся, что библиотека подключена корректно, затем исправляем порядок вызовов, и только потом разбираемся с настройками плагинов.
☑️ Проверка и исправление ошибки dfp is required
Базовый каркас корректного подключения GPT выглядит следующим образом:
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
// определение слотов и настроек
});
</script>
Ключевой момент — строка window.googletag = window.googletag || {cmd: []}. Она создаёт заглушку объекта до загрузки библиотеки, и все команды, помещённые в массив cmd, выполнятся автоматически, когда GPT будет готов. Если этой строки нет, любой ранний вызов googletag даст ошибку.
⚠️ Внимание: не переносите подключениеgpt.jsв конец страницы и не добавляйте к нему атрибутdeferбез необходимости — официальная рекомендация Google предполагает асинхронную загрузку именно через атрибутasyncв секции<head>. Иное размещение может нарушить работу аукциона и снизить заполняемость рекламных мест.
Ошибка в плагинах CMS и конструкторах
Если сайт собран на WordPress, Joomla или конструкторе, сообщение «dfp is required» нередко выводит сам рекламный плагин. Обычно это означает, что в его настройках не заполнено обязательное поле — например, идентификатор сети (network code) из кабинета Google Ad Manager.
Откройте настройки плагина и сверьте каждое поле с данными из кабинета Ad Manager: код сети, пути рекламных блоков (ad unit paths), размеры. Точные названия полей зависят от конкретного плагина, поэтому ориентируйтесь на его документацию. После сохранения настроек обязательно сбросьте кэш сайта и, если используется CDN, кэш на его стороне.
Если плагин давно не обновлялся, проверьте его совместимость с текущей версией CMS — устаревшие модули иногда обращаются к старым URL библиотек, которые уже не обслуживаются.
Сравнение типовых сценариев и решений
| Сценарий | Признак | Решение |
|---|---|---|
| GPT не подключён | typeof googletag → undefined | Добавить подключение gpt.js в head |
| Ранний вызов слота | Ошибка при загрузке, затем реклама появляется после повторного вызова | Обернуть вызовы в googletag.cmd.push() |
| Блокировщик рекламы | Ошибка пропадает в инкогнито без расширений | Проверять сайт без блокировщика; это среда пользователя, а не дефект кода |
| Пустое поле в плагине | Сообщение выводит сам плагин в админке или на странице | Заполнить код сети и пути блоков из Ad Manager |
| Опечатка в ad unit path | Слот создаётся, но не заполняется, в консоли предупреждения GPT | Сверить путь с кабинетом Ad Manager посимвольно |
Когда ошибка появляется у посетителей, а не у вас
Отдельная ситуация — сайт у вас работает корректно, но часть пользователей сообщает о пустых рекламных блоках или вы видите ошибки в системах мониторинга. Здесь наиболее вероятны две причины: блокировщики рекламы у посетителей и медленная сеть, при которой асинхронная загрузка GPT завершается слишком поздно.
С блокировщиками бороться кодом не нужно — это осознанный выбор пользователя. А вот устойчивость к медленной загрузке обеспечивается как раз правильным паттерном с googletag.cmd: команды ставятся в очередь и гарантированно выполнятся, когда библиотека догрузится, какой бы ни была задержка.
Дополнительно
отладка через Google Publisher Console:Добавьте к URL страницы параметр ?googfc — поверх страницы откроется панель Google Publisher Console. Она показывает все определённые слоты, их пути, размеры, статус запроса объявлений и ошибки конфигурации. Это официальный инструмент диагностики GPT, который помогает увидеть, какие слоты реально зарегистрированы на странице и почему конкретный из них не заполняется.
⚠️ Внимание: не пытайтесь «заглушить» ошибку, оборачивая вызовы в пустой try/catch без исправления причины. Сообщение исчезнет из консоли, но рекламные слоты так и останутся пустыми, а вы потеряете возможность заметить реальные сбои конфигурации в будущем.
Проверка результата после исправлений
После внесения правок выполните контрольную проверку в чистом окружении: режим инкогнито, отключённые расширения, сброшенный кэш. Откройте консоль и убедитесь, что сообщение dfp is required больше не появляется, а команда googletag.pubads().getSlots().length возвращает число, соответствующее количеству рекламных мест на странице.
Затем проверьте фактическое отображение объявлений. Пустой слот без ошибок в консоли — уже другая проблема: она связана с наполнением, таргетингом или настройками в кабинете Ad Manager, а не с загрузкой библиотеки.
Частые вопросы
Ошибка «dfp is required» — это вирус или проблема безопасности?
Нет. Это техническое сообщение о том, что скрипт не нашёл объект рекламной библиотеки Google. Оно не указывает на заражение сайта. Однако если ошибка появилась внезапно без каких-либо правок с вашей стороны, стоит проверить, не изменял ли кто-то шаблоны сайта и не появились ли посторонние скрипты.
Почему ошибка есть только у части посетителей?
Наиболее вероятные причины — блокировщики рекламы и расширения браузера у этих пользователей, которые не дают загрузиться gpt.js. Также возможны сетевые ограничения: корпоративные фильтры и некоторые провайдеры блокируют рекламные домены.
Нужно ли обращаться в поддержку Google?
Как правило, нет: ошибка возникает на стороне вашего сайта и исправляется правкой кода или настроек плагина. В поддержку Google Ad Manager имеет смысл обращаться, только если слоты корректно определены, запросы уходят, но объявления не возвращаются без видимых причин.
Можно ли использовать старый код с синхронной загрузкой GPT?
Синхронный способ подключения считается устаревшим: он блокирует отрисовку страницы и ухудшает скорость загрузки. Рекомендуемый подход — асинхронная загрузка gpt.js с заглушкой window.googletag и очередью команд, как показано в примере выше.
Ошибка появилась после смены темы WordPress. Что делать?
Смена темы могла удалить подключение gpt.js из шапки сайта или изменить порядок скриптов. Проверьте исходный код страницы: найдите строку с gpt.js и убедитесь, что она расположена в head и загружается раньше вызовов слотов. Если реклама вставлялась через функции старой темы, перенесите соответствующий код в новую тему или в плагин.