2Slides Logo
HubSpot + AI Präsentationen: Sales Deck Automatisierung Playbook (2026)
2Slides Team
13 min read

HubSpot + KI-Präsentation: Playbook zur Automatisierung von Sales Decks (2026)

Für Sales-Teams auf HubSpot im Jahr 2026 ist der ROI der Automatisierung kontobasierter Sales Decks messbar: durchschnittliche Zeitersparnis von 2–4 Stunden pro Woche je AE, eine Steigerung der Meeting-zu-Meeting-Conversion um 12–18 % und eine Reduktion der Deck-Erstellungsvarianz im Team um 30–60 %. Der HubSpot + 2Slides Workflow 2026 generiert ein vollständig personalisiertes Sales Deck für jeden Account anhand von Daten, die bereits in HubSpot vorliegen (Unternehmen, Deal-Phase, Produktinteresse, Champion-Kontakt, konkurrierende Alternativen) über drei Integrationspfade: HubSpot Workflow → Webhook → 2Slides API; benutzerdefinierte HubSpot App Card mit Generate-Deck-Button; geplanter täglicher Batch für alle Deals in einer bestimmten Phase. Dieses Playbook enthält das exakte Webhook-Payload, das Prompt-Template, das HubSpot-Felder in Deck-Inhalte umwandelt, sowie den 2Slides API-Flow (generate → jobs/:id → download), der heute von echten RevOps-Teams produktiv eingesetzt wird.

Wenn Sie Revenue Operations für ein Sales-Team auf HubSpot leiten, kennen Sie das Problem bereits: Jeder AE bittet Marketing oder Sales Enablement um „nur eine kleine Anpassung" des Decks vor dem nächsten Call. Multiplizieren Sie das mit vierzig Vertriebsmitarbeitern und dreihundert laufenden Deals, und Sie haben einen Vollzeitjob darin, Google Slides-Templates mit CRM-Daten im Salesforce-Stil zu verknüpfen – nur dass Sie HubSpot nutzen, das über kein natives Äquivalent zum Salesforce Document Generation-Modul verfügt.

Dieses Playbook zeigt Ihnen, wie Sie HubSpot mit der 2Slides V1 API verbinden, sodass jeder Deal in jeder Phase ein personalisiertes, markenkonformes, vertriebsbereites Sales Deck erzeugen kann – ohne dass ein Mensch einen Folienmaster anfassen muss. Die nachfolgenden Patterns werden von RevOps-Teams in B2B-SaaS-, Cybersecurity- und Enterprise-AI-Unternehmen eingesetzt, um durchschnittliche Vertragswerte von 40.000 $ bis über 400.000 $ zu erzielen.

Warum HubSpot-gesteuerte Präsentationen gewinnen

Der Business Case für die Automatisierung von Sales Decks aus HubSpot ergibt sich aus drei messbaren Hebeln.

Hebel 1: Zurückgewonnene AE-Zeit. Interne Beobachtungen bei 2Slides-Kunden mit 20+ Lizenz-Deployments zeigen, dass Account Executives 2–4 Stunden pro Woche für die Deck-Anpassung aufwenden — Umschreiben von Intro-Folien, Aktualisieren von Logos, Einfügen von Schwächen der Konkurrenz, Austauschen von ROI-Rechnern. Bei vollständig belasteten AE-Kosten von 160.000 $/Jahr entspricht dies 6.400–12.800 $ pro AE pro Jahr an reiner Folienarbeit. Bei einem 40-köpfigen Vertriebsteam sprechen wir von konservativ geschätzten 256.000 $/Jahr an zurückgewonnener Kapazität.

Hebel 2: Meeting-zu-Meeting-Conversion. Decks, die aus Live-CRM-Daten generiert werden — also der tatsächlichen Umsatzklasse des Unternehmens, dem tatsächlichen Titel des Champions, dem tatsächlich im Deal-Datensatz aufgeführten Wettbewerber — konvertieren Folgemeetings 12–18 % höher als generische Vorlagen-Decks. Der Grund ist einfach: Spezifität signalisiert Vorbereitung, und Vorbereitung signalisiert, dass ein Vertriebsmitarbeiter ein zweites Meeting wert ist.

Hebel 3: Varianzreduktion. Ihre Top-Quartil-AEs erstellen großartige Decks. Ihr unteres Quartil erstellt mittelmäßige Decks, die Pipeline verlieren. Automatisierung hebt das untere Level an. In Kohortendaten berichten RevOps-Teams, die HubSpot-gesteuerte Deck-Generierung nutzen, von einer 30–60%igen Reduktion der Deck-Qualitätsvarianz, gemessen an Manager-QA-Scores.

Das gemeinsame Muster bei allen drei: Das Deck ist nicht das Produkt, die Vorbereitung ist das Produkt. Die Automatisierung der Vorbereitung ist der wirkungsvollste Schritt, den RevOps 2026 machen kann. Für einen tieferen Einblick in die Enablement-Seite siehe unseren Leitfaden zu wie man Sales Enablement Decks mit AI erstellt.

Die 2026 HubSpot + 2Slides Architektur

Bevor wir auf jede Methode eingehen, hier die Architektur, die jede Implementierung befolgt:

HubSpot CRM (Deals, Unternehmen, Kontakte) ├── Trigger (Workflow, App-Karte, Cron) Transformer-Schicht (Serverless Fn / Zapier / Make) │ - Erstellt Prompt aus CRM-Feldern │ - Ruft 2Slides V1 API auf 2Slides V1 API ├── POST /api/v1/slides/generate (gibt jobId zurück) ├── GET /api/v1/jobs/{id} (Polling bis Status = success) └── GET /api/v1/slides/download-slides-pages-voices (Asset-URLs) Zustellung (zurück zu HubSpot Deal als Notiz, E-Mail an AE, Slack DM)

Die 2Slides API ist zustandslos pro Job, asynchron und credit-basiert abgerechnet. Sie authentifizieren sich mit einem API-Schlüssel-Header

x-api-key: sk-2slides-...
. Jede Deck-Generierung gibt sofort eine
jobId
zurück, und Sie pollen
/api/v1/jobs/{id}
, bis der Status von
pending
processing
success
wechselt. Sobald erfolgreich, rufen Sie die finale PPTX, PDF oder Pro-Seite-Asset-URLs ab.

Methode 1: HubSpot Workflow → Webhook → 2Slides API

Dies ist der gängigste Integrationsweg. Ein HubSpot Workflow überwacht Änderungen der Phase in der Deal-Pipeline und löst einen Webhook zu einer serverlosen Funktion aus, die mit der 2Slides API kommuniziert.

Schritt 1: HubSpot Workflow erstellen

Gehen Sie in HubSpot zu Automation → Workflows → Workflow erstellen → Deal-basiert. Legen Sie den Registrierungs-Trigger fest:

  • Filter:
    Deal-Phase
    ist eine von
    Discovery Complete
    ,
    Demo Scheduled
    ,
    Proposal Sent
  • Erneute Registrierung: bei Phasenwechsel aktiviert

Fügen Sie eine Webhook senden-Aktion hinzu:

  • Methode:
    POST
  • URL:
    https://your-revops-fn.vercel.app/api/hubspot/generate-deck
  • Schließen Sie
    deal
    ,
    associated company
    und
    primary contact
    Property-Gruppen ein

Schritt 2: Transformer-Funktion

Deployen Sie dies auf Vercel, Cloudflare Workers oder AWS Lambda. Die Funktion empfängt den HubSpot Webhook, erstellt den 2Slides Prompt und startet die Generierung.

// /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, // Ihr gesperrtes Marken-Theme metadata: { hubspot_deal_id: deal.hs_object_id, account: company.name, }, }), }) const { jobId } = await generateRes.json() // JobId → Deal-Zuordnung für spätere Abfrage speichern await kv.set(`deal:${deal.hs_object_id}:job`, jobId, { ex: 86400 }) return Response.json({ ok: true, jobId }) }

Schritt 3: Abfragen und Bereitstellen

Eine zweite Funktion (aufgerufen durch einen Vercel Cron alle 90 Sekunden oder durch verzögerten Workflow-Wiedereintritt in HubSpot) fragt

/api/v1/jobs/{id}
ab und schreibt bei Erfolg die Deck-URL als Engagement-Notiz zum Deal zurück:

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: `Frische Präsentation bereit: ${assets.pptx_url}`, hs_timestamp: Date.now(), }, associations: [{ to: { id: deal.hs_object_id }, types: [{ category: 'HUBSPOT_DEFINED', typeId: 214 }] }], }) }

Dies ist das gleiche Muster, das wir in unserer Zapier Wochenbericht-Automatisierung verwenden — ein Generierungsaufruf, eine Abfrage, eine Bereitstellung — nur über HubSpot statt Zapier geleitet.

Methode 2: HubSpot App-Karte mit Deck-Generieren-Button

Methode 1 ist automatisch. Methode 2 ist auf Abruf: Der AE öffnet einen Deal in HubSpot, sieht eine benutzerdefinierte Karte in der rechten Seitenleiste, klickt auf Deck generieren, und das Deck landet zwei Minuten später in seinem Posteingang.

Dies verwendet eine HubSpot UI Extension (Teil der Developer Projects-Plattform).

UI Extension Code

// 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>Generieren Sie ein personalisiertes Verkaufsdeck für dieses Konto mit 2Slides.</Text> {state === 'idle' && <Button onClick={onClick}>Deck generieren</Button>} {state === 'working' && <LoadingSpinner label="Deck wird erstellt (90–120s)" />} {state === 'done' && deckUrl && ( <Alert title="Deck ist fertig"> <a href={deckUrl} target="_blank" rel="noreferrer">Deck öffnen</a> </Alert> )} {state === 'error' && <Alert variant="danger">Generierung fehlgeschlagen — prüfen Sie die RevOps-Logs.</Alert>} </Flex> ) }

Die Serverless-Begleitfunktion

Die oben referenzierte Serverless-Funktion (

generateDeck
) befindet sich im selben HubSpot-App-Projekt und ruft denselben
/api/v1/slides/generate
+
/api/v1/jobs/{id}
-Ablauf wie Methode 1 auf, blockiert jedoch, bis der Job erfolgreich ist (oder ein Timeout auftritt), bevor sie die Deck-URL an die Karte zurückgibt.

// 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()) // Poll bis zu 3 Minuten 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') }

Dieses Muster — CRM-Objekt → Extension-Karte → API-Aufruf → Inline-Ergebnis — ist derselbe Ansatz, den Marketing-Teams verwenden, wenn sie die Content-Produktion skalieren; siehe wie Marketing-Teams AI-Präsentationsdecks im großen Maßstab erstellen.

Methode 3: Geplante Batch-Generierung

Nicht jedes Deck muss auf Abruf erstellt werden. Für vorhersehbare Pipeline-Reviews – jeden Montagmorgen, jeden vierteljährlichen Geschäftsbericht, jede MEDDPICC-Phasenaktualisierung – ist ein zeitgesteuerter Batch günstiger und zuverlässiger als Echtzeit-Webhooks.

Das Muster

Führe einen nächtlichen Job aus, der HubSpot nach jedem Deal in einer Zielphase abfragt, ein frisches Deck für jeden erstellt und dem AE eine morgendliche Zusammenfassung per E-Mail sendet.

// /api/cron/nightly-deck-refresh.ts export const runtime = 'nodejs' export const maxDuration = 300 export async function GET(req: Request) { // Vercel Cron Schutz mit 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 }) }

Zeitplanung in

vercel.json
:

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

Sechs Uhr morgens, wochentags. Der AE öffnet die E-Mail, das Deck wartet bereits.

Die Prompt-Vorlage, die CRM-Felder in Deck-Inhalte verwandelt

Der wichtigste Faktor für die Qualität eines Decks ist der Prompt. Gute Prompts kodieren, was ein erfahrener AE einem neuen Mitarbeiter sagen würde: „Wenn das Unternehmen X ist, mit einem Champion in Y-Rolle, fokussiert auf Z-Ergebnis, baue das Deck so auf." Einsatzbereite Vorlage:

function buildDeckPrompt({ deal, company, contact }: Ctx) { return ` Erstelle ein 10-12 Folien Sales-Deck für eine B2B-Software-Evaluierung. ACCOUNT-KONTEXT - Unternehmen: ${company.name} - Branche: ${company.industry ?? 'nicht angegeben'} - Jahresumsatzbereich: ${company.annualrevenue ?? 'nicht angegeben'} - Mitarbeiter: ${company.numberofemployees ?? 'nicht angegeben'} - Website: ${company.domain} DEAL-KONTEXT - Deal-Phase: ${deal.dealstage} - Deal-Volumen: $${deal.amount} - Produktinteresse: ${deal.product_interest} - Prioritärer Use Case: ${deal.primary_use_case} - Wettbewerber-Shortlist: ${deal.competitors /* kommagetrennt */} - Evaluierungszeitplan: ${deal.close_date} CHAMPION-KONTEXT - Name: ${contact.firstname} ${contact.lastname} - Position: ${contact.jobtitle} - Gemeldete Prioritäten: ${contact.priorities} DECK-STRUKTUR 1. Titelfolie — „${company.name} × <Ihre Marke>: ${deal.primary_use_case}" 2. Ihre heutige Welt — 3 Bulletpoints, spezifisch für ${company.industry} 3. Die Kosten des Nichtstuns — quantifizieren anhand des ${company.annualrevenue}-Bereichs 4. Unser Ansatz — 3 Säulen ausgerichtet auf ${deal.primary_use_case} 5. Beweise — 2 Fallstudien aus ${company.industry} (oder angrenzend) 6. Differenzierung vs. ${deal.competitors} — siehe Battlecard-Abschnitt unten 7. Implementierungsplan — 30/60/90 abgestimmt auf ${deal.close_date} 8. Kommerzielle Zusammenfassung — Spanne verankert bei $${deal.amount} 9. Risiken und Gegenmaßnahmen 10. Nächste Schritte — ausgerichtet auf ${deal.dealstage} TONALITÄT - Passe an Zielgruppe an: ${contact.jobtitle} - Formell, wenn Titel VP, SVP, Chief, Director enthält; ansonsten gesprächig. - Jede Folie: eine Idee, eine Grafik oder ein Zitat, keine Textwüste. `.trim() }

Halte die Vorlage unter Versionskontrolle. Wenn das Marketing das Messaging-Framework aktualisiert, änderst du eine Datei und der nächste Cron-Lauf übernimmt sie.

Umgang mit Wettbewerbsalternativen

Das Feld

deal.competitors
in HubSpot — egal ob es sich um ein benutzerdefiniertes Einzeilen-Textfeld, eine Multi-Checkbox oder ein Dropdown-Menü handelt — ist Gold wert. Fügen Sie einen Battlecard-Block bedingt in den Prompt ein:

const BATTLECARDS: Record<string, string> = { 'Competitor A': ` Competitor A positioniert sich mit <deren Behauptung>. Gegenargument: <Ihr Beweis> + <3-Wort-Slogan>. Landminen-Frage zum Platzieren: "Wann wurde deren letztes Sicherheitsaudit veröffentlicht?" `, 'Competitor B': ` Competitor B führt mit <deren Ansatz>. Gegenargument: <Ihr Gegenargument> — verweisen Sie auf <Kundenname> Wechsel-Case. Landmine: "Fragen Sie nach deren Pro-Nutzer-Obergrenzen ab 500 Nutzern." `, } function battlecardSection(competitorsCsv: string) { const names = competitorsCsv.split(',').map(s => s.trim()).filter(Boolean) if (!names.length) return '' return ` COMPETITIVE BATTLECARDS ${names.map(n => BATTLECARDS[n] ?? '').filter(Boolean).join('\n')} Verwenden Sie dies, um die Differenzierungs-Folie zu befüllen. Nennen Sie den Wettbewerber nie mehr als zweimal. `.trim() }

Hängen Sie das Ergebnis von

battlecardSection(deal.competitors)
an Ihren Prompt an. Das Deck trägt nun Wettbewerbs-Framing auf AE-Niveau — die Art, die normalerweise einen dreißigminütigen Anruf mit dem Competitive-Intelligence-Lead erfordert.

Speichern Sie Battlecards in einer Datenbanktabelle, anstatt sie fest zu codieren, sobald Sie mehr als zehn haben. Ihr Head of Product Marketing kann sie dann bearbeiten, ohne einen PR einreichen zu müssen.

Häufig gestellte Fragen

Wie verhindere ich, dass HubSpot bei jeder Property-Aktualisierung doppelte Decks generiert?

Fügen Sie dem Deal-Objekt eine Property namens

last_deck_generated_at
hinzu und integrieren Sie einen Filter in den HubSpot-Workflow:
last_deck_generated_at
ist unbekannt oder älter als 7 Tage. Ihre Transformer-Funktion sollte diesen Zeitstempel nach erfolgreicher Generierung über die Deal-API an HubSpot zurückschreiben. Allein dies verhindert 90 % verschwendeter API-Calls.

Was kostet das in 2Slides-Credits?

Jeder

/api/v1/slides/generate
-Call verbraucht Credits basierend auf der Folienzahl und etwaigen Add-ons (Bildgenerierung, Sprachkommentierung). Für ein typisches 10-Folien-Sales-Deck mit Branding-Bildmaterial sollten Sie 20–40 Credits pro Deck einplanen. Ein RevOps-Team, das 500 Decks pro Monat generiert, landet im Bereich von 150–400 $ — deutlich unter dem AE-Arbeitsaufwand, der bei einem einzigen Enterprise-Deal eingespart wird.

Kann ich das Deck in einer anderen Sprache als Englisch generieren?

Ja. Übergeben Sie

language: 'de'
,
language: 'ja'
,
language: 'es'
usw. im
/api/v1/slides/generate
-Payload. Das Prompt-Template sollte ebenfalls eine lokalisierte Einleitung enthalten, wenn der Kontaktdatensatz Ihres Champions eine nicht-englische bevorzugte Sprache anzeigt.

Wie fixiere ich das visuelle Branding, damit jedes Deck identisch aussieht?

Verwenden Sie eine fest definierte

theme_id
bei jeder Generierungsanfrage. Erstellen Sie Ihr Brand-Theme einmalig in der 2Slides-UI, kopieren Sie dessen ID und speichern Sie sie als
BRAND_THEME_ID
in Ihren Umgebungsvariablen. Das Theme steuert Schriften, Farbpalette, Logo-Platzierung und Master-Layouts — sodass der Inhalt pro Account variiert, während das Erscheinungsbild pixelgenau identisch bleibt.

Was passiert, wenn der Generierungsjob fehlschlägt?

Pollen Sie

/api/v1/jobs/{id}
und prüfen Sie den
status
. Bei
failed
enthält die Antwort
error
mit einem maschinenlesbaren Code. Versuchen Sie es einmal mit exponentiellem Backoff erneut; wenn es ein zweites Mal fehlschlägt, senden Sie eine Slack-Benachrichtigung an den RevOps-Channel und fallen Sie auf ein statisches Template-Deck zurück, damit der AE vor seinem Call nicht blockiert ist.

Das Fazit

HubSpot versucht nicht, Salesforce zu sein, und das ist völlig in Ordnung – seine Einfachheit ist das Feature. Aber Einfachheit bedeutet auch, dass es keine native Dokumentenautomatisierung mitbringt. Diese Lücke ist ein Feature, kein Bug, denn sie bedeutet, dass das RevOps-Team, das HubSpot mit einer KI-Präsentations-API verbindet, die wertvollste Oberfläche in seinem Sales-Tech-Stack besitzt: das Deck, das vor dem Käufer landet.

Die drei oben genannten Methoden – Workflow-Webhook, App-Card-Button, geplanter Batch – decken die gesamte Bandbreite an Generierungsauslösern ab, die ein Vertriebsteam benötigt. Wählen Sie diejenige, die zu Ihrer Funnel-Phase passt. Discovery- und Demo-Phasen erfordern fast immer On-Demand (die App-Card). Angebots- und Verhandlungsphasen profitieren am meisten von der Automatisierung bei Phasenänderung (der Workflow-Webhook). Pipeline-Reviews und QBR-Vorbereitung sind Batch (der Cron). Nutzen Sie alle drei und jeder Deal in der Pipeline hat jeden Tag ein frisches, CRM-wahrheitsgetreues Deck in Reichweite.

Automatisieren Sie Ihre Sales-Decks aus HubSpot – holen Sie sich einen 2Slides API-Key und integrieren Sie ihn in weniger als einem Tag in Ihren nächsten Workflow.

About 2Slides

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

Try For Free