Встановлення віджета на вашій платформі

Віджет — це два теги <script>: перший задає опції, другий завантажує віджет. Скопіюйте їх з налаштувань проєкту в додатку — там уже є ID вашого проєкту й обрані опції:

<script>
window.__rm__config = {
  projectId: 'YOUR_PROJECT_ID',
  locale: 'auto'
};
</script>
<script src="https://widget.revisionme.com/app.js" defer id="rm_app_script"></script>

Підходить будь-яке місце, де сайт дозволяє додати власний HTML на всі сторінки. Зазвичай це кінець сторінки перед </body>, але <head> теж годиться: віджет дочекається, поки сторінка буде готова. Тримайте обидва теги разом і в такому порядку. Нижче — де це місце на популярних платформах. Щоб показувати віджет лише на окремих сторінках чи окремим людям, див. Показ віджета лише там, де потрібно.

WordPress

Найпростіше — плагін для сніпетів коду. У WPCode (раніше Insert Headers and Footers): Code Snippets → Header & Footer, вставте код у поле Footer і натисніть Save Changes. Якщо у вас плагін кешування, переконайтеся, що кеш очищено і відвідувачі отримують нові сторінки.

Без плагіна — через functions.php дочірньої теми:

add_action('wp_footer', function () {
    ?>
    <script>
    window.__rm__config = { projectId: 'YOUR_PROJECT_ID', locale: 'auto' };
    </script>
    <script src="https://widget.revisionme.com/app.js" defer id="rm_app_script"></script>
    <?php
});

На WordPress.com (хмарний сервіс) власні скрипти потребують тарифу з плагінами та увімкненими функціями хостингу; на безкоштовному тарифі теги <script> вирізаються. Теми з анімованими переходами між сторінками (наступна сторінка вантажиться без повного перезавантаження) підтримуються: віджет лишається на сторінці після кожного переходу.

Google Tag Manager

  1. Tags → New → Tag Configuration → Custom HTML, вставте обидва теги в поле HTML.
  2. Triggering: All Pages. Для умов (лише деякі сторінки, лише staging) замість нього — тригер з умовами, приклади в статті Показ віджета лише там, де потрібно.
  3. Збережіть і опублікуйте контейнер (Submit). Сам режим попереднього перегляду сайт для відвідувачів не змінює.

Support document.write лишіть вимкненим. GTM може прибирати атрибути тегів <script>, які вставляє, тому вбудоване посилання embedBtn (воно з’являється там, де стоїть тег скрипта) через GTM не працює; плаваюча кнопка, кнопка біля виділеного тексту і Ctrl+Enter працюють як зазвичай.

Конструктори сайтів

У всіх конструкторах код починає працювати на опублікованому сайті, а не в редакторі, і зазвичай потребує платного тарифу: якщо описаного меню немає, перевірте, що дозволяє ваш тариф.

Tilda

Site Settings → Insert Code → HTML code for the HEAD section, потім переопублікуйте всі сторінки. Загального поля для кінця сторінки Tilda не має, а <head> для віджета підходить. Лише для однієї сторінки — Page Settings → Additional → HTML code for the HEAD section або блок T123 (Embed HTML Code); у редакторі блок показує код текстом, працює він на опублікованій сторінці.

Webflow

Site settings → Custom code → Footer code, збережіть і натисніть Publish. Власний код потребує платного тарифу сайту (або платного workspace). У Designer замість коду показується заглушка; перевіряйте на домені webflow.io або на робочому.

Wix

Settings → Development & integrations → Custom Code → Add Custom Code, вставте код, оберіть All pages і Load code once, розміщення — Body – end. Wix дозволяє власний код лише на тарифі Premium з під’єднаним доменом, і сніпет прив’язаний до цього домену: після зміни домену додайте його знову.

Shopify

Online Store → Themes → ⋯ → Edit code, відкрийте layout/theme.liquid і вставте код одразу перед </body>. Спершу зробіть копію теми (Duplicate): правки коду можуть загубитися при оновленні теми. Покриваються всі сторінки магазину; сторінки оформлення замовлення — ні, код теми Shopify там не виконує.

Squarespace

Pages → Website Tools → Code Injection → Footer, збережіть. Code Injection доступний на тарифах Core, Plus і Advanced (раніше — Business і Commerce). Поки ви залогінені, код може не спрацьовувати, тож перевіряйте в приватному вікні.

Single-page застосунки

React, Vue, Svelte, Angular і подібні застосунки не потребують нічого особливого: додайте код один раз на сторінку, яка вантажить застосунок, і віджет лишається при зміні маршрутів. Повідомлення зберігає адресу, відкриту в момент, коли відвідувач відкрив форму, тож повідомлення з різних маршрутів розрізняються. Підсвічування виділеного тексту не заважає фреймворку: коли форма закривається, віджет повертає текст сторінки точно таким, яким він був.

Задавайте опції як window.__rm__config, як у коді вище. Звичайний var __rm__config працює в тегу <script> на сторінці, але всередині JavaScript-модуля лишається локальною змінною, і віджет її не бачить.

Vite, Create React App, Vue CLI, Angular

Вставте код в HTML-сторінку застосунку перед </body>: index.html у Vite, public/index.html у Create React App і Vue CLI, src/index.html в Angular.

Next.js

У кореневий layout (app/layout.tsx, App Router), щоб він був на всіх маршрутах:

import Script from 'next/script';

export default function RootLayout({ children }) {
  return (
    <html lang="uk">
      <body>
        {children}
        <Script id="rm-config" strategy="beforeInteractive">
          {`window.__rm__config = { projectId: 'YOUR_PROJECT_ID', locale: 'auto' };`}
        </Script>
        <Script id="rm_app_script" src="https://widget.revisionme.com/app.js" />
      </body>
    </html>
  );
}

beforeInteractive гарантує, що опції вже задані, коли стартує віджет; вбудований Script потребує id. У Pages Router Script з опціями йде в pages/_document.tsx (beforeInteractive працює лише там), а Script віджета — в pages/_app.tsx.

Nuxt

У nuxt.config.ts:

export default defineNuxtConfig({
  app: {
    head: {
      script: [
        { innerHTML: "window.__rm__config = { projectId: 'YOUR_PROJECT_ID', locale: 'auto' };", tagPosition: 'bodyClose' },
        { src: 'https://widget.revisionme.com/app.js', defer: true, id: 'rm_app_script', tagPosition: 'bodyClose' }
      ]
    }
  }
});

Turbo, Livewire та інша підміна сторінок

Сайти, що при переході замінюють увесь <body> (Hotwire Turbo, Livewire wire:navigate, Swup, Barba.js), підтримуються: додайте код у layout один раз, і віджет сам повертається після кожної заміни.

Content Security Policy

Якщо ваш сайт надсилає заголовок Content-Security-Policy, додайте до нього такі джерела:

script-src  https://widget.revisionme.com https://revisionme.pages.dev;
connect-src https://api.revisionme.com;
style-src   'unsafe-inline';
img-src     data:;

Staging та інші домени

Повідомлення приймаються з домену проєкту, його піддоменів і з localhost. На копії сайту на іншому домені (наприклад, *.vercel.app чи *.netlify.app) форма відкриється, але повідомлення буде відхилено: створіть для неї окремий проєкт. Докладніше — у статті Показ віджета лише там, де потрібно.

Вашої платформи тут немає або щось не працює? Напишіть на hello@revisionme.com з адресою сторінки.