2Slides Logo
HubSpot + AI-презентации: Автоматизация продающих презентаций (2026)
2Slides Team
14 min read

HubSpot + AI Презентации: Руководство по автоматизации продажных презентаций (2026)

Для отделов продаж, работающих на HubSpot в 2026 году, ROI автоматизации персонализированных презентаций для каждого клиента измеряем: средняя экономия времени менеджера по продажам составляет 2–4 часа в неделю, рост конверсии от встречи к встрече на 12–18% и сокращение разброса в качестве подготовки презентаций на 30-60% по всей команде. Рабочий процесс HubSpot + 2Slides 2026 года генерирует полностью персонализированную продажную презентацию для любого клиента, используя данные уже имеющиеся в HubSpot (компания, этап сделки, интерес к продукту, контакт чемпиона, конкурентные альтернативы) через три пути интеграции: HubSpot Workflow → Webhook → 2Slides API; пользовательская карточка HubSpot App с кнопкой «Создать презентацию»; запланированная ежедневная обработка всех сделок на определённом этапе. Это руководство включает точный формат webhook-запроса, шаблон промпта, который преобразует поля HubSpot в контент презентации, и поток 2Slides API (generate → jobs/:id → download), используемый реальными командами RevOps в продакшене сегодня.

Если вы управляете операциями по работе с выручкой для отдела продаж на HubSpot, вы уже знаете проблему: каждый менеджер по продажам просит маркетинг или отдел поддержки продаж «лишь немного подправить» презентацию перед следующим звонком. Умножьте это на сорок сотрудников и триста активных сделок, и у вас появится работа на полную ставку — склеивать шаблоны Google Slides с CRM-данными в стиле Salesforce — за исключением того, что вы работаете на HubSpot, где нет нативного эквивалента модуля Document Generation из Salesforce.

Это руководство показывает, как подключить HubSpot к 2Slides V1 API, чтобы любая сделка на любом этапе могла породить персонализированную, соответствующую бренду, готовую к использованию продажную презентацию — без участия человека в работе с мастер-слайдами. Приведённые ниже паттерны используются командами RevOps в B2B SaaS, кибербезопасности и корпоративных AI-компаниях для управления средней стоимостью контрактов от $40K до $400K+.

Почему презентации на основе HubSpot побеждают

Бизнес-обоснование автоматизации торговых презентаций из HubSpot основано на трёх измеримых рычагах.

Рычаг 1: Высвобожденное время менеджеров по продажам. Внутренние наблюдения за клиентами 2Slides с внедрением на 20+ рабочих мест показывают, что менеджеры по работе с клиентами тратят 2–4 часа в неделю на кастомизацию презентаций — переписывание вводных слайдов, обновление логотипов, вставку слабых сторон конкурентов, замену калькуляторов ROI. При полной стоимости менеджера по продажам $160K/год это составляет $6,400–$12,800 на одного менеджера в год чистого труда над слайдами. Для команды из 40 продавцов вы получаете консервативные $256K/год восстановленной производительности.

Рычаг 2: Конверсия встреча-к-встрече. Презентации, сгенерированные из живых данных CRM — то есть фактического диапазона выручки компании, реальной должности лица, принимающего решение, конкурента, действительно указанного в записи о сделке — конвертируют бронирование следующей встречи на 12–18% выше, чем стандартные шаблонные презентации. Причина проста: конкретика сигнализирует о подготовленности, а подготовленность сигнализирует, что продавец заслуживает второй встречи.

Рычаг 3: Снижение разброса. Ваши топ-25% менеджеров создают отличные презентации. Нижние 25% создают посредственные презентации, которые сливают воронку продаж. Автоматизация подтягивает отстающих. По когортным данным команды RevOps, использующие генерацию презентаций на основе HubSpot, сообщают о снижении разброса качества презентаций на 30–60%, измеренном по оценкам QA руководителей.

Общая закономерность всех трёх: презентация — это не продукт, подготовка — это продукт. Автоматизация подготовки — это самый эффективный шаг, который может сделать RevOps в 2026 году. Для более глубокого погружения в сторону активации продаж смотрите наше руководство о том, как создавать презентации для активации продаж с помощью AI.

Архитектура HubSpot + 2Slides 2026

Прежде чем погрузиться в каждый метод, вот архитектура, которой следует каждая реализация:

HubSpot CRM (сделки, компании, контакты) ├── Триггер (workflow, app card, cron) Слой трансформации (serverless fn / Zapier / Make) │ - Создает промпт из полей CRM │ - Вызывает 2Slides V1 API 2Slides V1 API ├── POST /api/v1/slides/generate (возвращает jobId) ├── GET /api/v1/jobs/{id} (опрос до status = success) └── GET /api/v1/slides/download-slides-pages-voices (URL ресурсов) Доставка (обратно в сделку HubSpot как заметка, email менеджеру, Slack DM)

API 2Slides не сохраняет состояние для каждой задачи, асинхронный и работает по кредитной системе. Аутентификация выполняется с помощью заголовка API-ключа

x-api-key: sk-2slides-...
. Каждая генерация презентации немедленно возвращает
jobId
, и вы опрашиваете
/api/v1/jobs/{id}
до тех пор, пока статус не перейдет из
pending
processing
success
. После успешного завершения вы получаете финальные файлы PPTX, PDF или URL отдельных слайдов.

Метод 1: HubSpot Workflow → Webhook → 2Slides API

Это наиболее распространенный путь интеграции. Рабочий процесс HubSpot отслеживает изменение этапа в воронке сделок и отправляет webhook на бессерверную функцию, которая взаимодействует с 2Slides API.

Шаг 1: Создание рабочего процесса HubSpot

В HubSpot перейдите в Автоматизация → Рабочие процессы → Создать рабочий процесс → На основе сделок. Настройте триггер регистрации:

  • Фильтр:
    Этап сделки
    — любой из
    Обнаружение завершено
    ,
    Демо запланировано
    ,
    Предложение отправлено
  • Повторная регистрация: включена при изменении этапа

Добавьте действие Отправить webhook:

  • Метод:
    POST
  • URL:
    https://your-revops-fn.vercel.app/api/hubspot/generate-deck
  • Включите группы свойств
    сделка
    ,
    связанная компания
    и
    основной контакт

Шаг 2: Функция-трансформер

Разверните это на Vercel, Cloudflare Workers или AWS Lambda. Функция получает webhook от HubSpot, формирует промпт для 2Slides и запускает генерацию.

// /api/hubspot/generate-deck.ts export async function POST(req: Request) { const payload = await req.json() const deal = payload.properties const company = payload.associations?.company?.properties ?? {} const contact = payload.associations?.contact?.properties ?? {} const prompt = buildDeckPrompt({ deal, company, contact }) const generateRes = await fetch('https://2slides.com/api/v1/slides/generate', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': process.env.TWOSLIDES_API_KEY!, }, body: JSON.stringify({ prompt, slide_count: 12, language: 'en', aspect_ratio: '16:9', theme_id: process.env.BRAND_THEME_ID, // ваша фиксированная фирменная тема metadata: { hubspot_deal_id: deal.hs_object_id, account: company.name, }, }), }) const { jobId } = await generateRes.json() // Сохраните связь jobId → сделка для последующего поиска await kv.set(`deal:${deal.hs_object_id}:job`, jobId, { ex: 86400 }) return Response.json({ ok: true, jobId }) }

Шаг 3: Опрос и доставка

Вторая функция (вызываемая Vercel Cron каждые 90 секунд или с помощью отложенного повторного входа в рабочий процесс HubSpot) опрашивает

/api/v1/jobs/{id}
и при успехе записывает URL презентации обратно в сделку в виде заметки:

const jobRes = await fetch(`https://2slides.com/api/v1/jobs/${jobId}`, { headers: { 'x-api-key': process.env.TWOSLIDES_API_KEY! }, }) const job = await jobRes.json() if (job.status === 'success') { const assets = await fetch( `https://2slides.com/api/v1/slides/download-slides-pages-voices?jobId=${jobId}`, { headers: { 'x-api-key': process.env.TWOSLIDES_API_KEY! } } ).then(r => r.json()) await hubspotClient.crm.objects.notes.basicApi.create({ properties: { hs_note_body: `Свежая презентация готова: ${assets.pptx_url}`, hs_timestamp: Date.now(), }, associations: [{ to: { id: deal.hs_object_id }, types: [{ category: 'HUBSPOT_DEFINED', typeId: 214 }] }], }) }

Это тот же паттерн, который мы используем в нашей автоматизации еженедельных отчетов с Zapier — вызов генерации, опрос, доставка — только через HubSpot вместо Zapier.

Метод 2: Карточка приложения HubSpot с кнопкой генерации презентации

Метод 1 выполняется автоматически. Метод 2 работает по запросу: менеджер по продажам открывает сделку в HubSpot, видит пользовательскую карточку на правой боковой панели, нажимает Создать презентацию, и презентация приходит на его почту через две минуты.

Для этого используется UI Extension HubSpot (часть платформы Developer Projects).

Код UI Extension

// src/app/extensions/DealDeckCard.tsx import { hubspot, Button, Flex, Text, Alert, LoadingSpinner, } from '@hubspot/ui-extensions' import { useState } from 'react' hubspot.extend(({ context, runServerlessFunction }) => ( <DeckCard context={context} runServerless={runServerlessFunction} /> )) function DeckCard({ context, runServerless }) { const [state, setState] = useState<'idle' | 'working' | 'done' | 'error'>('idle') const [deckUrl, setDeckUrl] = useState<string | null>(null) async function onClick() { setState('working') const { response } = await runServerless({ name: 'generateDeck', parameters: { dealId: context.crm.objectId }, }) if (response.deckUrl) { setDeckUrl(response.deckUrl) setState('done') } else { setState('error') } } return ( <Flex direction="column" gap="sm"> <Text>Создайте персонализированную презентацию для продаж для этого аккаунта с помощью 2Slides.</Text> {state === 'idle' && <Button onClick={onClick}>Создать презентацию</Button>} {state === 'working' && <LoadingSpinner label="Создание презентации (90–120 сек)" />} {state === 'done' && deckUrl && ( <Alert title="Презентация готова"> <a href={deckUrl} target="_blank" rel="noreferrer">Открыть презентацию</a> </Alert> )} {state === 'error' && <Alert variant="danger">Создание не удалось — проверьте логи RevOps.</Alert>} </Flex> ) }

Serverless-функция

Вызываемая serverless-функция (

generateDeck
) находится в том же проекте приложения HubSpot и использует тот же процесс вызова
/api/v1/slides/generate
+
/api/v1/jobs/{id}
, что и Метод 1, но ожидает завершения задачи (или тайм-аута) перед возвратом URL презентации в карточку.

// src/app/app.functions/generateDeck.js exports.main = async (context) => { const { dealId } = context.parameters const deal = await hubspotFetchDeal(dealId) const prompt = buildDeckPrompt(deal) const gen = await fetch('https://2slides.com/api/v1/slides/generate', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': process.env.TWOSLIDES_API_KEY }, body: JSON.stringify({ prompt, slide_count: 12, theme_id: process.env.BRAND_THEME_ID }), }).then(r => r.json()) // Опрос до 3 минут for (let i = 0; i < 36; i++) { await new Promise(r => setTimeout(r, 5000)) const job = await fetch(`https://2slides.com/api/v1/jobs/${gen.jobId}`, { headers: { 'x-api-key': process.env.TWOSLIDES_API_KEY }, }).then(r => r.json()) if (job.status === 'success') { return { deckUrl: job.result?.pptx_url } } if (job.status === 'failed') throw new Error(job.error || 'generation failed') } throw new Error('timeout') }

Этот паттерн — объект CRM → карточка расширения → API-вызов → встроенный результат — это тот же подход, который используют маркетинговые команды для масштабирования создания контента; смотрите как маркетинговые команды создают AI-презентации в масштабе.

Метод 3: Генерация по расписанию

Не каждую презентацию нужно создавать по требованию. Для предсказуемых обзоров воронки — каждый понедельник утром, каждый квартальный бизнес-обзор, каждое обновление этапа MEDDPICC — запланированная по расписанию генерация дешевле и надёжнее, чем вебхуки в реальном времени.

Паттерн

Запускайте ночное задание, которое опрашивает HubSpot на наличие всех сделок на целевом этапе, генерирует свежую презентацию для каждой и отправляет менеджеру по продажам утреннюю сводку по email.

// /api/cron/nightly-deck-refresh.ts export const runtime = 'nodejs' export const maxDuration = 300 export async function GET(req: Request) { // Vercel Cron защищён с помощью CRON_SECRET if (req.headers.get('authorization') !== `Bearer ${process.env.CRON_SECRET}`) { return new Response('Unauthorized', { status: 401 }) } const deals = await hubspotClient.crm.deals.searchApi.doSearch({ filterGroups: [{ filters: [ { propertyName: 'dealstage', operator: 'EQ', value: 'proposal_sent' }, { propertyName: 'hs_lastmodifieddate', operator: 'GT', value: String(Date.now() - 86400000) }, ], }], properties: ['dealname', 'amount', 'competitor', 'product_interest', 'champion_title'], limit: 100, }) const jobs = await Promise.all(deals.results.map(async (deal) => { const prompt = buildDeckPrompt(deal) const res = await fetch('https://2slides.com/api/v1/slides/generate', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': process.env.TWOSLIDES_API_KEY! }, body: JSON.stringify({ prompt, slide_count: 10, theme_id: process.env.BRAND_THEME_ID }), }).then(r => r.json()) return { dealId: deal.id, jobId: res.jobId, owner: deal.properties.hubspot_owner_id } })) await enqueueDeliveryJobs(jobs) // SQS / Upstash QStash / Trigger.dev return Response.json({ enqueued: jobs.length }) }

Настройте расписание в

vercel.json
:

{ "crons": [ { "path": "/api/cron/nightly-deck-refresh", "schedule": "0 6 * * 1-5" } ] }

Шесть утра, будние дни. Менеджер открывает email — презентация готова.

Шаблон промпта, который превращает поля CRM в содержимое презентации

Самый важный фактор качества презентации — это промпт. Хорошие промпты кодируют то, что опытный менеджер по продажам сказал бы новичку: "когда компания X, с чемпионом в роли Y, сфокусированная на результате Z, строй презентацию вот так." Готовый к вставке шаблон:

function buildDeckPrompt({ deal, company, contact }: Ctx) { return ` Создай торговую презентацию на 10-12 слайдов для B2B оценки программного обеспечения. КОНТЕКСТ АККАУНТА - Компания: ${company.name} - Отрасль: ${company.industry ?? 'не указано'} - Диапазон годовой выручки: ${company.annualrevenue ?? 'не указано'} - Сотрудников: ${company.numberofemployees ?? 'не указано'} - Веб-сайт: ${company.domain} КОНТЕКСТ СДЕЛКИ - Этап сделки: ${deal.dealstage} - Сумма сделки: $${deal.amount} - Интерес к продукту: ${deal.product_interest} - Приоритетный сценарий использования: ${deal.primary_use_case} - Список конкурентов: ${deal.competitors /* через запятую */} - График оценки: ${deal.close_date} КОНТЕКСТ ЧЕМПИОНА - Имя: ${contact.firstname} ${contact.lastname} - Должность: ${contact.jobtitle} - Заявленные приоритеты: ${contact.priorities} СТРУКТУРА ПРЕЗЕНТАЦИИ 1. Титульный слайд — "${company.name} × <Ваш бренд>: ${deal.primary_use_case}" 2. Их мир сегодня — 3 пункта, специфичные для ${company.industry} 3. Цена бездействия — квантифицируй используя диапазон ${company.annualrevenue} 4. Наш подход — 3 столпа, соответствующие ${deal.primary_use_case} 5. Доказательства — 2 кейс-стади из ${company.industry} (или смежной) 6. Отличия от ${deal.competitors} — см. раздел боевых карт ниже 7. План внедрения — 30/60/90 настроенный под ${deal.close_date} 8. Коммерческая сводка — диапазон привязан к $${deal.amount} 9. Риски и способы их снижения 10. Следующие шаги — соответствуют ${deal.dealstage} ТОНАЛЬНОСТЬ - Соответствуй аудитории: ${contact.jobtitle} - Формальный тон если должность включает VP, SVP, Chief, Director; разговорный в остальных случаях. - Каждый слайд: одна идея, один график или одна цитата, никаких стен текста. `.trim() }

Храни шаблон под контролем версий. Когда маркетинг обновляет фреймворк сообщений, ты меняешь один файл, и следующий запуск cron это подхватывает.

Работа с конкурентными альтернативами

Поле

deal.competitors
в HubSpot — будь то пользовательское текстовое поле, множественный выбор или выпадающий список — это золото. Добавьте блок battlecard в промпт условно:

const BATTLECARDS: Record<string, string> = { 'Competitor A': ` Competitor A позиционируется на <их утверждение>. Контраргумент: <ваш доказательный аргумент> + <слоган из 3 слов>. Минирующий вопрос: "Когда был опубликован их последний аудит безопасности?" `, 'Competitor B': ` Competitor B ведёт с <их угол>. Контраргумент: <ваш контраргумент> — сослаться на кейс перехода <имя клиента>. Минирующий вопрос: "Спросите про их лимиты на пользователя после 500 юзеров." `, } function battlecardSection(competitorsCsv: string) { const names = competitorsCsv.split(',').map(s => s.trim()).filter(Boolean) if (!names.length) return '' return ` КОНКУРЕНТНЫЕ BATTLECARDS ${names.map(n => BATTLECARDS[n] ?? '').filter(Boolean).join('\n')} Используйте это для заполнения слайда Дифференциация. Никогда не упоминайте конкурента больше двух раз. `.trim() }

Добавьте результат

battlecardSection(deal.competitors)
к вашему промпту. Теперь презентация содержит конкурентное позиционирование уровня AE — того типа, который обычно требует тридцатиминутного звонка с руководителем отдела конкурентной разведки.

Храните battlecards в таблице базы данных, а не хардкодите их, когда у вас будет больше десяти. Ваш Head of Product Marketing сможет редактировать их без подачи PR.

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

Как остановить HubSpot от создания дубликатов презентаций при каждом обновлении свойства?

Добавьте свойство с именем

last_deck_generated_at
к объекту сделки и включите фильтр в HubSpot Workflow:
last_deck_generated_at
неизвестно или прошло более 7 дней. Ваша функция-трансформер должна записывать эту временную метку обратно в HubSpot через Deal API после успешного создания. Только это предотвращает 90% ненужных API-вызовов.

Сколько это стоит в кредитах 2Slides?

Каждый вызов

/api/v1/slides/generate
списывает кредиты в зависимости от количества слайдов и дополнительных опций (генерация изображений, голосовое озвучивание). Для типичной 10-слайдовой презентации продаж с брендированными изображениями закладывайте 20–40 кредитов на презентацию. Команда RevOps, создающая 500 презентаций в месяц, укладывается в диапазон $150–$400 — намного меньше, чем стоит работа менеджера по работе с клиентами на одной корпоративной сделке.

Могу ли я создать презентацию на языке, отличном от английского?

Да. Передайте

language: 'de'
,
language: 'ja'
,
language: 'es'
и т. д. в теле запроса
/api/v1/slides/generate
. Шаблон промпта также должен включать локализованное вступление, когда в контактной записи вашего ключевого пользователя указан предпочитаемый неанглийский язык.

Как зафиксировать визуальный бренд, чтобы каждая презентация выглядела одинаково?

Используйте фиксированный

theme_id
в каждом запросе создания. Создайте тему бренда один раз в интерфейсе 2Slides, скопируйте её ID и сохраните как
BRAND_THEME_ID
в переменных окружения. Тема контролирует шрифты, палитру, размещение логотипа и мастер-макеты — таким образом контент меняется для каждого аккаунта, а визуальное оформление остаётся идентичным до пикселя.

Что делать, если задача создания завершилась с ошибкой?

Опрашивайте

/api/v1/jobs/{id}
и проверяйте
status
. При статусе
failed
ответ содержит
error
с машиночитаемым кодом. Повторите попытку один раз с экспоненциальной задержкой; если ошибка повторится, отправьте уведомление в Slack-канал RevOps и используйте статичный шаблон презентации, чтобы менеджер по продажам не был заблокирован перед звонком.

Вывод

HubSpot не пытается стать Salesforce, и это нормально — простота является его главным преимуществом. Но простота также означает, что платформа не предлагает встроенной автоматизации документов. Этот пробел — это особенность, а не ошибка, потому что команда RevOps, которая подключает HubSpot к API для создания презентаций с помощью AI, получает контроль над самым ценным элементом своего стека продаж: презентацией, которая попадает к покупателю.

Три метода выше — вебхук рабочего процесса, кнопка карточки приложения, запланированная пакетная обработка — охватывают весь спектр триггеров генерации, которые нужны отделу продаж. Выберите тот, который соответствует этапу вашей воронки. Этапы Discovery и Demo почти всегда требуют генерации по запросу (карточка приложения). Этапы Proposal и Negotiation больше всего выигрывают от автоматизации при изменении стадии (вебхук рабочего процесса). Обзоры воронки продаж и подготовка QBR — это пакетная обработка (cron). Используйте все три метода, и каждая сделка в воронке будет иметь свежую презентацию с актуальными данными из CRM в пределах досягаемости, каждый день.

Автоматизируйте создание презентаций для продаж из HubSpot — получите API-ключ 2Slides и интегрируйте его в свой следующий рабочий процесс менее чем за день.

About 2Slides

Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.

Try For Free