IndexNow — це протокол, через який сайт сам повідомляє пошуковим системам про нові й змінені сторінки: надсилає список адрес і отримує відповідь. Одна подача розходиться між усіма учасниками протоколу, серед яких Bing. Google IndexNow не використовує, тому для нього все це не працює взагалі — про це нижче окремо.
2 серпня 2026 ми додали в проєкт скрипт, який подає сторінки нашого сайту через IndexNow. 3 вересня 2026 з'ясувалось, що весь цей час він не подав жодної сторінки. І кожна подача виглядала успішною.
Що саме подавав скрипт
Скрипт робив просту річ: відкривав /sitemap.xml, вибирав усі адреси з тегів <loc> і надсилав їх в IndexNow.
Проблема в тому, що наш /sitemap.xml — не карта сторінок, а індекс карт. Усередині в нього не адреси сторінок, а посилання на інші файли: sitemap-pages.xml, sitemap-services.xml і ще чотири. Тож у Bing при кожному запуску їхало шість адрес, і всі шість були адресами XML-файлів.
Друга половина помилки: /sitemap.xml описує лише українську версію сайту. Англійська й російська мають власні індекси, /en/sitemap.xml і /ru/sitemap.xml, і всі три оголошені окремими рядками Sitemap: у robots.txt. Скрипт знав тільки про перший.
Чому ніхто не помітив
Бо IndexNow на кожну подачу відповідав кодом 200.
Документація протоколу на indexnow.org описує 200 як «URL submitted successfully» і окремо уточнює: цей код означає лише, що пошукова система отримала ваші адреси. Помилку протокол повертає в конкретних випадках: 400 на неправильний формат запиту, 403 на недійсний ключ, 422 на адреси чужого домену або ключ, що не відповідає схемі, 429 на надто часті подачі. Є ще 202: адреси отримано, ключ ще перевіряється.
Жоден із цих кодів не перевіряє, чи подана адреса є сторінкою. XML-файл карти — цілком коректна адреса на нашому домені, ключ дійсний, формат правильний. Отже, 200. Скрипт бачив 200, писав «подано», і причин дивитись глибше не було.
Це не особливість IndexNow. Так поводиться будь-яка точка прийому, яка валідує форму запиту, а не зміст: вона каже «запит прийнято», а ми читаємо «все зроблено як треба».
Скільки адрес мало бути
Коли 3 вересня 2026 ми виправили скрипт, він уперше порахував, що насправді є на сайті. Ось розклад на той день:
| Джерело | Адрес |
|---|---|
/sitemap.xml (6 дочірніх карт) |
355 |
/en/sitemap.xml |
256 |
/ru/sitemap.xml |
256 |
| Разом унікальних | 867 |
355 адрес українського індексу складалися з 11 основних сторінок, 6 сторінок послуг, 15 робіт портфоліо, 19 статей блогу, 257 сторінок мережі послуг і 47 сторінок інструментів.
Звідси видно, що це були дві окремі помилки. Якби скрипт навчився розкривати індекс, але й далі читав лише /sitemap.xml, він подавав би 355 адрес із 867, тобто трохи більше третини сайту. Англійська й російська версії лишились би поза подачею. На практиці не було й цього: подавались тільки шість файлів.
Скільки разів скрипт запускали між 2 серпня і 3 вересня, ми не рахували. Для висновку це й не важливо: кожен запуск давав той самий результат.
Як перевірити свій сайт за 15 хвилин
Якщо у вас стоїть модуль або плагін IndexNow для OpenCart, WordPress чи іншої платформи, ми не знаємо, чи має він таку саму помилку: жоден модуль ми не тестували. Але перевірити це можна без доступу до коду.
1. Знайдіть усі карти, які ви оголошуєте.
curl -s https://ваш-сайт.com.ua/robots.txt | grep -i '^sitemap:'
Рядків може бути кілька. У нас їх три, і скрипт знав про один.
2. Для кожної карти подивіться кореневий тег.
curl -s https://ваш-сайт.com.ua/sitemap.xml | grep -o -m1 '<sitemapindex\|<urlset'
<urlset> означає звичайну карту сторінок. <sitemapindex> означає індекс: адреси в ньому ведуть на інші XML-файли, а не на сторінки. Орієнтуйтесь на тег, а не на назву файлу: назва може бути будь-якою.
3. Порахуйте реальну кількість сторінок. Для індексу треба відкрити кожну дочірню карту:
for s in $(curl -s https://ваш-сайт.com.ua/robots.txt | grep -i '^sitemap:' | awk '{print $2}' | tr -d '\r'); do
curl -s "$s" | grep -o '<loc>[^<]*' | sed 's/<loc>//'
done | sort -u > level1.txt
grep '\.xml$' level1.txt | while read child; do
curl -s "$child" | grep -o '<loc>[^<]*' | sed 's/<loc>//'
done | sort -u > pages.txt
grep -vc '\.xml$' level1.txt; wc -l < pages.txt
Перше число — сторінки, що лежали прямо в картах верхнього рівня, друге — сторінки з дочірніх карт. Якщо дочірні карти самі є індексами, повторіть крок ще раз для них.
4. Порівняйте з тим, що подає модуль. Відкрийте журнал модуля або статистику подач у розділі IndexNow в Bing Webmaster Tools. Якщо серед поданих адрес є такі, що закінчуються на .xml, — це саме наша помилка. Якщо подано помітно менше, ніж у кроці 3, модуль, імовірно, не бачить частини карт, найчастіше мовних.
5. Не шукайте цього в Google. Search Console про подачі IndexNow нічого не покаже, бо Google протокол не використовує. Для Google карти сайту подаються там окремо.
Якщо самі карти викликають сумнів — дублі, порожній файл, одна мова замість двох, — про це є окремий розбір карт сайту. Перевірити robots.txt і карту онлайн можна нашим безкоштовним інструментом.
Що ми змінили
Скрипт тепер відрізняє індекс від звичайної карти за кореневим тегом <sitemapindex> і розкриває індекси рекурсивно, не глибше трьох рівнів, щоб кільцеве посилання між картами не зациклило обхід. Джерел стало три: українська, англійська й російська карта.
Після виправлення 3 вересня 2026 скрипт подав 867 адрес із 867. Подача йде партіями по 500 адрес, тож вийшло дві партії, і обидві отримали 200. Цього разу 200 означав те, що ми хотіли, але знаємо ми це не з коду відповіді, а з того, що перед подачею перелічили, які саме адреси в ній лежать.
Того ж дня ми перейшли на ключ IndexNow, виданий самим Bing Webmaster Tools, щоб статистика подач у панелі Bing прив'язувалась саме до нього. Попередній, згенерований нами ключ лишили на сайті: подачі, зроблені раніше того дня, Bing міг перевіряти ще якийсь час, і без файлу ключа вони не пройшли б перевірку власності.
Чого це не виправило
Подача через IndexNow не означає індексації. Протокол лише повідомляє пошуковику, що адреса існує або змінилась, а брати її в індекс чи ні, вирішує він сам.
Ефекту від виправлення ми не міряли. Даних Bing Webmaster Tools до і після в нас немає, тож стверджувати, що сторінки після 3 вересня 2026 потрапили в Bing швидше, ми не можемо.
На Google це не вплинуло ніяк. Для нього індексація великого сайту — це карти в Search Console, внутрішні посилання і те, на що робот витрачає обхід. Про останнє ми писали в розборі куди витрачається обхід сайту, а для каталогів на тисячі позицій є окрема послуга з індексації великого каталогу.
Головне, що ми винесли: відповідь «прийнято» від будь-якої точки прийому перевіряє форму запиту, а не те, що в ньому лежить. Щоб знати, що подано, треба дивитись на сам перелік адрес.




