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
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.
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.
Need help implementing this?
We build and optimize automation systems for mid-market businesses. Let's discuss the right approach for your team.