Моят сайт: уиджети на вашия собствен сайт
Раздел „Моят сайт“ е за тези, които вече имат сайт. Не е нужно да се местите на нашата витрина и да прехвърляте нещо: вмъквате на съществуващия сайт един ред код и след това включвате нужните продукти с превключватели в акаунта.
Отваря се: Админ панел → Маркетинг → „Моят сайт“ (admin.cenaly.com).
Работи на всяка платформа, където може да се вмъкне <script>: WordPress, Tilda, Wix, Shopify, Webflow, Bitrix, InSales, OpenCart, сайт по поръчка, целева страница от конструктор.
Адрес на сайта и код за инсталиране#
Блокът „🌐 Вашият сайт“ в горната част на раздела води през три стъпки: адрес → код на сайта → проверка, а главният бутон винаги предлага следващата незавършена стъпка. Първата е адресът на вашия сайт (например example.com): по него проверяваме инсталацията и изграждаме правилните връзки в уиджетите.
Втората е кодът за инсталиране. Това е един ред:
<script src="https://cdn.cenaly.com/site/v1.js" data-domain="ВАШИЯТ-ДОМЕЙН" async></script>
Вмъкнете го веднъж — в <head> или преди </body>. Повече не е нужно да се връщате към кода на сайта: съставът на уиджетите се задава с превключватели в акаунта, а не с тагове на страницата. Включите ли уиджет — той се появява на сайта в рамките на няколко минути, изключите ли го — изчезва.
Ако преди сте вмъквали отделни тагове на уиджети ръчно, те ще продължат да работят: единният зареждащ скрипт ги вижда и не стартира уиджета втори път.
Инсталиране на популярни платформи#
В прозореца „Код за инсталиране“ има раздел за всяка платформа — със същите стъпки като по-долу.
Всяка платформа тук има свой котва, и връзката може да се изпрати на този, който редактира сайта, вместо да се преразказва: #html, #google-tag-manager, #wordpress, #tilda, #wix, #shopify, #webflow, #squarespace — например /ru/docs/site-widgets#tilda.
Общо за всички платформи, за да не се повтаря във всяка точка:
- тагът се поставя веднъж за целия сайт — в общия шаблон, а не на отделна страница;
- при конструкторите (Tilda, Wix, Webflow, Squarespace) промяната живее в редактора, докато сайтът не бъде публикуван отново;
- проверява се живият сайт, а не прегледът в редактора;
- ако пред сайта има кеш или CDN, изчистете го: и на посетителя, и на нашата проверка може да се подава запазено копие на страницата без тага;
- какво проверката за инсталиране няма да види — отделен анализ по-долу.
HTML#
Всеки сайт, до чийто шаблон имате достъп: собственоръчно написан, целева страница, статичен генератор.
- Копирайте реда с кода: Маркетинг → „Моят сайт“.
- Поставете го в
<head>или преди</body>на общия шаблон на сайта. - Няма общ шаблон (страниците са отделни файлове) — поставете го на всяка страница.
- Качете промените на сървъра, отворете сайта и натиснете „Провери инсталирането“.
Google Tag Manager#
Подходящо, когато няма достъп до шаблона, а GTM вече е инсталиран на сайта.
- Tags → New → тип „Custom HTML“.
- Поставете реда с кода, тригер — „All Pages“, запазете.
- Натиснете „Publish“: докато версията на контейнера не е публикувана, на живия сайт тагът липсва.
⚠️ Таг, вдигнат от GTM, нашата „Проверка за инсталиране“ никога няма да види — и това не е грешка, а следствие от метода: „Какво проверката за инсталиране не вижда“. Отворете сайта и гледайте с очите си.
WordPress#
- Конзола на WordPress (
вашият-сайт/wp-admin), нужни са права на администратор. - Надежден път: Plugins → Add New → всеки плъгин за вмъкване на код в header/footer → в настройките му поставете реда в полето Header → запазете.
- Път без плъгин: Appearance → Theme File Editor →
header.php(преди затварящия</head>) илиfooter.php(преди</body>) → „Update File“. - Отворете сайта и натиснете „Провери инсталирането“.
⚠️ Промяната във файловете на родителската тема се губи при нейното обновяване — за това предупреждава и документацията на WordPress. Плъгин за вмъкване на код или дъщерна тема ще преживеят обновяването. Имате кеширащ плъгин (W3 Total Cache, WP Rocket и подобни) — изчистете кеша, иначе проверката ще види старо копие на страницата.
💡 Не е нужен отделен плъгин за уиджетите: те се свързват с един таг. Плъгинът Cenaly Consent е за друго — той поставя вместо вас тага само на cookie-банера (вж. Cookies и съгласие).
Tilda#
- В списъка с проекти — „Настройки на сайта“ на нужния сайт (настройки на проекта, а не на страницата).
- Раздел „Още“ (при част от акаунтите е надписан „Вмъкване на код“) → поле „HTML код за вмъкване вътре в head“.
- Поставете реда и запазете.
- Публикувайте отново всички страници на проекта — без това кодът остава само в редактора.
- Отворете живия сайт и натиснете „Провери инсталирането“.
💡 Нужен е таг само на една страница — същото поле има в „Настройки на страницата“ → „Допълнително“; тогава трябва да публикувате отново тази страница.
Wix#
- Сайтът трябва да е публикуван, а домейнът — свързан: това е условие на самия Wix за неговия код.
- Settings (Настройки) → Development & integrations (Разработка и интеграции) → Custom Code.
- „+ Add Custom Code“ → поставете реда, дайте на фрагмента разбираемо име.
- Приложете към всички страници (All pages), зареждане веднъж, място на вмъкване — Head. Запазете.
- Натиснете Publish, отворете живия сайт и натиснете „Провери инсталирането“.
⚠️ Фрагментите с код в Wix са обвързани с домейна: назначите ли на сайта друг домейн — фрагментите се изтриват, тагът ще трябва да се постави наново.
Shopify#
- Админ панел на Shopify → Онлайн магазин (Online Store) → Теми.
- При нужната тема „…“ → Duplicate: копието на темата е вашият път назад.
- Там „…“ → Редактиране на код (Edit code).
- Отляво папка Layout → файл
theme.liquid→ поставете реда преди затварящия</head>(или преди</body>) → Save. - Отворете витрината на магазина и натиснете „Провери инсталирането“.
⚠️ Промяната принадлежи на темата, а не на магазина: смените ли или пресъздадете ли темата — поставете тага в новата, иначе уиджетите ще изчезнат заедно със старата. Страниците за оформяне на поръчка в Shopify са затворени за произволни скриптове на темата — уиджетите са предвидени за витрината.
Webflow#
- Site settings на нужния проект → раздел Custom code.
- Поле Head code → поставете реда и запазете. В това поле се пише само самият скрипт: тагове
html,head,bodyне е нужно да се добавят. - Натиснете Publish — в редактора и прегледа вашият код не работи.
- Отворете публикувания сайт и натиснете „Провери инсталирането“.
⚠️ Полетата за собствен код в настройките на сайта Webflow се отварят на платен Site plan. Нужен е уиджет само на една страница — страницата има свои полета за код в настройките си.
Squarespace#
- Панел на сайта → Website → Website Tools → Code Injection.
- Поле Header (попада в
<head>на всяка страница) → поставете реда → Save. - Отворете живия сайт и натиснете „Провери инсталирането“.
⚠️ Панелът Code Injection е достъпен на плановете Core, Plus, Advanced и част от легаси плановете на Squarespace. Блокът с код на страница (Code Block) не е заместител: той поставя кода вътре в една страница, а уиджетите са нужни на целия сайт.
Стъпките са сверени с официалната справка на платформите. Платформата е преименувала пункт от менюто — вярвайте на нейната справка, а не на нас, и ни пишете: ще поправим.
Дванадесет уиджета#
Всеки уиджет е отделна карта с превключвател и зъбно колело за настройки. Данните, които уиджетите събират, попадат в обичайните раздели на акаунта — не е нужно да създавате отделна „кутия за входящи за сайта“.
| Уиджет | Какво вижда посетителят | Къде попадат данните | Документация |
|---|---|---|---|
| 🍪 Бисквитки и съгласие | Банер за съгласие с категории и екран за настройки | Дневник на съгласията, декларация за бисквитки | Бисквитки и съгласие |
| 💬 Чат: ИИ асистент и оператори | Балонче за чат на страницата | Раздел „Гости“ в „Работен чат“ — заедно с WhatsApp, Telegram, email, Messenger/Instagram | Чат с гости |
| 💡 Изскачащи прозорци и форми | Промо, оферти при напускане, събиране на email, таймери | Кампании и тяхната статистика | Изскачащи прозорци на своя сайт |
| 📅 Резервация на маса | Бутон „Резервирайте маса“ | Раздел „Маси“ — резервации и схема на залата | Резервации на маси |
| 🗓️ Онлайн запис | Бутон „Запишете се“: услуга → майстор → час | Раздел „Записи“ | Дневник на записите |
| 🛒 Онлайн поръчка | Бутон „Поръчайте“, кошница и оформление върху вашия сайт | Раздел „Поръчки“ | Онлайн поръчка на своя сайт |
| 📚 Център за поддръжка | Бутон „?“ с публикувани статии за помощ | Статиите — в „Статии и страници“ (група „Помощ“), аналитиката на помощта — в „База знания“ | Център за поддръжка |
| ⚖️ Правни документи | Връзки или текст на политиката за поверителност, условия и т.н. | Страници на нашия хостинг, преиздаването обновява сайта сам; настройва се директно в панела на уиджета, без съветник | Правни документи |
| 📞 Обаждане от сайта | Бутон „Обадете се“ — разговор директно от браузъра, без набиране на номер | Раздел „Обаждания“: запис и анализ като при обикновено обаждане | Обаждане от сайта |
| ☎️ Обратно обаждане | Форма „Обадете ми се“ с избор на удобно време | Опашка за обратно обаждане: системата сама набира мениджъра и госта; заявките — в „Заявки“ и в раздела „Обратни обаждания“ на раздел „Клиенти“ | Обратно обаждане |
| ➕ Мултибутон | Един плаващ бутон, зад който са всички канали за връзка наведнъж | Там, където води избраният канал; в акаунта — статистика на кликовете по канали | Мултибутон |
| 📈 Жива витрина | Плаки с числа на поръчки, резервации и записи за период, средна оценка | Показва обезличени агрегати от вашите събития и отзиви | Жива витрина |
Редът на зареждане не е случаен: банерът за бисквитки се зарежда първи сред нашите уиджети. Единият асинхронен зареждащ механизъм първо чете настройките и не може да изпревари аналитиката, вече стартирана от сайта. Ако е нужно блокиране преди стартирането на тракерите, инсталирайте отделния таг consent/v1.js първи в <head>, без async и defer, както е описано в статията за съгласието. Мултибутонът идва след агрегираните уиджети, а „Жива витрина“ — последна: нейните плаки отчитат бутоните в същия ъгъл.
Банерът за бисквитки на cenaly.ru има ограничения: дневникът на съгласията и CSV все още не се събират, скенерът за бисквитки не е достъпен, декларацията се води ръчно. При недостъпна конфигурация текущата версия премахва блокирането на тракерите; след инсталация проверявайте банера и действителните заявки на страницата. Пълните условия — в Бисквитки и съгласие.
Центърът за поддръжка показва публикуваните статии, които трябва да подготвите в раздел „Статии и страници“ или да публикувате от базата знания. Бутонът сам не създава статии. В аналитиката на помощта събитията на страницата вътре в този панел се отнасят към източник „сайт“; източник „уиджет“ обозначава раздела за помощ в чата.
Правните документи първо трябва да се публикуват на нашия хостинг. Уиджетът показва публикуваните версии като връзки, в прозорец или като текст на страницата; преиздаването в акаунта ги обновява. Това не е автоматично проследяване на промени в законодателството.
Мултибутонът не е просто списък с връзки: той има облаче-покана („Имате въпрос?“), условия за показване (на кои страници, след колко секунди, само на телефон или навсякъде), шаблон за първото съобщение за месинджъри и собствена статистика на кликовете по канали.
„Жива витрина“ показва социално доказателство върху вашите собствени данни — поръчки, резервации и записи — и го прави честно: в плаката няма имена и телефони, събитията са агрегирани, а остарелите спират да се показват по календара на заведението (заведение, затворено вчера, не „продава“ вчерашните поръчки).
При картата „Изскачащи прозорци и форми“ до превключвателя и зъбното колело стои бутон „✨ Създай от шаблон“: той отваря същия прозорец с настройки на уиджета, но направо с галерия от готови сценарии — и не запазва нищо, докато не натиснете „Готово“.
Панелът „Правни документи“ вече не изпраща към петстъпков съветник: държава, набор от документи, въпроси за вашата дейност, реквизити и език са на един екран, автопопълването и прегледът са свити, най-отдолу — брояч „Публикувай документи: N“. Опция, която противоречи на вече дадените отговори, е заключена с обяснение защо точно.
Отворените прозорци на хъба живеят в адреса на страницата: зъбното колело на уиджета записва ?widget=<уиджет>, прозорецът с кода за инсталация — ?panel=install. Това означава, че връзка към настройката на конкретен уиджет може да се изпрати на колега и тя ще преживее F5 и бутона „назад“.
На един уиджет превключвателят не е достатъчен — нужно е още съдържание:
- Онлайн запис ще се появи на сайта, когато в менюто има поне една позиция с тип „Услуга“ и е включено резервиране (същият превключвател като при резервацията на маса);
- Центърът за поддръжка се включва с превключвателя веднага, но без публикувани статии ще отвори празна страница за помощ — в настройките на уиджета се вижда колко статии са публикувани.
Ограничения при резервациите. В момента уиджетът за резервация на маса преобразува избраните дата и час в часовата зона на браузъра на госта. За посетител от друга зона часът в дневника може да се различава от очакваното време на заведението — проверявайте го при потвърждение. Съобщението за изпратена заявка също не винаги означава, че сървърът вече е потвърдил резервацията. Ако онлайн записът съобщава за забавяне на потвърждението, първо проверете дневника на записите: нов опит може да създаде дубликат.
Проверка на изключването. След изключване на уиджета проверете сайта и отворете отново настройките след обновяване на данните. В текущата версия превключвателят може да изгасне локално, но предишното включване да се запази на сървъра. При спешно спиране на отделен уиджет изтрийте неговия отделен таг или се обърнете към поддръжката; изтриването на общия таг ще спре наведнъж целия комплект, който той е свързвал.
Над бутоните на всяка карта има мини-статистика за 7 дни: показвания, отваряния и трето число според смисъла на уиджета (заявки, поръчки, резервации, записи, разговори, диалози, кликове). „—“ означава, че данни още няма изобщо, „0“ — телеметрия има, а събития не е имало; „Подробнее →“ води към таблото „Уиджети на сайта“.
В прозореца с настройки на онлайн поръчката има още един бутон за чужд сайт — „🔔 Уведомете ме при наличност“: избирате продукт и вариант от своя каталог, маркирате бутон на страницата на изчерпан продукт, а гостът оставя имейл, потвърждава го по връзка и получава едно писмо, когато продуктът се върне в наличност. Чужд каталог не четем и не вземаме наличности от чужда страница — продуктът се свързва ръчно. Подробнее — в статията Онлайн поръчка на своя сайт.
Форми, които вече са на вашия сайт#
Блокът „📝 Форми, които вече са на вашия сайт“ под мрежата от карти — за случая „форма за заявка на сайта вече има и никой няма да я сменя“. Ние не я подменяме и не я задържаме: формата се изпраща към вашия бекенд, както и преди, а копие от заявката попада в кабинета.
Правило — това е CSS селектор на формата, адреси на полетата „име / телефон / имейл“ (стойност може да бъде и просто името на полето, например phone, и селектор input[name="tel"]), незадължителни маски на страници и превключвател. Правила за локация — до 10, по едно правило на форма. Правило без селектор на формата или без телефон, или имейл не може да се включи — няма какво да събере. Всеки ред има бутон „Провери“: сървърът чете страницата и отговаря дали формата е намерена, кои полета от правилото има в нея и какви имена на полета изобщо има тя.
Какво точно отива. Точно три полета — име, телефон, имейл — плюс адреса на страницата без параметри и анкер. Въведеното преди натискане на „Изпрати“ не се чете, не добавяме собствена проверка и закъснения, а форма, която не е преминала собствената проверка на браузъра, не създава заявка. Сървърът потиска повторението на същата форма със същия контакт в рамките на 10 минути; при едновременни изпращания или срив при запис на маркера е възможен дубликат. Формите на нашите собствени уиджети не се прихващат.
Прихващането изпраща копие от заявката без да чака отговор от сървъра. При прекъсване на мрежата или блокиране на заявката от браузъра копието може да не стигне: опашка за доставяне след възстановяване на връзката в момента няма. Повторение със същия контакт на същата страница също се потиска до нейното презареждане. Отбелязването за изпращане означава опит за прихващане, а получаването проверявайте в инбокса.
Къде да търсите. Раздел „Заявки“ и раздел „Заявки“ на контакт центъра — групирани под „Форми на сайта: <надпис на правилото>“. Всяка такава заявка има честна бележка: виждаме натискането на „Изпрати“, а не съдбата на данните във вашия бекенд.
⚠️ Бутонът „Провери“ анализира HTML без браузър: форма, която се рисува от JavaScript, няма да види — а прихващането в браузъра на госта ще я види. Панелът казва това направо.
Връзки и QR за действия#
Блокът „🔗 Връзки и QR за действия“ под мрежата от карти прави връзка, която отваря на вашия сайт едно конкретно действие: https://ваш-сайт/#cenaly=book — форма за резервация, #cenaly=appointment:<услуга> — час директно за услуга, #cenaly=order:<товар> — карта на продукт, а също чат, обратно обаждане, помощ, документ (legal:<тип>), ветрило от мултибутони и обръщение към поддръжката (#cenaly=support — раздел „Обръщения“ на чата, #cenaly=support:<категория> — директно форма с тази категория). Такава връзка обикновено се печата като QR код: на масата, в касовата бележка, на опаковката, в офлайн реклама.
Как да я съберете: изберете действие, при желание — конкретен обект (услуга или позиция от публикуваното меню, публикуван документ) и „къде я поставяте“ — от това зависят UTM маркерите за вашата аналитика (utm_source=qr&utm_medium=<място>&utm_campaign=<действие>; ние не ги четем). На изхода — връзка с бутон „Копирай“ и QR код, който се изтегля в PNG и SVG. Базата на връзката е адресът на вашия сайт, а ако не е указан — нашата витрина. На картата на всеки уиджет има кратък бутон „🔗 Връзка“ с вече избраното действие.
Защо анкер #, а не параметър ?: чуждите CMS, кеш плъгини и CDN режат непознати параметри и променят каноничния адрес, а анкера браузърът не го изпраща към сървъра — той гарантирано стига до нашия код. Изпълнява го единният таг: той чете анкера веднъж при зареждане, премахва го от адреса и отваря нужния уиджет, когато той се вдигне. Отделните тагове на уиджетите не четат анкера.
Блокът предупреждава преди печатане на тиража: уиджетът за действие е изключен, код за установяване на сайта при последната проверка не е намерен. Връзката не включва изключеното и не подменя липсващ документ — в такъв случай тя просто не прави нищо: на чужд сайт това е по-добре от грешка. Изключението е едно и е направено нарочно: връзка към обръщение при изключени обръщения отваря обикновен чат — гостът все пак може да пише, а блокът предварително предупреждава, че обръщенията са изключени. Същата връзка работи и на нашата витрина на заведението, включително помощ, документи и мултибутон — стикерът се печата веднъж, а сайтът може да се смени.
Уиджет за онлайн запис в детайли#
Настройки — карта „Онлайн запис“ → зъбно колело: цвят на бутона, неговият текст, ъгъл на екрана и език. Там, под настройките, се намира и готов ред с код отделно за този уиджет — в случай че поставяте само него.
Език. По подразбиране — авто: уиджетът говори на езика на страницата, на която стои, и познава 45 езика. Речникът се зарежда само този, който е потрябвал, затова това не влияе на скоростта на сайта. В списъка можете да фиксирате твърдо един език — например ако сайтът е двуезичен, а искате да приемате часове на един език.
Връзки към конкретна услуга или майстор. Към тага на уиджета можете да допишете атрибути — гостът ще попадне направо на нужната стъпка:
| Атрибут | Какво прави |
|---|---|
data-service="id услуги" |
услугата е избрана предварително — бутонът „Запази час“ до описанието на услугата на вашия сайт. Идентификаторът се вижда до позицията в раздел „Меню“ |
data-master="id мастера" |
майсторът е избран предварително — за страницата на конкретен специалист; идентификаторът на майстора съвпада с идентификатора на служителя |
data-open="true" |
панелът за запис се отваря сам, без натискане на бутон — за отделна страница „Запази час“ |
Остарял идентификатор (услугата е преименувана, майсторът е напуснал) не чупи уиджета: той тихо ще покаже обичайния избор от първата стъпка.
По-малко стъпки до запис:
- единствена услуга или единствен подходящ майстор — излишният екран не се показва;
- чипът „⚡ Най-близко: днес 17:30“ записва с едно докосване, а календарът сам се отваря на първия ден със свободно време;
- име, телефон и поща се запомнят на устройството на госта: при повторен запис полетата вече са попълнени, а връзката „Не съм аз“ ги изтрива;
- на телефон панелът се отваря на цял екран, бутонът за запис не се крие под клавиатурата;
- уиджетът може да се използва с клавиатура, чете се коректно от програма за четене на екран.
Поща. Полето e-mail не е задължително; оставил гостът адрес — ще получи писмо с детайлите на посещението и връзка „Управление на записа“, по която сам ще пренасочи или отмени посещението. Подробности — в раздел Журнал на записите.
Какво даде уиджетът. В журнала на записите бутонът „🌐 Уиджет на сайта“ показва фунията за 7, 30 или 90 дни: колко пъти бутонът е бил видян, колко гости са отворили панела, стигнали са до контактите и са се записали, колко записа са загубени заради заето време. Самите записи от сайта имат бадж „От сайта“.
Проверка на инсталацията#
Бутонът „Провери инсталацията“ отваря вашия сайт и чете изходния HTML на страницата. В отговора:
- „Кодът на уиджетите е намерен на сайта“ — единният таг е на мястото си;
- „Намерени са само отделни тагове на уиджети“ — работят стари единични вставки, няма единен таг;
- „Кодът на сайта принадлежи на друг обект“ — в тага има чужд
data-domain(честа грешка при няколко обекта); - „На тази страница няма код на уиджети“ — тагът не се вижда.
⚠️ Проверката чете изходния HTML на една страница. Ако тагът се вмъква вече в браузъра от Google Tag Manager или друг скрипт, проверката няма да го види — това не е грешка. Какво още остава извън обхвата на метода, е събрано по-долу в „Какво проверката на инсталацията не вижда“.
Веднъж седмично същата проверка се повтаря сама — за обекти, за които е указан адрес на сайт, включен е поне един уиджет и предишната проверка е намирала тага. Тагът умира тихо — сайтът е преминал към нова тема, изпълнителят е качил верстка без вставката, кеш плъгин е изхвърлил „излишния“ скрипт, — и преди това се забелязваше само по това, че заявките са свършили. Сега преходът „тагът беше → таг няма“ идва като карта в работния чат (не по-често от веднъж седмично на обект) и като червена трета стъпка в блока „Вашият сайт“. Сайт, който не се е отворил (таймаут, сървърна грешка), не се счита за повреда — ще проверим следващата седмица; таг, вмъкнат чрез Google Tag Manager, проверката никога не вижда, затова и няма да има фалшива тревога за него.
Същият анализ е достъпен публично, без вход в акаунта — страницата „Проверка на сайта“: въведете адрес и тя ще прочете HTML на страницата и ще покаже броячите и пикселите поименно, има ли банер за съгласие (наш, чужд или никакъв) и вижда ли се нашият таг с включените уиджети. С нея е удобно да проверите сайта преди свързването и да дадете линка на разработчик или клиент.
Под картите на уиджетите в раздела има още два блока: „Витрина на собствен код (Headless)“ — данни, API и уебхукове за случая, когато сайтът се пише от вашия разработчик и нашите уиджети не са му нужни, — и „Напреднало: отделен таг за всеки уиджет“ с готови единични тагове. Тоест единичен таг може не само да се „пренесе от миналото“, но и да се вземе оттук.
Какво проверката на инсталацията не вижда#
Методът на проверката е прост и честен: една заявка за изходния HTML на един адрес, без браузър. Четем това, което е върнал сървърът, и търсим в разметката <script src="…"> с нашите пътища. Оттук идва целият списък с това, което тя не може, — и това не е повреда, а граница на метода.
| Случай | Какво ще каже проверката | Как да се убедите в действителност |
|---|---|---|
| Тагът се вмъква от Google Tag Manager или друг скрипт вече в браузъра | „няма код“ | Отворете сайта: уиджетът или го има, или го няма. В инструментите за разработчици раздел Network, филтър site/v1.js |
| Друга страница на сайта: тагът е в шаблона на началната, но не и на страниците на блога или каталога | отговор за адреса, който е в полето „адрес на сайта“ | Въведете в полето пълния адрес на вътрешна страница и натиснете проверката отново |
| SPA (React, Vue и подобни с клиентски рендер): разметката се сглобява от JS вече в браузъра | „няма код“, дори когато уиджетът на сайта работи | Гледайте на място. Тагът е по-надеждно да се постави в сървърния шаблон или index.html, а не вътре в приложението |
| Преходи вътре в SPA без презареждане на страницата | нищо: проверката не кликва по сайта и вижда само първия отговор на сървъра | Минаете през разделите сами — уиджетът живее на страницата и преживява такива преходи |
Сайтът отговаря само по http://, затворен е с логин, IP филтър или антибот защита |
грешка при проверката | Проверката ходи само по https и без авторизация; гледайте такъв сайт сами |
| Много голяма страница | четат се първите 512 КБ разметка | Тагът в шаблона се поставя в <head> — там той попада в началото на страницата |
| Повече от три пренасочвания подред | грешка | Въведете крайния адрес |
| Кешът на платформата или CDN връща запазено копие без тага | „няма код“ | Изчистете кеша и опитайте отново |
| Тагът е поставен, но уиджетът не работи (не е платен, превключвателят е изключен, задействали са се условия за показване) | „кодът е намерен“ | Това е друг въпрос — вижте „Устранение на неизправности“ по-долу |
Какво проверката вижда добре: има ли нашия таг в изходната разметка, единен ли е или набор от единични, и чий data-domain стои в него, — тоест хваща най-честата грешка „копирах кода от съседния обект“.
Точно същата граница има и публичната страница „Проверка на сайта“: тя също чете изходния HTML и не изпълнява скриптове. Реалните cookies и това, което се зарежда вече в браузъра, се събира само от скенера CMP — вижте Cookies и съгласие.
Отстраняване на проблеми#
Общ списък за всичките дванадесет уиджета — от най-честата причина към редките. Спецификата на конкретния уиджет е описана в неговата статия.
1. „Проверка на инсталацията“ казва, че кодът липсва. Тагът не е вмъкнат, вмъкнат е не на всички страници на шаблона или сайтът след вмъкването не е публикуван (Tilda, Wix, Webflow изискват повторно публикуване). Проверете и адреса на сайта в горната част на раздела: проверката минава именно по него — и само по него, с една страница. Преди да поправяте нещо, сверете се със списъка „Какво проверката на инсталацията не вижда“: половината случаи на „кодът липсва“ не са повреда на сайта, а граница на метода.
2. Кодът на сайта принадлежи на друг обект.
В тага стои чужд data-domain — честа грешка, когато обектите са няколко и кодът е копиран от съседната карта. Вземете кода при избрания нужен обект.
3. Проверката не вижда таг, вмъкнат чрез Google Tag Manager. Това не е грешка. Проверката чете изходния HTML на страницата — това, което е върнал сървърът, — а GTM подставя тага вече в браузъра. Отворете сайта и погледнете с очи: уиджетът или го има, или го няма. Пълният списък на това, което методът на проверка не показва (GTM, втора страница на сайта, SPA, затворен сайт), е в „Какво проверката на инсталацията не вижда“.
4. Промените не се появиха на сайта. Файловете на уиджетите се раздават чрез CDN с кеш 5 минути. След включване на превключвателя или промяна на настройките изчакайте няколко минути и обновете страницата с изчистване на кеша (Ctrl+F5). Ако браузърът упорито показва старото — проверете в режим инкогнито.
5. Уиджетът е включен, но на страницата не се вижда. Минете през списъка:
- уиджетът е платен и не е платен — неплатеното разширение се изрязва от данните на сайта на сървъра, затова на страницата то няма да попадне дори при включен превключвател;
- уиджетът има условия за показване (мултибутон, обратно обаждане, „Жива витрина“): маска на страниците, закъснение, филтър за устройство или график може да са отсекли именно тази страница и този момент;
- на уиджета не му достига съдържание: онлайн часът се появява, когато в менюто има поне една позиция-услуга и е включена резервация; центърът за поддръжка без публикувани статии ще отвори празен панел; мултибутонът без нито един канал не се рисува изобщо; „Жива витрина“ мълчи, докато числата са под прага;
- мултибутонът е погълнал бутона на съседа: ако в неговото ветрило има пункт „Отвори чата“ или „Обратно обаждане“, собствените бутони на тези уиджети се гасят нарочно — те вече са във ветрилото.
6. В ъгъла на екрана се бутат няколко бутона. Включете мултибутон и добавете във ветрилото му действията на нужните уиджети — техните отделни бутони ще изгаснат сами.
7. Няма уиджети на сайт, направен с нашия конструктор. Там кодът за инсталация е вграден в шаблона и блокът с кода в акаунта не се показва — това е нормално. Проверявайте превключвателите на уиджетите: новият генериран сайт пристига с включени cookie банер, правни документи и чат, останалото се включва ръчно. Отчетете и разликите между повърхностите: мултибутонът на нашата витрина се показва само с отделен превключвател „Показвай и на нашата витрина“ (той поглъща нативните бутони на страницата), а „Жива витрина“ работи със същия един превключвател, както и на чужд сайт.
Сайт със Content-Security-Policy#
Ако вашият сървър връща заглавка Content-Security-Policy, браузърът сам решава какво е позволено да зареди нашият код за инсталиране. Самият таг при това работи — вие сте го разрешили, — а всичко, което той изтегля, може да бъде блокирано мълчаливо: отвън това изглежда като „уиджетите изчезнаха“. В конзолата на браузъра при това се виждат редове от вида Refused to load the script.
Разривът възниква точно в един режим: политиката разрешава скриптове само чрез еднократен nonce, без 'strict-dynamic' и без хост на нашия CDN в списъка. По-долу — три начина това да се затвори, от най-простия.
Вариант 1 — nonce на нашия таг#
Вашият сървър генерира нова случайна стойност на всеки отговор, поставя я и в заглавката, и в тага:
Content-Security-Policy: script-src 'nonce-r4nd0m...'
<script nonce="r4nd0m..." src="https://cdn.<ваш бренд>/site/v1.js" data-domain="ВАША-ЛОКАЦИЯ" async></script>
Единият таг чете nonce на своя таг и го предава на всеки бандъл на уиджет, който вмъква, — те преминават проверката script-src. За заявки, стилове и вградени страници също са нужни разрешения от таблицата по-долу. Отделната форма „Съобщи за наличност“ има ограничение, описано по-долу.
⚠️ Постоянна стойност, еднаква на всички отговори, не е nonce: тя ще бъде копирана в собствения скрипт на всеки, който е успял да вмъкне код на страницата. Генерирайте на всеки отговор, на сървъра.
Вариант 2 — 'strict-dynamic'#
Content-Security-Policy: script-src 'nonce-r4nd0m...' 'strict-dynamic'
С 'strict-dynamic' доверието към нашия таг се разпростира върху скриптовете, които той вмъква, включително ленивите части на „Умните изскачащи прозорци“. Това е пример за директива за скриптове: при ограничения default-src, connect-src, style-src или frame-src добавете съответните разрешения от таблицата по-долу.
Вариант 3 — списък с хостове#
Ако nonce не ви е достъпен (така се случва при конструкторите за сайтове), разрешете нашите хостове изрично:
Content-Security-Policy: script-src https://cdn.<ваш бренд>;
connect-src https://cdn.<ваш бренд> https://api.<ваш бренд> wss://ws.<ваш бренд> https://o.<ваш бренд>;
img-src https://cdn.<ваш бренд> https://i.<ваш бренд>;
frame-src https://cdn.<ваш бренд> https://ваша-локация.<ваш бренд>;
style-src 'unsafe-inline'
Готов снипет с подставени хостове на вашия бренд и вашата локация има в акаунта: Маркетинг → Моят сайт, блок „Сайт със Content-Security-Policy?“ под кода за инсталиране — там има и бутон „Копирай“, и пояснение кой хост за кой уиджет е нужен.
Кое за кого е нужно:
| Директива | За кого е нужна |
|---|---|
script-src |
За всички уиджети: бандълите от нашия CDN |
connect-src |
За всички: заявки, резервации, часове, поръчки, телеметрия; за чата — уебсокет и бакет за сигнали |
img-src |
За поръчката: снимки на стоки и ястия |
frame-src |
За поръчката, центъра за поддръжка и юридическите документи: те отварят вашата витрина в <iframe> |
style-src |
За всички: прозорците на уиджетите вмъкват <style> в своя Shadow DOM |
Какво това не покрива — честно#
- Стилове. Оформлението на прозорците е инлайнов
<style>вътре в Shadow DOM, затова е нуженstyle-src 'unsafe-inline'. Това не влияе наscript-src: за скриптовете не искаме'unsafe-inline'и'unsafe-eval'. - Ленивите части на уиджетите (разширените изскачащи прозорци и слотовете на „Умните изскачащи прозорци“, възрастовият гейт на банера за съгласие, мобилният бар на мултибутона, прихващането на форми) се зареждат от собствени зареждачи и nonce получават — те преминават същата проверка като главния бандъл. Изключение е формата на бутона „Съобщи за наличност“ (
stock/form-v1.js): това е отделен таг извън единния зареждач и засега не пренася nonce — при политика само с nonce, без хост на нашия CDN, формата за абонамент няма да се отвори. - Конструкторите за сайтове (Tilda, Wix и подобни) връщат заглавката сами и еднократен nonce за своя таг там не можете да изпишете. Остава вариантът със списък с хостове — ако платформата въобще дава да се редактира политиката.
- Обаждането от сайта предава звука като WebRTC поток и не зарежда медийни файлове, затова
media-srcне му е нужен; микрофона разрешаватPermissions-Policyи HTTPS, а не CSP.
Изнасяне на уиджет като отделен раздел#
Ако един от уиджетите е основният ви продукт (например използвате само изскачащи прозорци или само банера за бисквитки), пътят „Маркетинг → Моят сайт → карта → зъбно колело“ е твърде дълъг. На картата има бутон „Изнасяне в страничната лента“ — уиджетът получава собствен пункт в менюто и се отваря с едно кликване.
Това е настройка на вашия интерфейс: тя управлява само видимостта на раздела, а не работата на уиджета на сайта.
Общите настройки на сайта — адрес, код за инсталиране и проверка — остават в „Моят сайт“: този пункт стои в менюто до раздела на уиджета, затова изнесеният раздел няма връзка „← Всички уиджети на сайта“. Ако премахнете уиджета от страничната лента, връзката се връща.
На страницата на самия уиджет същият бутон стои на горната рамка на блока с настройки, вдясно. При изнесен уиджет той е надписан „В страничната лента“ — натиснете го, за да премахнете пункта от менюто; бутонът при това остава на мястото си.
Какво е безплатно и какво е платено разширение#
Част от уиджетите влизат в абонамента, а други се свързват като разширение в раздел „Разширения“: като платени са отбелязани Резервация, Изскачащи прозорци и форми, Център за поддръжка и Правни документи — на картата стои чип „💳 Платено разширение“.
Платеният уиджет се включва след покупка. Натискането на превключвателя при неплатен уиджет не го включва, а отваря прозорец за плащане направо в раздела; след плащането уиджетът се включва сам. Чипът „💳 Платено разширение“ при неплатен уиджет също е бутон за плащане, а при вече платен води до каталога, за да видите абонамента. Достъпът зависи от действащата покупка. Промяната на абонамента и обновяването на настройките на сайта са отделни операции: ако след покупката уиджетът не се появи, проверете превключвателя и запазете настройките на обекта. Пет минути кеш се отчитат от публикуването на обновените данни; самата промяна на статуса на абонамента в момента не гарантира такова публикуване.
На сайт, направен с нашия конструктор, „Правни документи“ и cookie банерът са безплатни. На техните карти вместо „платено“ стои чип „🎁 Влиза в сайта“ и прозорецът за плащане изобщо не се показва: това не е допълнителна продажба, а условие, при което сайтът се използва законно. Новосъздаденият сайт пристига веднага с включени cookie банер, правни документи и чат. На чужд сайт разширението „Правни документи“ се заплаща отделно. Cookie банерът в текущия хъб не влиза в списъка с четирите платени уиджета.
Планове и плащане — в раздел Магазин за приложения и Абонамент.
Свързани раздели#
- Конструктор за сайтове — ако нямате свой сайт и ви трябва нашата витрина
- Витрина на собствен код (headless) — ако сайтът се пише от вашия разработчик, а данните взема от нас
- Собствен домейн — свързване на собствен домейн към нашата витрина
Често задавани въпроси#
Трябва ли да се отказваме от своя сайт? Не. Уиджетите живеят върху вашия сайт, оформлението и хостингът не се променят.
Колко тага да вмъкнем, ако уиджетите са няколко? Един. Съставът на уиджетите — превключватели в акаунта.
Ще забави ли уиджетът сайта?
Зареждащият скрипт се свързва асинхронно (async) и не блокира изобразяването на страницата; всеки уиджет се зарежда като отделен малък файл и само ако е включен. Изключен уиджет изобщо не се изтегля.
Ще счупи ли уиджетът оформлението? Не. Всеки уиджет се рисува в изолиран контейнер (Shadow DOM): стиловете на вашия сайт не проникват във уиджета, а стиловете на уиджета — навън. Изключение по замисъл е уиджетът за онлайн поръчки: той специално поставя бутони „В количката“ във вашето оформление и това се настройва с преглед (вж. Онлайн поръчка на своя сайт).
На какъв език ще говори уиджетът?
Той гледа езика на страницата: първо атрибута data-lang в тага, ако сте го задали, после lang на вашата HTML страница, после езика на браузъра на госта, а в краен случай — английски. Речниците са с различен размер: cookie банерът, уиджетът за онлайн записване и прозорецът за чат знаят 45 езика (надписите на чата пристигат като отделен езиков пакет според езика на страницата), при останалите са вградени английски, руски, грузински и турски с отпадане към английски. Надписите на бутоните и поканите задавате сами — на отделен ред за всеки език на сайта.
Къде се съхраняват данните, които събират уиджетите?
В облака на вашия бранд: при cenaly.com — AWS, при cenaly.ru — Yandex Cloud; данните на руските заведения остават в Русия. Заявките, поръчките, резервациите и кореспонденцията попадат във вашия акаунт, а към публичния CDN отиват само настройките на уиджетите и това, което и без това е публично (меню, работно време, публикувани документи, обезличени числа от „Жива витрина“).
Имам няколко обекта — как да постъпя?
Уиджетите се настройват за обект: изберете го в списъка най-горе в раздела и вземете неговия код за инсталиране. Всеки сайт има свой data-domain.
Могат ли уиджетите да се поставят на няколко различни сайта? Да, тагът на един обект може да се вмъкне на няколко страници или сайта — данните пристигат в един обект.