Instantly notify a rep in Slack when a high-intent lead books a demo using Zapier
Prerequisites
- Zapier account (Free plan works for a simple 2-step Zap)
- HubSpot account connected to Zapier via OAuth
- Slack workspace connected to Zapier
- A HubSpot form used for demo bookings
- A mapping of HubSpot owner IDs to Slack user IDs
Why Zapier?
Zapier is the fastest setup if you already have an account. The HubSpot trigger lets you select the specific demo form — no manual form ID filtering. The main trade-off is cost: the Code step for owner-to-Slack mapping requires the Professional plan ($29.99/mo), and polling delay is 1-15 minutes depending on your plan.
For teams that just need a channel notification (not a DM to the specific rep), the Free plan works with a simple 2-step Zap.
How it works
- New Form Submission trigger fires for your specific demo form (no manual filtering needed)
- Get Contact action fetches the full CRM record with enrichment data
- Code by Zapier maps the HubSpot owner ID to a Slack user ID
- Slack sends a DM to the assigned rep or posts to a fallback channel
Step 1: Set up the HubSpot trigger
Create a new Zap. Choose HubSpot as the trigger:
- Trigger event: New Form Submission
- Form: Select your demo booking form
Unlike the n8n and code approaches where you filter form IDs manually, Zapier lets you select the specific form in the trigger config. Only submissions to that form will trigger the Zap.
Step 2: Look up the contact details
Add a HubSpot action:
- Action event: Get Contact
- Contact ID or Email:
{{email}}(from the form submission) - Additional Properties to Retrieve:
firstname,lastname,jobtitle,company,numberofemployees,industry,hubspot_owner_id,hs_analytics_source
The form submission trigger gives you the raw form field values. The "Get Contact" step gives you the full CRM record with enriched data. Always fetch the contact for the richest Slack alert.
Step 3: Map owner to Slack user with Code by Zapier
Add a Code by Zapier step:
- Language: JavaScript
- Input Data:
ownerId->{{hubspot_owner_id}}
const ownerToSlack = {
'12345678': 'U01AAAA',
'23456789': 'U02BBBB',
'34567890': 'U03CCCC',
'45678901': 'U04DDDD',
};
const slackUserId = ownerToSlack[inputData.ownerId];
output = [{
slackUserId: slackUserId || '',
useFallback: slackUserId ? 'false' : 'true',
}];Step 4: Send a Slack DM
Add a Slack action:
- Action event: Send Direct Message (if Code step returned a Slack user ID) or Send Channel Message (fallback to
#demo-alerts) - User / Channel:
{{slackUserId}}from Code step (or#demo-alertsif empty) - Message Text:
🔥 *Demo Booked!*
*Name:* {{firstname}} {{lastname}}
*Title:* {{jobtitle}}
*Company:* {{company}} ({{numberofemployees}} employees)
*Industry:* {{industry}}
*Source:* {{hs_analytics_source}}
<https://app.hubspot.com/contacts/YOUR_PORTAL_ID/contact/{{hs_object_id}}|View in HubSpot>If the lead doesn't have an assigned owner, use Zapier's Paths step to branch: one path sends a DM to the owner, the other posts to a #demo-alerts channel for manual pickup. This requires the Professional plan.
Step 5: Test and publish
- Submit your demo form with test data
- Verify the Slack message contains the correct contact details
- Turn the Zap On
Limitations
- Polling delay: Zapier polls HubSpot every 1-2 minutes (Professional plan) or 15 minutes (Free plan). For a demo booking alert, even a 2-minute delay is acceptable -- the rep gets context before the call.
- Code by Zapier requires the Professional plan. Without it, you can't map owner IDs to Slack users dynamically. You'd need to hard-code the Slack channel instead of DM'ing the rep.
Troubleshooting
Common questions
Can I skip the Code step and send to a channel instead of DM'ing the rep?
Yes. On the Free plan, skip the Code by Zapier step and send to a #demo-alerts channel directly. You lose per-rep routing but the alert still fires. This is a 2-step Zap that fits within the Free plan's 100 tasks/month.
How much delay should I expect?
Professional plan polls every 1-2 minutes. Free plan polls every 15 minutes. For demo alerts, even a 2-minute delay is acceptable — the rep still gets context well before the scheduled call.
How many demo alerts can I handle per month?
Professional plan gives 750 tasks/mo. Each demo booking uses 3-4 tasks (trigger + get contact + code + Slack). That's roughly 180-250 demo bookings/month. Team plan ($69.99/mo) gives 2,000 tasks for higher volume.
Cost
- Free plan: Works for a basic 2-step Zap (trigger + Slack channel message). 100 tasks/month.
- Professional plan: $29.99/mo for the Code step and DM routing. Each demo booking = 3-4 tasks.
Looking to scale your AI operations?
We build and optimize automation systems for mid-market businesses. Let's discuss the right approach for your team.