Разработка интеграций для Ghost через Webhooks/Zapier
Разрабатываем интеграции для Ghost через Webhooks и Zapier — автоматизируем публикации, синхронизацию с CRM и уведомления. Опыт: более 5 лет работы с Ghost, 30+ проектов для медиа, блогов и образовательных платформ. Недавно для крупного медиа-проекта мы настроили интеграцию Ghost с Telegram, Slack и Mailchimp. Это сократило время уведомлений на 2 часа в день. Согласно Wikipedia, вебхуки — это эффективный способ получения данных в реальном времени. Ghost отправляет webhooks, когда вы публикуете пост, обновляете страницу или добавляете участника. Через Zapier или собственный обработчик эти события соединяются с внешними системами без кастомного кода Ghost. Но для сложных сценариев с фильтрацией или трансформацией данных приходится писать код — и тут мы подключаемся.
Типичные проблемы интеграции Ghost
При настройке синхронизации Ghost с внешними сервисами возникают типичные ошибки: неверная верификация подписи webhook, потеря события при сбое, дублирование данных. Например, при публикации поста нужно отправить уведомление в Telegram. Если обработчик не отвечает 2xx, Ghost повторяет запрос, что приводит к дубляжу. Наше решение — идемпотентный обработчик с проверкой уникальности по ID события.
Пошаговая инструкция по настройке Zapier
- В панели Ghost перейдите в Integrations → Zapier.
- Скопируйте Zapier Webhook URL.
- В Zapier создайте новый Zap с триггером Webhook → Catch Hook.
- Вставьте URL и выберите событие Ghost.
- Добавьте действие: выберите сервис (Slack, Mailchimp и т.д.) и настройте поля.
- Включите Zap.
Как настроить автоматическую синхронизацию Ghost с CRM через Webhooks?
Ghost Admin → Settings → Integrations → Add custom integration → Webhooks. Доступные события:
| Событие | Типичное использование |
|---|---|
post.published |
Уведомление в соцсетях и мессенджерах |
post.unpublished |
Снятие с публикации |
post.deleted |
Очистка кэша |
member.added |
Добавление в CRM или email-рассылку |
subscriber.added |
Запись в базу подписчиков |
Мы гарантируем, что ваш webhook-обработчик будет корректно верифицировать запросы. Ниже — типовой обработчик на Node.js/Express с проверкой подписи:
import crypto from 'crypto';
function verifyGhostWebhook(body: Buffer, signature: string, secret: string): boolean {
const hmac = crypto.createHmac('sha256', secret);
hmac.update(body);
return hmac.digest('hex') === signature.split('sha256=')[1];
}
app.post('/webhooks/ghost', express.raw({ type: 'application/json' }), (req, res) => {
const sig = req.headers['x-ghost-signature'] as string;
if (!verifyGhostWebhook(req.body, sig, process.env.GHOST_WEBHOOK_SECRET!)) {
return res.sendStatus(401);
}
const payload = JSON.parse(req.body.toString());
const event = req.headers['x-ghost-event']; // 'post.published'
handleGhostEvent(event as string, payload);
res.sendStatus(200);
});
async function handleGhostEvent(event: string, payload: any) {
switch (event) {
case 'post.published':
// Отправить в Slack, обновить sitemap, уведомить Telegram-канал
await notifySlack(payload.post.current);
await rebuildSitemap();
break;
case 'member.added':
await addToMailchimp(payload.member.current);
break;
}
} Пошаговая инструкция по настройке кастомного webhook-обработчика
- Создайте endpoint на вашем сервере (Node.js, Python, PHP).
- Добавьте верификацию подписи, как в примере выше.
- Зарегистрируйте webhook в Ghost Admin → Integrations → Add custom webhook.
- Укажите URL вашего endpoint и выберите события.
- Протестируйте используя Ghost's Test Webhook.
Почему Zapier — не единственный вариант для интеграции Ghost?
Ghost имеет официальный Zapier app. Примеры Zaps:
| Zap | Действие |
|---|---|
| Ghost → Slack | Уведомление в канал при публикации |
| Ghost → Twitter/X | Автопостинг с заголовком и ссылкой |
| Ghost → Airtable | Логирование новых членов |
| Ghost → ConvertKit | Добавление подписчиков в email-последовательность |
Для нестандартных событий — Zapier Webhooks (Catch Hook): Trigger: Ghost webhook → Zapier Webhook URL, Action: POST to Zapier → любое действие в 6000+ сервисов.
Zapier ограничивает кастомизацию: вы не можете менять формат данных, добавлять условную логику или фильтровать события. Кастомный webhook-обработчик решает эти задачи — например, для кросс-постинга в соцсети с обрезкой текста:
// При post.published
async function crossPost(post: GhostPost) {
const text = `${post.title}\n\n${post.excerpt || ''}\n\n${post.url}`;
// Twitter/X через API v2
await twitterClient.v2.tweet({
text: text.substring(0, 280),
});
// Telegram
await bot.sendMessage(CHANNEL_ID, text, {
parse_mode: 'HTML',
reply_markup: {
inline_keyboard: [[{ text: 'Читать', url: post.url }]],
},
});
} Сравнение Zapier и кастомного webhook-обработчика
| Критерий | Zapier | Кастомный webhook |
|---|---|---|
| Скорость запуска | 1–2 часа | 4–8 часов (базовый) |
| Кастомизация | Низкая | Высокая |
| Логика (условия, фильтры) | Ограничена | Полная |
| Стоимость | Подписка + тарифы | Единоразовая разработка |
| Количество интеграций | 6000+ сервисов | Любые с API |
| Безопасность (верификация) | Встроенная | Реализуется в коде |
Кастомный webhook в 3 раза гибче Zapier в части обработки данных: можно менять формат, добавлять фильтры и условные переходы. Это снижает операционные расходы на 20–30%. Закажите разработку кастомного обработчика для нестандартных сценариев.
Что входит в нашу работу по интеграции Ghost
Мы предоставляем:
- Документацию: схему webhook-событий, примеры запросов/ответов, инструкцию по развертыванию.
- Доступы: к репозиторию кода, документации, тестовому окружению.
- Обучение: как добавить новый webhook или изменить логику.
- Поддержку: фикс багов и обновления под новые версии Ghost.
Настройка 2–3 webhook-интеграций (Slack + Telegram + sitemap rebuild) — 4–8 часов. Zapier-автоматизации без кода — 1–2 часа.
Свяжитесь с нами для оценки проекта: мы проанализируем ваши сценарии, предложим оптимальное решение — Zapier или кастомный webhook. Получите консультацию по вашему проекту. Обратитесь к нам для аудита ваших процессов интеграции — мы найдем точки автоматизации.







