Розробка користувацького коду для Squarespace (Code Injection)
Ми розробляємо користувацькі рішення для Squarespace через Code Injection: підключаємо аналітику, інтегруємо CRM та сторонні сервіси, додаємо калькулятори та віджети, налаштовуємо умовну логіку за UTM-параметрами. Наша команда знає обмеження платформи та обходить їх без порушення умов використання. Ми виконали понад 20 проектів на Squarespace для e-commerce магазинів, портфоліо та корпоративних сайтів. Наші клієнти отримують готові рішення без необхідності технічних знань платформи — ми беремо всю технічну частину на себе від аудиту до фінального тестування.
Code Injection — єдиний спосіб розширити функціональність Squarespace поза межами стандартних блоків. Це не повний доступ до сервера або шаблонів, але достатній інструментарій для більшості завдань бізнесу: аналітика, CRM-інтеграції, користувацькі форми та зміна поведінки DOM. Ми знаємо, що можна реалізувати через Code Injection, а що потребує іншого підходу — і чесно повідомляємо про це до початку роботи, щоб ви могли прийняти обґрунтоване рішення.
Що входить у нашу послугу з Code Injection
Ми виконуємо роботи під ключ. Обсяг включає:
- Аудит поточного сайту та визначення точок підключення коду
- Підключення GTM, Google Analytics 4, Facebook Pixel та інших аналітичних інструментів
- Інтеграція з CRM через перехоплення форм Squarespace
- Розробка калькуляторів та інтерактивних елементів у Code Block
- Умовна заміна контенту за UTM-параметрами для лендингів
- Cookie Consent та GDPR-налаштування через Cookiebot або CookieYes
- Реініціалізація сторонніх компонентів при AJAX-навігації Squarespace
Точки підключення коду
Squarespace надає чотири місця для Code Injection:
Перша точка — Global Header (Settings → Advanced → Code Injection → Header). Вставляється в <head> кожної сторінки. Підходить для мета-тегів, підключення шрифтів, синхронних скриптів аналітики та schema.org-розміток.
Друга точка — Global Footer (Settings → Advanced → Code Injection → Footer). Вставляється перед </body>. Підходить для GTM, чат-віджетів та асинхронних скриптів, які не блокують рендеринг.
Третя точка — Page-level Header (Page Settings → Advanced). Тільки для конкретної сторінки. Зручно для унікальних schema.org-розміток та page-specific стилів.
Четверта точка — Order Confirmation. Спеціалізована інжекція для сторінки успішного замовлення. Використовується для конверсійних тегів та підтвердження покупки в аналітиці.
Практичні паттерни
Lazy-ініціалізація стороннього віджета
<script>
(function() {
function loadWidget() {
var script = document.createElement('script');
script.src = 'https://widget.example.com/loader.js';
script.setAttribute('data-key', 'YOUR_KEY');
document.body.appendChild(script);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', loadWidget);
} else {
loadWidget();
}
})();
</script>
Перехоплення форми Squarespace і синхронізація з CRM
document.addEventListener('submit', function(e) {
var form = e.target.closest('form[data-form-id]');
if (!form) return;
var formId = form.getAttribute('data-form-id');
if (formId !== 'YOUR_FORM_BLOCK_ID') return;
var data = new FormData(form);
fetch('https://api.yourcrm.com/leads', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(Object.fromEntries(data))
});
});
Динамічна заміна контенту за UTM-параметрами
(function() {
var params = new URLSearchParams(window.location.search);
var source = params.get('utm_source');
var heroMap = {
'google': 'Знайшли нас в Google? Знижка 10% на перше замовлення',
'instagram': 'Раді бачити підписників Instagram!',
};
window.addEventListener('DOMContentLoaded', function() {
if (source && heroMap[source]) {
var headlines = document.querySelectorAll('.sqsrte-large');
if (headlines.length) headlines[0].textContent = heroMap[source];
}
});
})();
Squarespace JavaScript API та AJAX-навігація
Squarespace надає вбудовані події жизненного циклу сторінки. У режимі AJAX-навігації сторінки змінюються без перезавантаження — сторонні компоненти потрібно реініціалізовувати при кожній навігації.
window.addEventListener('squarespace:after-page-render', function() {
reinitCustomComponents();
});
Ця точка особливо важлива для живих чатів, калькуляторів та кастомних форм, що ініціалізуються при завантаженні сторінки. Без обробки AJAX-навігації вони перестають працювати на сторінках, відкритих без повного перезавантаження.
Cookie Consent та GDPR
Вбудований Cookie Banner Squarespace (бізнес-план і вище) не відповідає строгим вимогам GDPR: немає кнопки Reject All та роздільного керування категоріями cookie. Ми підключаємо Cookiebot або CookieYes через Code Injection.
<script id="Cookiebot" src="https://consent.cookiebot.com/uc.js"
data-cbid="YOUR-CBID" data-blockingmode="auto" type="text/javascript"></script>
Після підключення Cookiebot автоматично блокує сторонні скрипти до отримання згоди та відповідає вимогам регуляторів ЄС.
Обмеження Squarespace та як ми їх обходимо
Squarespace забороняє document.write() та деякі synchronous XHR-паттерни. ES-модулі (type="module") підтримуються, але порядок завантаження важливий. jQuery доступний глобально — окремо підключати не потрібно.
Ми знаємо ці обмеження і враховуємо їх з першого дня роботи. Нашим рішенням не потрібно «виправляти» після публікації.
Як ми виконуємо роботу
- Оцінюємо ваш сайт і визначаємо, які інтеграції потрібні
- Реалізуємо рішення в тестовому середовищі
- Тестуємо у різних браузерах та на мобільних пристроях
- Публікуємо на живому сайті та перевіряємо коректність роботи
- Передаємо документацію та інструкції з підтримки
| Обсяг |
Терміни |
| Підключення аналітики та GTM |
кілька годин |
| Користувацький калькулятор або CRM-інтеграція |
1–2 дні |
| Складна інтеграція з умовною логікою |
3–5 днів |
Зверніться до нас для отримання консультації або оцінки вашого проекту. Ми розглянемо завдання та надамо пропозицію протягом одного робочого дня.
Як ми працюємо
Ми вивчаємо ваш сайт. Ми визначаємо потрібні точки підключення. Ми узгоджуємо обсяг роботи. Ми реалізуємо рішення. Ми тестуємо у браузерах. Ми тестуємо на мобільних пристроях. Ми публікуємо зміни. Ми передаємо документацію. Ми відповідаємо на питання після здачі.
Типи сайтів: технічне завдання, а не маркетинг
Ми бачимо, як команди витрачають бюджет на невідповідний стек. Лендинг на Next.js зі статичною генерацією та корпоративний сайт з CMS — принципово різні інфраструктури, навіть якщо зовні схожі. Помилка на старті веде до переплати за хостинг у 5–10 разів і низької швидкості завантаження. Core Web Vitals (LCP, INP, TTFB) для кожного типу сайту мають свої пріоритети: для лендингу критичний LCP, для корпоративного — TTFB через динамічний контент.
За нашими даними, до 40% проєктів переплачують на хостингу через неправильний вибір технології. Статичний сайт на CDN обходиться в 5 разів дешевше за WordPress на VPS за тих самих навантажень. Нижче розберемо чотири типи сайтів, їхні типові технічні помилки та рішення, які ми застосовуємо на практиці. Маємо 8 років досвіду та понад 120 успішних проєктів у різних нішах.
Як обрати правильний тип сайту?
Вибір визначає стек, інфраструктуру та бюджет на підтримку. Покрокова інструкція:
- Визначте мету: продаж (лендинг), інформування (корпоративний) чи швидкий контакт (візитка).
- Оцініть частоту оновлення контенту: щодня — потрібна CMS, раз на місяць — вистачить Markdown у Git.
- Виберіть стек за продуктивністю: статика для візиток, Next.js з ISR для корпоративних, GSAP для промо.
Як не помилитися з вибором CMS?
Якщо редактори нетехнічні — WordPress з Gutenberg або ACF Pro закриває потреби. Для складних структур — headless CMS (Strapi, Directus) з фронтендом на Next.js. Якщо оновлення рідкі — Markdown в Git з Astro або Next.js, деплой по push в main. Ми використовуємо Repository pattern для уникнення N+1 запитів при роботі з ORM.
Сайт-візитка
Найкомпактніший формат: 1–5 сторінок, мінімум динаміки. Основне завдання — контактна інформація та перше враження. Технічно просто, але є типові помилки.
Занадто важкий стек. WordPress з 15 плагінами для 5 сторінок дає TTFB 800ms на shared хостингу. Ми пропонуємо статику: HTML/CSS/JS або Next.js з output: 'export', задеплоєне на Vercel або Cloudflare Pages. Жодного PHP, жодної бази даних — тільки CDN. TTFB < 50ms гарантовано. Економія на хостингу — до 70% на місяць.
Немає контактної форми з backend-валідацією. Форма лише з JS-валідацією — це декорація. Ми додаємо серверлесс endpoint (Netlify Functions або AWS Lambda) з rate-limiter та сповіщеннями.
Відсутність Schema.org розмітки. Google Knowledge Panel будується на LocalBusiness або Organization. Ми вбудовуємо розмітку в шаблон: адреса, телефон, години роботи.
Термін розробки: 2–3 тижні з дизайном.
Чому швидкість лендингу безпосередньо впливає на конверсію?
Лендинг — сторінка з однією метою: конверсія. Core Web Vitals критичні, оскільки платний трафік і Google використовує CWV у Quality Score.
Конкретний кейс: лендинг з hero-відео 8MB autoplay без preload="none" і три сторонні скрипти аналітики синхронно в <head>. LCP 9.4s, INP 780ms. Ми замінили відео на poster image з відкладеним завантаженням, скрипти перевели на async/defer і частково в Web Workers через Partytown. LCP став 1.8s, INP 140ms. Конверсія зросла на 23% тільки за рахунок швидкості.
A/B тестування — стандартна практика. Після закриття Google Optimize використовуємо open-source Growthbook або PostHog. Для Next.js застосовуємо edge middleware для розподілу трафіку на CDN без додаткового JS.
Термін: 2–4 тижні.
Корпоративний сайт
Корпоративний — CMS, багато сторінок, мультимовність, інтеграція з CRM. Ключове питання: хто редагує контент і як часто.
Якщо редактори нетехнічні — WordPress з Gutenberg або ACF Pro. Для складних структур — headless CMS (Strapi, Directus) з фронтендом на Next.js. Якщо оновлення рідкі — Markdown в Git з Astro або Next.js, деплой по push в main.
Продуктивність: сторінка "Про компанію" з 40 фото в оригіналі — LCP 12 секунд на мобільному. <Image> компонент Next.js з WebP і srcset вирішує без ручної роботи, знижуючи LCP до 2 секунд.
Багатомовність: Astrotomic Translatable на Laravel або next-intl. Структура URL — /uk/about, /en/about з hreflang.
Термін: 6–12 тижнів залежно від обсягу.
Промо-сайт
Промо — тимчасовий або постійний сайт під кампанію. Нестандартний дизайн, анімації. Стек: GSAP, Framer Motion, Three.js, Lottie.
Головна пастка — гальмівні анімації на мобільних. GPU-анімації через transform і opacity — нормально. box-shadow в анімації, filter: blur() на кожному кадрі, анімація width/height — 20fps на iPhone 12. will-change: transform допомагає точково.
prefers-reduced-motion — обов’язковий для accessibility.
Термін: 3–6 тижнів.
Як ми оптимізуємо продуктивність?
Для кожного проєкту проводимо аудит початкового стеку: аналізуємо TTFB, LCP, CLS, INP через Lighthouse та WebPageTest. Використовуємо tree-shake та bundle splitting для зменшення JS-бандла, для Next.js — React Server Components і Suspense для стрімінгу. Серверлесс функції дозволяють уникнути постійної вартості сервера — платите тільки за запити. Наприклад, корпоративний сайт на Next.js + Strapi дає TTFB <200ms, що у 5 разів менше ніж аналог на WordPress.
Автоматично конвертуємо зображення в WebP/AVIF, генеруємо srcset для всіх роздільних здатностей, використовуємо lazy loading з Intersection Observer. Для фонових зображень — техніка progressive loading.
Порівняльна таблиця
| Параметр |
Візитка |
Корпоративний |
Лендинг |
Промо |
| Сторінок |
1–5 |
10–50+ |
1–3 |
1–10 |
| CMS |
Не потрібна |
Потрібна |
Не потрібна |
Рідко |
| SEO-пріоритет |
Середній |
Високий |
Високий |
Низький |
| Анімації |
Мінімум |
Помірно |
Помірно |
Інтенсивно |
| Термін (з дизайном) |
2–3 тиж |
6–12 тиж |
2–4 тиж |
3–6 тиж |
Вартість у кожному випадку розраховується індивідуально після вивчення технічного завдання. — Google рекомендує TTFB під 0.8s, у нас <0.2s.
Що входить в роботу
- Аналітика та прототипування (структура, користувацькі сценарії)
- Дизайн-концепція (адаптивний, mobile-first)
- Верстка з оптимізацією LCP, CLS, INP
- Вибір та налаштування CMS (якщо потрібна)
- Інтеграція з CRM/маркетинговими інструментами
- Тестування (кросбраузерне, load-testing)
- Документація та передача доступів
- Навчання редакторів (відео + письмово)
-
гарантія 3 місяці (безкоштовні правки)
Друга таблиця: порівняння підходів за продуктивністю
| Підхід |
TTFB (мс) |
Складність підтримки |
Вартість розробки |
| Static HTML/CSS |
<50 |
Низька |
Низька |
| Next.js + headless CMS |
<200 |
Середня |
Середня |
| WordPress + плагіни |
500–1500 |
Висока |
Висока |
Статичний сайт швидший за WordPress у 10 разів за TTFB. Для консультації щодо вибору типу сайту та стеку зв'яжіться з нашими інженерами. Замовте розробку під ключ — ми оцінимо терміни та бюджет за 1 день. Напишіть нам, щоб отримати безкоштовний технічний аудит вашого проекту. Отримайте індивідуальну пропозицію з гарантією якості.