You can connect Slack to most major CRMs using Zapier in under an hour — without writing a single line of code. The result is a live feed of new deals, lead alerts, and pipeline updates delivered directly into your team’s Slack channels, so nobody has to log into the CRM to know what’s happening.
Why This Integration Is Worth Your Time
Sales teams lose more time than they realize switching between tools. A rep gets a Slack message, then opens HubSpot to check context, then goes back to Slack. That context-switching adds up. One study by UC Irvine found it takes an average of 23 minutes to fully refocus after an interruption. Multiply that by 10 CRM check-ins a day and you’ve got a real problem.
The Slack-to-CRM bridge via Zapier solves the consumption side of that problem. Your team still works deals in the CRM, but the important signals — new inbound lead, deal moved to Proposal stage, contact marked as churned — show up in Slack automatically. No polling. No manual updates in stand-up. The channel just knows.
What You’ll Need Before You Start
- A Zapier account — Free tier works for basic single-step zaps, but you’ll need the Starter plan ($19.99/month) to use multi-step zaps with filters, which this tutorial requires
- A HubSpot CRM account — Free tier is fine; this tutorial uses HubSpot as the trigger source
- A Slack workspace where you have permission to add apps — you don’t need to be an admin if the workspace allows user-installed apps
If you’re using Salesforce instead of HubSpot, the steps are nearly identical. Salesforce’s Zapier integration is rock-solid — honestly one of the more reliable ones on the platform — but note that Salesforce itself starts at $25/user/month for the cheapest plan, and you’ll need API access enabled, which typically requires a Professional tier or above.
Step 1: Set Up Your Zapier Account and Connect HubSpot
Log into Zapier and click Create Zap. The editor opens in a two-panel view: trigger on the left, action on the right (or below, depending on your screen). Search for HubSpot in the trigger app field.
Select HubSpot as your trigger app. Zapier will prompt you to choose a trigger event. For this setup, pick “New Contact” — this fires every time a new contact is added to HubSpot, whether via form submission, manual entry, or import.
Hit Connect and authorize Zapier to access your HubSpot account via OAuth. This takes about 30 seconds. Once connected, click Test Trigger. Zapier will pull in the most recent contact from your HubSpot account as sample data. You’ll see fields like First Name, Email, Lead Source, Create Date, and any custom properties you’ve set up. Save this sample — you’ll reference those fields in the Slack message later.
Step 2: Add a Filter (Don’t Skip This)
Most Zapier tutorials skip this step, and it’s why people end up with noisy, useless Slack channels. If you fire a notification for every single new HubSpot contact without filtering, you’ll get internal test contacts, spam form submissions, and duplicate imports cluttering your #new-leads channel within a week. Your team will mute it.
Click the + button between the trigger and action to add a step. Choose Filter by Zapier.
Set your filter condition. I recommend: Lead Source → Does not contain → “Internal”. Then add a second condition: Email → Does not contain → your company domain (e.g., yourcompany.com). Set conditions to match ALL. This blocks internal test entries and self-referrals from triggering Slack messages.
If your HubSpot setup uses lifecycle stages, add one more: Lifecycle Stage → Exactly matches → “Lead”. That way marketing qualified contacts don’t fire before your sales team is ready to act on them.
Step 3: Connect Slack as the Action
Click the action step and search for Slack. Choose “Send Channel Message” as the action event. Connect your Slack workspace — same OAuth flow as HubSpot. Once authenticated, you’ll see a form to configure your message.
Channel: pick the specific channel where leads should appear. Create a dedicated #new-leads channel first if you haven’t. Sending these to #general is a fast way to annoy your entire company.
Now write your message template. This is where people get lazy and write something like “New contact added.” That’s useless. Here’s a template that actually gives your sales rep something to work with:
🚨 New Lead: {{First Name}} {{Last Name}} | {{Company}} | {{Lead Source}} | {{Email}} — added {{Create Date}}. Open in HubSpot →
Use Zapier’s variable picker (the blue + button in the message field) to insert real HubSpot field values. The Contact URL field is particularly useful — it deep-links straight to that contact’s record in HubSpot. One click from Slack to the CRM record. That’s the whole point.
Under Bot Name, put something like “HubSpot Alerts” so it’s clear this isn’t a human. Under Bot Icon, you can drop in HubSpot’s logo URL if you want it to look clean. Optional, but it helps at a glance.
Step 4: Test and Activate
Click Test Action. Zapier will send a test message to your chosen Slack channel using the sample HubSpot data from Step 1. Go check Slack — the message should be there within a few seconds. If it shows up with the right name, company, and link, you’re good.
If the Contact URL field shows as blank, go back to HubSpot and confirm that field is populated on the test contact. Some HubSpot free accounts don’t expose this field via API — if that’s the case, manually construct the URL using the contact’s ID field: https://app.hubspot.com/contacts/YOUR_PORTAL_ID/contact/{{Contact ID}}. Your HubSpot portal ID is in the URL when you’re logged in.
Once the test passes, click Publish Zap. It’s live.
Step 5: Build a Second Zap for Deal Stage Changes
New contacts are just the start. The higher-value automation is deal stage updates. When a rep moves a deal to “Proposal Sent” or “Closed Won,” the whole team should know — instantly, without a meeting.
Create a new Zap. Trigger: HubSpot → “Deal Stage Changed”. This event fires whenever any deal moves between pipeline stages. Add a filter: Deal Stage → Exactly matches → “Closed Won”. Action: Slack → Send Channel Message to #wins (or whatever you call it).
Message template: 🏆 CLOSED WON: {{Deal Name}} | ${{Amount}} | Owner: {{Deal Owner}} | View Deal
This one Zap eliminates the “hey did we close that deal?” Slack message that happens 10 times a week in every sales team I’ve ever worked with. The channel just knows. The rep gets credit publicly. Everyone sees momentum. It takes maybe 15 minutes to set up and it’s one of those automations that people mention in team retros months later as something that actually changed how they work.
Honest Limitations to Know Before You Rely on This
Zapier’s free tier caps you at 100 tasks per month — that’s 100 trigger fires. A busy sales team blows past that in a week. The Starter plan at $19.99/month gives you 750 tasks, and the Professional plan ($49/month) bumps it to 2,000. If you’re processing more than that, you should honestly look at Make.com (formerly Integromat), which gives you 10,000 operations per month on its $9/month Core plan and has a slightly steeper learning curve but meaningfully better value at volume.
There’s also a latency issue. Zapier’s free and Starter zaps run on polling intervals — typically every 15 minutes on Starter, every 2 minutes on Professional. If your team needs real-time alerts (under 60 seconds), you either need the Professional plan or you need to look at HubSpot’s native Slack integration, which uses webhooks and is genuinely instant. HubSpot’s native integration is actually pretty decent for basic notifications and it’s free if you’re already paying for HubSpot. The trade-off: no custom filtering or multi-step logic without going into HubSpot workflows, which requires a paid HubSpot tier.
One more thing: Zapier’s HubSpot integration doesn’t support every HubSpot object type equally. Custom objects (available on HubSpot Enterprise) are partially supported but not fully. If you’re on Enterprise HubSpot and working with custom objects, you may hit walls that require HubSpot’s Operations Hub or a direct API connection. That’s a real limitation and most tutorials won’t tell you upfront.
If you’re interested in how this kind of workflow fits into a bigger automation picture, the guide on no-code AI automation myths is worth reading — especially the section about where no-code tools actually break down at scale.
Optional: Add an AI Step to Enrich the Slack Message
This is where things get interesting. Zapier has a native AI by Zapier action that lets you run a prompt against OpenAI’s API mid-zap. You can use it to auto-generate a one-sentence lead summary before posting to Slack.
Add a step between the HubSpot trigger and the Slack action. Choose AI by Zapier → “Analyze Text”. In the prompt field, write something like: “This person just submitted a lead form. Here’s what we know: Name: {{First Name}} {{Last Name}}, Company: {{Company}}, Job Title: {{Job Title}}, Lead Source: {{Lead Source}}. Write one sentence about why this lead might be valuable and what the sales rep should ask first.”
The output field from that AI step becomes a variable you can drop into your Slack message. Your reps get a message that looks like: “New Lead: Sarah Chen | Acme Corp | Sarah is a VP of Operations at a mid-market manufacturer — worth asking about their current inventory software pain points.” That’s a different level of signal than a raw contact dump.
The AI step costs Zapier tasks like any other step, so budget accordingly. But even a rough summary is better than no context, and it’s the kind of thing that makes a solo founder or small team punch above their weight in the first 5 minutes of a sales conversation. If you want to understand more about how AI agents can handle this kind of contextual reasoning, the AI agents explainer breaks down the underlying mechanics clearly.
For teams already using a more complex reporting setup, this Slack + CRM zap pairs naturally with automated client reporting — something covered in detail in the writeup on how a solo consultant automated client reporting with AI.
FAQ
Does this work with CRMs other than HubSpot?
Yes. Zapier has solid integrations with Salesforce, Pipedrive, Zoho CRM, and Copper, among others. The trigger events and available fields vary by CRM — Pipedrive’s deal-changed trigger is particularly clean and easy to work with. The core steps in this tutorial apply to all of them; you’re just swapping the trigger app.
What if I want Slack messages to update an existing thread instead of posting new ones?
That requires using Zapier’s “Reply to Thread” Slack action instead of “Send Channel Message.” You’ll need to store the original message’s thread timestamp (Zapier captures this as an output from the first Slack post) in a data store or Google Sheet and reference it in subsequent zaps. It’s doable but adds meaningful complexity — worth it for high-volume deal tracking, overkill for most small teams.
Is there a risk of Zapier going down and me missing leads?
Zapier has solid uptime — historically above 99.9% — but it’s not zero-risk. Zapier logs every task attempt, including failures, in your Task History dashboard. Set up a weekly check on that dashboard, or configure Zapier’s built-in error notification emails (under Settings → Notifications) so you get an alert if a zap fails three times in a row. That’s enough of a safety net for most teams.
This article was produced with the assistance of AI, and its featured image was AI-generated. We review for accuracy, but please verify critical details.



