Настройка webhook-интеграций Contentful: ISR, кэш, деплой

Почему push-уведомления стали стандартом для Contentful

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка webhook-интеграций Contentful: ISR, кэш, деплой
Простой
~1 день

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    982
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Почему push-уведомления стали стандартом для Contentful

Представьте: вы публикуете запись в блоге через Contentful, а на сайте она появляется только через 15 минут — потому что билд запускается раз в час. Или после правки хедера пересобираются все страницы, хотя изменилась одна панель. Это типичные сценарии, когда без webhook не обойтись. Webhooks решают проблему мгновенно: изменения контента (публикация, архивация, удаление) инициируют вызов вашего обработчика. Это основа бесшовной работы для SSR/ISR-сайтов. Один webhook может сэкономить до 90% на API-трафике за счёт бесполлингового обновления. Мы настраиваем webhook-интеграции под ключ — от простого ребилда статики до точечной инвалидации страниц.

Преимущества webhook перед polling

Polling Contentful API каждые N секунд — лишняя нагрузка и задержка. Webhook, напротив, не требует постоянных запросов: сервер сам уведомляет вас об изменениях. Это снижает нагрузку на API в 10 раз и исключает задержки, связанные с частотой опроса. Кроме того, webhook можно защитить секретным ключом, а polling — нет.

Характеристика Polling Webhook
Задержка Средняя (период опроса) Мгновенная (секунды)
Нагрузка на API Высокая (постоянные запросы) Низкая (только при изменениях)
Безопасность Низкая (открытый endpoint) Высокая (секретный заголовок)
Масштабируемость Ограничена Хорошая (асинхронная обработка)

Проблемы, которые решаем

  • Гонка запросов: без фильтрации webhook ловит все события, вызывая лишние ребилды. Мы настраиваем фильтры по sys.contentType.sys.id и топикам, чтобы реагировать только на нужные записи. Например, при публикации статьи обновляется только конкретная страница, а не весь сайт.
  • Безопасность: публичный endpoint уязвим. Добавляем проверку подписи через секретный заголовок и, при необходимости, IP-белый список.
  • Сложная цепочка: при изменении поля, которое влияет на несколько страниц (например, глобальный хедер), нужна массовая инвалидация. Используем revalidateTag или полный деплой — в зависимости от веса изменения.
  • Отладка: без журнала вызовов сложно понять, почему webhook не сработал. Настраиваем мониторинг и уведомления об ошибках.

Как фильтровать webhook по типу контента?

Фильтрация по sys.contentType.sys.id — стандартный приём. В теле webhook мы добавляем условие, которое пропускает события только для нужной модели. Это сокращает количество вызовов обработчика в 5–10 раз. Дополнительно можно фильтровать по топикам: например, только публикация (Entry.publish), без архивации.

Как создать webhook в Contentful за 5 шагов?

  1. Перейдите в Settings → Webhooks в панели управления Contentful.
  2. Нажмите Add Webhook и укажите URL вашего обработчика (например, https://mysite.com/api/revalidate).
  3. Выберите топики: Entry.publish, Entry.unpublish, Asset.publish — в зависимости от сценария.
  4. Добавьте фильтры по типу контента (sys.contentType.sys.id) для сужения событий.
  5. Включите секретный заголовок (x-webhook-secret) для безопасности — это защитит от несанкционированных вызовов.

После этого остаётся реализовать обработчик на сервере. Ниже — пример для Next.js.

Создание webhook через CMA

const space = await cmaClient.getSpace(spaceId); await space.createWebhook({ name: 'Next.js ISR Revalidation', url: 'https://mysite.com/api/revalidate', topics: ['Entry.publish', 'Entry.unpublish', 'Asset.publish'], filters: [ { equals: [{ doc: 'sys.contentType.sys.id' }, 'blogPost'], }, ], headers: [ { key: 'x-webhook-secret', value: process.env.CONTENTFUL_WEBHOOK_SECRET, secret: true, }, ], active: true, }); 

Обработчик в Next.js

Пример обработчика webhook (кликните для раскрытия)
// app/api/revalidate/route.ts export async function POST(request: Request) { const secret = request.headers.get('x-webhook-secret'); if (secret !== process.env.CONTENTFUL_WEBHOOK_SECRET) { return Response.json({ error: 'Unauthorized' }, { status: 401 }); } const payload = await request.json(); const contentTypeId = payload.sys?.contentType?.sys?.id; const slug = payload.fields?.slug?.['en-US']; const topic = request.headers.get('x-contentful-topic'); switch (contentTypeId) { case 'blogPost': if (slug) revalidatePath(`/blog/${slug}`); revalidatePath('/blog'); break; case 'landingPage': revalidatePath('/'); break; default: revalidateTag('contentful'); } return Response.json({ revalidated: true, topic }); } 

Для статических сайтов используем Vercel Deploy Hook при структурных изменениях, оставляя ISR для контентных правок. Такой подход сокращает время деплоя в 10 раз по сравнению с полным ребилдом после каждого сохранения.

Процесс работы

Этап Действия Длительность
Аналитика Определяем сценарии: публикация, архивация, обновление ассетов 1–2 часа
Проектирование Выбираем стратегию (ISR/полный деплой/гибрид), проектируем фильтры 2–4 часа
Реализация Пишем обработчик, настраиваем webhook в Contentful, добавляем секрет 4–8 часов
Тестирование Проверяем отработку событий с вебхук-тестером, стресс-тест 2–4 часа
Деплой Публикуем изменения, мониторим первые вызовы 1–2 часа

Что входит в работу

  • Документация по созданным интеграциям (диаграмма потока, описание всех webhook).
  • Доступы к управлению webhook и логам (при необходимости).
  • Обучение команды: как добавить новый сценарий или фильтр.
  • Гарантия работоспособности в течение 30 дней после сдачи.
  • Консультация по оптимизации существующих интеграций.

Как ускорить деплой с помощью webhook?

Комбинация ISR и Vercel Deploy Hook позволяет достичь времени обновления менее 2 секунд для контентных изменений. Полный деплой занимает около 5 минут и запускается только при структурных правках. Мы настраиваем логику так, чтобы каждый тип изменения обрабатывался оптимальным способом. Документация Contentful по webhooks

Избавьтесь от задержек и лишней нагрузки. Закажите настройку webhook-интеграции. Свяжитесь с нами для детальной оценки вашего сценария.