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

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
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.

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.