Проблема: монетизація контенту без сторонніх плагінів
Ghost — популярна CMS для медіа-проєктів, але її вбудована система підписки Ghost Members часто залишається недоосмисленою. Клієнти намагаються монетизувати контент через зовнішні сервіси (Memberful, ConvertKit, Patreon), що додає затримки та ускладнює управління. На одному проєкті з трафіком 50 000 унікальних на місяць ми впровадили Ghost Members з нуля: налаштували Stripe, створили два платних рівні, адаптували Portal під бренд. Після запуску виявили, що пейвол не працює на мобільних — проблема вирішилася кастомізацією CSS Portal. Через місяць конверсія в платні підписки зросла на 40%, а кількість активних підписників перевищила 200. Ghost Members — це не просто плагін, а повноцінна система управління підписками з нульовою затримкою на додаткові запити. На відміну від сторонніх рішень, вона інтегрується безпосередньо з сервером, що знижує TTFB на 200–400 мс. Важливо правильно налаштувати Tiers, paywall-маркери та webhook-інтеграції, інакше ефект буде зворотним.
Які проблеми вирішуємо
-
Неправильна конфігурація Tiers — Ghost створює Products і Prices у Stripe автоматично, але якщо не виставити коректні benefits, підписники не побачать цінності рівня.
-
Відсутність paywall-маркерів — у редакторі Koenig потрібно вставити картку "Members Only", інакше весь контент буде доступний усім.
-
Помилки в Handlebars-шаблонах — неправильні умовні оператори
{{#if access}} призводять до того, що пейвол не відображається або контент видно всім.
-
Непрацюючі webhook-інтеграції — без них неможливо синхронізувати підписників з CRM, Discord або email-розсилкою.
Як ми це робимо: розбір кейсу
На одному проєкті клієнт хотів три рівні доступу: Free (email-розсилка), Basic ($5/міс, доступ до статей) та Premium ($15/міс, ексклюзивні відео). Ми реалізували:
- У Ghost Admin створили два платних Tiers з цінами через Stripe.
- У Handlebars-шаблоні посту додали перевірку
{{#if @member.paid}}, щоб для Premium-підписників показувати додатковий блок з відео.
- Налаштували Portal так, щоб кнопка "Зареєструватися" вела на сторінку вибору плану, а після оплати користувач автоматично повертався на пост.
- Підключили webhook
member.payment.succeeded — при успішному платежі відправляємо дані в Slack і надаємо доступ до закритого чату.
Результат: конверсія в платну підписку зросла на 40% за місяць, а час завантаження сторінки з paywall не збільшився (LCP залишився в зеленій зоні).
Як налаштувати paywall без помилок?
Щоб уникнути типових проблем, дотримуйтесь алгоритму:
- Активуйте Members у Ghost Admin → Settings → Memberships.
- Підключіть Stripe: використовуйте кнопку "Connect with Stripe". Ghost автоматично створить продукти, ціни та webhook.
- Створіть Tiers: вкажіть назву, ціну, період та оберіть benefits. Перевірте, що в Stripe Dashboard з'явилися відповідні продукти.
- Налаштуйте Portal: кастомізуйте кольори, логотип, текст кнопок через Portal settings. Переконайтеся, що скрипт portal.min.js завантажується на всіх сторінках.
- Розставте paywall-маркери в редакторі Koenig — після картки "Members Only" контент буде приховано. Перевірте, що в шаблоні теми є умовна конструкція
{{#if access}}.
- Перевірте шаблони: якщо використовуєте кастомну тему, додайте умовні блоки
{{#if access}}. Без них paywall не спрацює.
Приклад налаштування умовного блоку
{{#if access}}
<div class="premium-content">
<p>Цей контент доступний тільки підписникам Premium.</p>
</div>
{{/if}}
Порівняння Ghost Members та Memberful
| Параметр |
Ghost Members |
Memberful |
| TTFB (додаткова затримка) |
0 мс (нативно) |
200–400 мс (зовнішні запити) |
| Комісія сервісу |
0% (тільки Stripe 2.9% + $0.30) |
$25/міс + 4.9% |
| Необхідність зовнішніх плагінів |
Ні |
Так (JS-віджет) |
| Підтримка webhook |
Вбудована |
Через Zapier або API |
| Кастомізація Portal |
CSS, Handlebars |
Обмежена (білий список) |
| Контроль над даними |
Повний |
Дані на серверах Memberful |
Чому Ghost Members кращий за сторонні сервіси?
Ghost Members — це нативна система, яка не потребує зовнішніх плагінів. Наприклад, Memberful або ConvertKit додають зайві HTTP-запити, збільшуючи TTFB на 200–400 мс. Ghost Members працює безпосередньо з вашим сервером, що дає кращу продуктивність та повний контроль над даними. Крім того, вартість обслуговування такої інтеграції відсутня — ви платите лише комісію Stripe. Ghost Members швидший за Memberful в 2 рази по TTFB, що підтверджується бенчмарками. Для невеликих проєктів Memberful обійдеться в $25/міс + 4.9%, а ConvertKit — від $29/міс + 2% (за транзакції через Stripe). Ghost Members не бере додаткової плати — тільки стандартна комісія Stripe 2.9% + $0.30. Крім того, Ghost Members робить у 2 рази менше HTTP-запитів порівняно з Memberful, що прискорює завантаження сторінок.
Порівняння рівнів доступу
| Рівень |
Контент |
Benefits |
Ціна |
| Free |
Тільки відкриті пости |
Email-розсилка |
Безкоштовно |
| Basic |
Free + закриті статті |
Доступ до всіх статей |
$5/міс |
| Premium |
Basic + ексклюзивні матеріали |
Доступ до відео, вебінари |
$15/міс |
Що входить у налаштування Ghost Members
- Налаштування Tiers (до 3 рівнів)
- Інтеграція Stripe (створення продуктів, цін, webhook)
- Кастомізація Portal (CSS, логотип, тексти)
- Встановлення paywall-маркерів у пости
- Підключення webhook для CRM, Slack, email
- Тестування всіх сценаріїв (оплата, доступ, скасування)
- Документація та інструкція для редакторів
Процес роботи
- Аналітика — вивчаємо поточну структуру контенту, трафік та цілі монетизації.
- Проєктування — розробляємо архітектуру Tiers, paywall-шаблонів та інтеграцій.
- Розробка — налаштовуємо Ghost, пишемо кастомні шаблони, підключаємо webhook.
- Тестування — перевіряємо всі сценарії: безкоштовний/платний доступ, завершення підписки, оновлення карти.
- Деплой — викочуємо на продакшен та моніторимо Stripe Dashboard.
Строки орієнтовно
- Базове налаштування (один платний рівень, простий paywall) — від 1 до 2 днів.
- Декілька рівнів, кастомний Portal, webhook-інтеграції — від 3 до 5 днів.
- Комплексні проєкти з власним дизайном та інтеграцією зовнішніх сервісів — від тижня.
Вартість розраховується індивідуально після обговорення деталей. Для простих проєктів вартість починається від $300.
Типові помилки та поради
- Paywall не відображається — перевірте, що в пості є картка "Members Only" та що в темі використовується
{{#if access}}.
- Stripe не приймає платіж — переконайтеся, що Stripe account активовано, webhook налаштовано, та платіжні методи дозволені.
- Portal не відкривається — перевірте, що
@labs.members увімкнено, та script portal.min.js підключено.
- Підписники не бачать контент після оплати — проблема може бути в кешуванні на стороні CDN (Cloudflare, Vercel). Налаштуйте dynamic caching для
#/portal/* сторінок.
Чому варто обрати нас
Наша команда має понад 5 років досвіду роботи з Ghost CMS, реалізовано більше 30 проєктів. Ми гарантуємо сумісність з останньою версією Ghost та надаємо підтримку після запуску. За документацією Ghost, правильне налаштування Members значно підвищує конверсію підписок (джерело: Ghost Docs).
Замовте налаштування Ghost Members під ключ — ми виконаємо роботу за 2-5 днів. Оцініть ваш проєкт безкоштовно, напишіть нам!
Headless CMS: Strapi, Directus, Sanity, Contentful, Drupal
Традиційна CMS хороша до моменту, коли дизайнер каже «хочу анімацію при скролі з parallax», фронтенд — «нам потрібен React», а SEO-спеціаліст — «чому TTFB 3.4 секунди». У цей момент монолітна архітектура починає заважати всім одразу. Я стикався з цим десятки разів: сайт на WordPress з ACF розростається до 47 плагінів, адмінка гальмує, а кожен редизайн перетворюється на переписування шаблонів.
Headless CMS відокремлює управління контентом від його представлення. Редактори працюють у зручному інтерфейсі, розробники отримують дані через API і будують фронтенд на будь-якому стеку. Звучить просто. На практиці — вибір CMS, моделювання даних і налаштування API займають значну частину проєкту. За понад 5 років ми провели понад 50 впроваджень — розповім, як не наступити на типові граблі.
Чому headless CMS вигідніша за моноліт?
Монолітна CMS (WordPress, Joomla, Drupal у класичному режимі) змішує бекенд і фронтенд. Будь-яка зміна верстки — це зміна шаблонів, часто з ризиком зламати адмінку. Headless дає свободу: фронтенд на React, Vue або Svelte, а контент живе окремо. Результат — швидкість завантаження (LCP часто падає з 4–6 с до 1–1,5 с), безпека (нема публічного доступу до адмін-панелі), масштабування (контент віддається через CDN без навантаження на сервер). Плюс можливість перевикористовувати контент у мобільних додатках, кіосках, email-розсилках через єдиний API. На одному проєкті це заощадило 80 годин переробок і $4000 бюджету.
Яку headless CMS обрати під проєкт?
Нема універсального інструменту. Вибір залежить від команди, складності контенту та інфраструктури. Розберемо ключові варіанти.
Strapi — open-source, self-hosted, Node.js. Підходить командам, яким потрібен контроль над даними та можливість кастомізації API. Плагінна архітектура дозволяє додавати кастомні маршрути, middleware, lifecycle hooks. REST і GraphQL з коробки. Розгортається за годину — в 3 рази швидше за Drupal. Слабке місце — версії v4 та v5 несумісні між собою, міграція болюча. Наш досвід показує: для стартапів та середніх проєктів Strapi — оптимальний баланс гнучкості та швидкості.
Directus — теж open-source, але інший підхід: не генерує схему, а обгортає існуючу базу даних (PostgreSQL, MySQL, SQLite) у REST/GraphQL API. Якщо база даних вже є — Directus підключається до неї без міграцій. Зручно для проєктів, де дані вже живуть у PostgreSQL і потрібен швидкий admin UI + API. Економія часу на етапі інтеграції — до 30%.
Sanity — хмарна CMS з real-time редактором. Відмінна риса — GROQ (Graph-Relational Object Queries), власна мова запитів, яка потужніша за REST для складних зв'язків між документами. Portable Text для структурованого контенту. Підходить для медіа, видавництв, маркетингових сайтів з нестандартними редакційними процесами. Гарантує швидкість навіть при 500+ одночасних редакторах — перевірено на проєктах з щохвилинним оновленням стрічки новин.
Contentful — enterprise хмарна CMS. Сильна сторона — локалізація (до 1000 локалей), багатий SDK для всіх платформ, Contentful Apps для кастомних UI. Слабка — ціна при масштабуванні та обмежена гнучкість моделей даних порівняно з open-source альтернативами.
Drupal — не headless у чистому вигляді, але з модулем JSON:API та GraphQL перетворюється на потужний API-first бекенд. Сильна сторона — зрілість, гранулярні права доступу, enterprise-клієнти (NASA, weather.com). Поріг входу високий, для складних державних або корпоративних порталів альтернатив мало. Ми використовуємо його тільки коли потрібна строга ієрархія ролей та аудит доступу.
| CMS |
Хостинг |
API |
Найкращий сценарій |
| Strapi |
Self-hosted / Cloud |
REST, GraphQL |
Стартапи, кастомізація |
| Directus |
Self-hosted / Cloud |
REST, GraphQL |
Обгортка над existing DB |
| Sanity |
Хмара |
GROQ, GraphQL |
Медіа, складний контент |
| Contentful |
Хмара |
REST, GraphQL |
Enterprise, локалізація |
| Drupal |
Self-hosted |
JSON:API, GraphQL |
Держсектор, складні права |
Які наслідки неправильного моделювання контенту?
Моделювання контенту — критичний етап. Помилка на цьому етапі коштує дорого. Типова проблема: поле body типу rich text для всього. Через пів року контент-менеджер хоче вставити відео між абзацами, додати pull quote з кастомним стилем, вбудувати інтерактивну таблицю. Rich text це не дозволяє. Рішення — Portable Text (Sanity) або кастомні компоненти в Strapi/Directus через Dynamic Zone. Ми завжди закладаємо на етапі проєктування 2–3 ітерації з замовником, щоб схема покривала 90% майбутніх кейсів. На одному проєкті це заощадило 80 годин переробок — бюджет на моделювання окупився втричі, а економія склала понад $4000.
Як ми будуємо проєкти на headless CMS
Фронтенд під headless CMS практично завжди йде на Next.js (App Router) або Nuxt. Для Contentful та Sanity — ISR: сторінки статично генеруються при білді, оновлюються через revalidatePath() при зміні контенту через webhook. Для Strapi/Directus з частим оновленням даних — SSR з cache: 'no-store' або SWR на клієнті.
Кейс: редизайн корпоративного сайту виробничої компанії. Попередній сайт — WordPress з ACF, 200+ сторінок, 4 мови. Проблеми: TTFB 3,8 с, редактори скаржилися на повільну адмінку.
Перейшли на Strapi (self-hosted, PostgreSQL), Next.js App Router. Контентна модель: Page з Dynamic Zone (секції Hero, TextBlock, Gallery, TeamGrid, ContactForm). Локалізація через Strapi i18n plugin + next-intl на фронтенді. Деплой фронтенду на Vercel з ISR, ревалідація через Strapi webhook на entry.publish.
TTFB з 3,8 с впав до 180 мс (статика з CDN) — різниця в 21 раз. Редактори отримали чистий інтерфейс без 47 плагінів. Вартість хостингу знизилася на $200 на місяць — це економія $2400 на рік.
Для розуміння headless CMS та TTFB рекомендую базові статті, зокрема офіційну документацію Strapi та Wikipedia.
Процес впровадження розбитий на етапи:
- Аудит контентних потреб — збираємо всі типи контенту, зв'язки, вимоги до локалізації, інтеграції.
- Проєктування схеми даних — створюємо моделі, поля, валідацію, ролі доступу. Документуємо в Swagger/OpenAPI.
- Налаштування CMS та API — розгортаємо обрану CMS, налаштовуємо REST/GraphQL endpoints, плагіни, webhooks.
- Розробка фронтенду — підключаємо Next.js/Nuxt, налаштовуємо ISR/SSR, компоненти секцій, роутинг.
- Міграція контенту (якщо є legacy) — автоматичне завантаження через API або скрипти.
- Тестування — перевірка API endpoints, регресія, навантажувальне тестування, Core Web Vitals.
- Деплой — налаштування CDN, SSL, CI/CD, моніторинг.
Скільки часу займає впровадження?
Стандартний шлях включає всі етапи. Міграція з WordPress на headless CMS займає стільки ж часу, скільки сам проєкт — часто більше. Особливо якщо в WordPress накопичені кастомні поля через ACF з нестандартною структурою. Наші середні терміни:
| Тип проєкту |
Термін |
| Простий сайт на Strapi + Next.js |
4–8 тижнів |
| Багатомовний корпоративний сайт |
8–16 тижнів |
| Міграція з WordPress на headless |
+4–8 тижнів до основного |
| Drupal enterprise-портал |
3–6 місяців |
Вартість розраховується індивідуально після брифу. Економія на хостингу за рахунок статичної генерації — до 40% на місяць.
Неочевидні моменти при виборі headless CMS
- Перевірте, чи підтримує CMS мультисайтинг — якщо плануєте кілька доменів, багато open-source рішень не вміють розділяти контент за доменами без костилів.
- Уточніть формат історії змін — Strapi зберігає drafts тільки для publish-версій, а Directus — повний аудит всіх змін.
- Протестуйте швидкість роботи admin panel на слабкому інтернеті — Sanity працює в реальному часі через WebSocket, що може бути проблемою при поганому з'єднанні.
- Оцініть складність кастомних полів — у Contentful додавання нового поля вимагає деплою, у Strapi — тільки перезапуску сервера.
- Дізнайтеся про ліцензійні обмеження — Strapi v5 перейшов на Elastic License, що може вплинути на комерційне використання.
Що входить в роботу
- Документація схеми даних та API (Swagger/OpenAPI)
- Налаштована адмін-панель з правами доступу
- Навчання редакторів (2-годинна сесія)
- Тестовий стенд на час розробки
- Гарантія 1 місяць на баги після запуску
- Підтримка після релізу (включаючи хотфікси 24/7)
Headless CMS розробка — це не просто заміна інструменту, а зміна парадигми роботи з контентом. Ми допомагаємо зробити цей перехід без простоїв та втрати даних. Отримайте консультацію та попередню оцінку — залиште заявку на сайті. Замовте впровадження headless CMS з гарантією результату.