Instantly notify a rep in Slack when a high-intent lead books a demo using Zapier

low complexityCost: $20-50/mo

Prerequisites

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
Form-specific trigger

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
Form data vs. contact data

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-alerts if 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>
Fallback routing

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

  1. Submit your demo form with test data
  2. Verify the Slack message contains the correct contact details
  3. 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.