🤝 Generate live sales demo briefings from HubSpot, web research, Slack and Sheets with Gemini
⚡ 0 views · 🤝 CRM & Sales Operations
Description
Quick overview
Youtube Video: https://youtu.be/ZiZEtSxSFoY
This workflow receives demo booking webhooks, validates and deduplicates them, enriches the request with HubSpot history and lightweight web research, generates a sales briefing with Google Gemini, posts it to Slack, and logs the briefing status and AI output to Google Sheets.
How it works
- Receives a POST webhook request containing demo booking details.
- Validates required fields, optionally checks a shared secret header, and deduplicates repeat bookings within a time window before deciding whether to proceed.
- Upserts the booking into a Google Sheets “Bookings” sheet and waits briefly before looking up the contact in HubSpot by email.
- Retrieves HubSpot deals, tickets, and recent engagements and creates a new HubSpot contact if none exists.
- Builds a briefing context and runs several HTTP requests for web research snippets (DuckDuckGo results and optionally the company website via r.jina.ai).
- Sends the compiled booking, HubSpot data, and research snippets to a Google Gemini model to generate a Slack-formatted sales briefing.
- Posts the briefing to a Slack channel, logs briefing status and AI output back to Google Sheets, and returns a JSON success response to the original webhook call.
Setup
- Configure the webhook URL (POST
/demo-booking) in your booking form or scheduling tool to send fields like name, email, company, stated_problem, booking_time, and optional website/job_title/phone. - Add HubSpot OAuth2 credentials with access to contacts, deals, tickets, and engagements.
- Add a Google Gemini (PaLM) API credential for the
models/gemini-3.1-flash-litechat model. - Add a Slack OAuth credential and set the target channel where briefings should be posted.
- Add a Google Sheets service account credential and ensure the target spreadsheet contains a “Bookings” sheet with columns matching the workflow’s upsert fields (including BookingKey).
- (Optional) Set a shared secret value in the validation step and send it as the
x-webhook-secretheader from the source system.
🔗 Nodes Used
Google Sheets, HTTP Request, Slack, Webhook, HubSpot, AI Agent
📥 Import
Download workflow.json and import into n8n:
Workflow menu → Import from File