Beginner~8 min setupCommunication & CRMVerified April 2026
Slack logo
Close logo

How to Send Close Lead Assignments to Slack with Zapier

When a lead is assigned in Close, Zapier instantly posts a Slack message to the assigned rep's dedicated channel with company size, lead source, and contact details.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

Best for

Inside sales teams of 5-30 reps who assign leads manually in Close and need reps to respond within minutes, not hours.

Not ideal for

Teams with high lead volume (500+/day) or complex routing logic — use Make or n8n instead to avoid Zapier task costs and add conditional branching.

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 12-person SaaS sales team routes inbound demo requests into Close and assigns them to reps by territory. Before this automation, reps refreshed Close manually and routinely missed new leads for 30-90 minutes. After setup, each rep gets a Slack message in their personal #leads-[name] channel within 90 seconds of assignment, including company size and lead source so they can prioritize before picking up the phone.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.

Prices shown for annual billing. Based on published pricing as of April 2026.

Estimated ROI

1000

min saved/mo

$583

labor value/mo

Free

no platform cost

Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.

Implementation

Before You Start

Make sure you have everything ready.

Close account with API key generation permissions — you need Settings access in Close to create an API key
Slack workspace admin access or permission to authorize third-party apps via OAuth
Rep-specific Slack channels already created and named consistently (e.g., #leads-sarah, #leads-marcus) — or a single shared channel if you're not routing by rep
Zapier account on Starter plan or higher — this Zap uses 4 steps, which exceeds the free plan's single-step limit
At least one lead in Close that has been assigned to a user, so Zapier can pull real sample data during the trigger test step

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Assigned To Nameassigned_to_name
Lead Name / Companydisplay_name
Lead URLid
6 optional fields▸ show
Lead Sourcelead_source
Number of Employeesnum_employees
Primary Contact Emailcontacts[0].emails[0].email
Primary Contact Phonecontacts[0].phones[0].phone
Lead Statusstatus_label
Date Createddate_created

Step-by-Step Setup

1

zapier.com > Dashboard > Create Zap

Create a new Zap in Zapier

Log in to zapier.com and click the orange 'Create Zap' button in the top-left sidebar. You'll land on the Zap editor — a two-column layout with a trigger panel on the left and a canvas on the right. Give your Zap a name at the top: something like 'Close Lead Assigned → Slack Notification'. This name appears in your Zap history and task logs, so make it descriptive.

  1. 1Click 'Create Zap' in the left sidebar
  2. 2Click the name field at the top and type 'Close Lead Assigned → Slack Notification'
  3. 3Click the trigger panel labeled 'Trigger' to open the app search
What you should see: You should see the Zap editor open with an empty trigger step waiting for you to select an app.
2

Zap Editor > Trigger > App & Event

Set Close as the trigger app

In the trigger panel, type 'Close' into the app search bar and select the Close CRM app (it shows the Close logo — a blue circle with a white C). Click 'Choose event' and select 'New or Updated Lead' from the dropdown. This trigger uses Close's webhook infrastructure, so it fires within seconds of a change, not on a polling schedule.

  1. 1Type 'Close' in the app search field
  2. 2Select 'Close' from the results list
  3. 3Click 'Choose event' dropdown
  4. 4Select 'New or Updated Lead'
What you should see: You should see the event set to 'New or Updated Lead' and a prompt to connect your Close account.
Common mistake — Close only exposes one general lead trigger in Zapier — you'll filter for assignment changes in a later step using Zapier's Filter action. Don't expect a dedicated 'Lead Assigned' trigger event; it doesn't exist.
Zapier
+
click +
search apps
Slack
SL
Slack
Set Close as the trigger app
Slack
SL
module added
3

Close > Settings > API Keys

Connect your Close account

Click 'Sign in to Close' — Zapier opens a popup asking for your Close API key. Go to Close > Settings > API Keys, generate a new key, and paste it into Zapier. Give it a label like 'Zapier Integration' so you can identify it later. Zapier will test the connection by making a lightweight API call and show a success state.

  1. 1Click 'Sign in to Close' in the Zapier trigger panel
  2. 2In a new tab, go to Close > Settings > API Keys
  3. 3Click 'Generate API Key', copy the key
  4. 4Paste the key into the Zapier popup and click 'Yes, Continue to Close'
What you should see: You should see a green checkmark and your Close organization name listed under 'Connected Accounts' in Zapier.
Common mistake — API keys in Close are tied to the user who generates them. If you use an admin's key and that admin leaves, the Zap breaks. Create the key under a dedicated service account or a shared admin user instead.
Zapier settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Zapier
popup window
Connected
green checkmark
4

Zap Editor > Trigger > Test

Test the Close trigger and pull sample data

Click 'Test trigger' — Zapier pulls the 3 most recently updated leads from your Close account to use as sample data. Scan the returned fields to confirm you see 'assigned_to', 'lead_source', 'company', 'num_employees', and contact details. If your sample leads are missing 'assigned_to', it means those leads were never assigned — go to Close, assign a test lead, then re-run the test.

  1. 1Click 'Test trigger'
  2. 2Review the returned sample data fields
  3. 3Confirm 'assigned_to_id' and 'assigned_to_name' appear in the list
  4. 4If missing, assign a lead in Close and click 'Test trigger' again
What you should see: You should see a sample lead record with at least 15-20 fields including assigned_to_name, lead_source, and company name.
Zapier
▶ Turn on & test
executed
Slack
Close
Close
🔔 notification
received
5

Zap Editor > + > Filter by Zapier

Add a Filter to catch only assignment changes

Click the '+' button below the trigger step and add a 'Filter by Zapier' action. This step prevents the Zap from firing on every lead update — you only want it to fire when a lead gets assigned or reassigned. Set the filter condition to: 'Assigned To Name' exists (is not empty). If your team also needs to catch reassignments, add a second condition watching for 'Assigned To Name' changed — but 'exists' covers most cases.

  1. 1Click the '+' button below the trigger step
  2. 2Search for 'Filter by Zapier' and select it
  3. 3Set Field to 'Assigned To Name'
  4. 4Set Condition to '(Text) Exists'
  5. 5Click 'Continue'
What you should see: The filter step should show 'Your Zap would have continued' using your sample lead data, confirming the assigned_to_name field is populated.
Common mistake — The 'Filter by Zapier' step counts as a task when it allows the Zap to continue. On Zapier's free plan, each filtered-through run costs one task. Budget accordingly if your leads update frequently for reasons other than assignment.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Close
CL
notified
6

Zap Editor > + > Formatter by Zapier > Text > Compose

Add a Formatter step to build the Slack message

Click '+' to add another step and choose 'Formatter by Zapier', then select 'Text' and the 'Compose' transform. This lets you build a clean, multi-line Slack message by combining Close fields into a single text block. You'll reference dynamic fields from the trigger — company name, assigned rep name, lead source, employee count, and primary contact email. This avoids hacking together messy text inside the Slack message template itself.

  1. 1Click '+' below the Filter step
  2. 2Search for 'Formatter by Zapier' and select it
  3. 3Choose 'Text' as the action
  4. 4Choose 'Compose' as the transform
  5. 5In the 'Input' field, build your message using the template below
What you should see: After testing the Formatter step, you should see a fully composed message string with real values substituted in for every dynamic field.
Common mistake — If 'Num Employees' or 'Lead Source' comes back empty for some leads, the Formatter will output a blank line in your message. Add 'Unknown' as a fallback by typing it after the field in parentheses — Zapier doesn't support inline fallback logic, so the Formatter compose field is the right place to handle this.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
message template
🔔 New Record: {{text}} {{user}}
channel: {{channel}}
ts: {{ts}}
#sales
🔔 New Record: Jane Smith
Company: Acme Corp
7

Zap Editor > + > Slack > Send Channel Message

Connect Slack and choose the Send Channel Message action

Click '+' to add the final action step. Search for 'Slack' and select it. Choose 'Send Channel Message' as the action event — this posts a message to a specific channel rather than a DM. You'll connect your Slack workspace by clicking 'Sign in to Slack' and authorizing Zapier through OAuth. Make sure you authorize with an account that has access to the rep-specific channels you want to post in.

  1. 1Click '+' below the Formatter step
  2. 2Search for 'Slack' and select it
  3. 3Select 'Send Channel Message' as the action event
  4. 4Click 'Sign in to Slack'
  5. 5Authorize Zapier in the Slack OAuth popup
What you should see: You should see a green 'Connected' badge with your Slack workspace name. The action configuration panel will appear showing Channel, Message Text, and other fields.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
8

Zap Editor > Slack Action > Configure > Channel

Map the Slack channel dynamically by rep name

In the 'Channel' field of the Slack action, you have two options: hardcode a single channel like #new-leads, or route to rep-specific channels like #leads-sarah or #leads-marcus. For rep-specific routing, type the channel prefix '#leads-' and then insert the 'Assigned To Name' dynamic field from Close. Zapier will concatenate these into a channel name like '#leads-sarah'. Your Slack channels must already exist and follow the exact naming convention — Zapier will throw an error if the channel doesn't exist.

  1. 1Click into the 'Channel' field
  2. 2Type '#leads-' as a static prefix
  3. 3Click the '+' icon to insert a dynamic field
  4. 4Select 'Assigned To Name' from the Close trigger data
  5. 5Verify the preview shows '#leads-[rep name]'
What you should see: The Channel field should show a mix of static text and a blue dynamic field pill reading something like '#leads-Sarah Johnson'.
Common mistake — Slack channel names are lowercase and cannot contain spaces. If your Close rep names include uppercase letters or spaces (e.g., 'Sarah Johnson'), the channel lookup will fail. Either normalize rep names in Close to match your Slack channel format, or add a Formatter 'Lowercase' step before this action.
Slack fields
text
user
channel
ts
thread_ts
available as variables:
1.props.text
1.props.user
1.props.channel
1.props.ts
1.props.thread_ts
9

Zap Editor > Slack Action > Configure > Message Text

Configure the Slack message content

In the 'Message Text' field, insert the composed message output from your Formatter step. Add a Bot Name like 'LeadBot' and upload a small icon emoji (🎯 works well) under 'Bot Icon'. Set 'Send as Bot' to true — this prevents the message from showing as your personal Zapier account name. Leave 'Link Names' set to true so @mentions in the message resolve to actual Slack users if you include them.

  1. 1Click into 'Message Text' and insert the Formatter output field
  2. 2Set 'Bot Name' to 'LeadBot'
  3. 3Set 'Bot Icon' to ':dart:'
  4. 4Set 'Send as Bot?' to 'True'
  5. 5Set 'Link Names?' to 'True'
What you should see: The preview panel should show your full message with real company name, lead source, employee count, and contact email filled in from the sample data.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
10

Zap Editor > Slack Action > Test

Test the full Zap end-to-end

Click 'Test action' — Zapier will post a real message to the Slack channel using your sample Close data. Go to Slack immediately and confirm the message arrived in the correct channel with the right formatting. Check that the company name, lead source, employee count, and contact email all display correctly. If the channel lookup fails, you'll see a specific error message like 'channel_not_found' — go back to step 8 and verify the channel name format.

  1. 1Click 'Test action'
  2. 2Open Slack and navigate to the channel that should have received the message
  3. 3Confirm all fields display correctly
  4. 4If you see 'channel_not_found', go back to the Channel field and fix the naming
What you should see: A formatted Slack message from LeadBot should appear in the correct rep channel within 10 seconds, showing all mapped Close fields.
11

Zap Editor > Publish

Turn on the Zap

Click 'Publish' in the top-right corner of the Zap editor. Zapier will run a final validation check and then activate the Zap. The status indicator at the top will turn from gray to green. From this point, every time a lead is assigned in Close, the filter evaluates it and the Slack message fires within 60-90 seconds. Monitor the Zap's task history for the first 24 hours to catch any channel name mismatches from real lead assignments.

  1. 1Click the 'Publish' button in the top-right
  2. 2Confirm the Zap status turns green
  3. 3Navigate to 'Zap History' in the left sidebar
  4. 4Assign a test lead in Close and watch for a new task to appear in history within 2 minutes
What you should see: The Zap should show 'On' in green. Within 2 minutes of assigning a lead in Close, a new task entry should appear in Zap History with status 'Success'.
Common mistake — Zapier's free plan limits you to 100 tasks/month and single-step Zaps only. This Zap has 4 steps (trigger + filter + formatter + Slack), so you need at minimum the Starter plan ($19.99/month). Turning on this Zap on a free account will fail at the second action.

This Code by Zapier step replaces the Formatter step entirely. It builds the Slack message, constructs the Close lead URL from the lead ID, handles empty fields with fallbacks, and normalizes the rep name into a valid Slack channel slug. Paste this into a 'Code by Zapier' action (JavaScript) inserted between the Filter step and the Slack action. Map inputData fields to the corresponding Close trigger output fields in the input section.

JavaScript — Code Stepconst {
▸ Show code
const {
  assigned_to_name = '',
  display_name = 'Unknown Company',

... expand to see full code

const {
  assigned_to_name = '',
  display_name = 'Unknown Company',
  lead_source = 'Unknown',
  num_employees = 'Unknown',
  contact_email = '',
  contact_phone = '',
  status_label = 'Unknown',
  lead_id = ''
} = inputData;

// Build a valid Slack channel slug from rep name
// e.g. 'Sarah Kim' -> 'sarah-kim'
const repSlug = assigned_to_name
  .toLowerCase()
  .trim()
  .replace(/\s+/g, '-')
  .replace(/[^a-z0-9-]/g, '');

// Build direct Close lead URL
const leadUrl = lead_id
  ? `https://app.close.com/lead/${lead_id}/`
  : 'URL unavailable';

// Compose the Slack message with fallbacks for every field
const message = [
  `*\ud83c\udfaf New Lead Assigned: ${display_name}*`,
  `*Rep:* ${assigned_to_name || 'Unassigned'}`,
  `*Contact:* ${contact_email || 'No email'} | ${contact_phone || 'No phone'}`,
  `*Source:* ${lead_source} | *Employees:* ${num_employees}`,
  `*Status:* ${status_label}`,
  `*Close Record:* ${leadUrl}`
].join('\n');

output = [
  {
    slack_channel: `#leads-${repSlug}`,
    slack_message: message,
    lead_url: leadUrl,
    rep_slug: repSlug
  }
];

Going live

Production Checklist

Before you turn this on for real, confirm each item.

Troubleshooting

Common errors and how to fix them.

Frequently Asked Questions

Common questions about this workflow.

Analysis

VerdictWhy Zapier for this workflow

Use Zapier for this if your sales team is non-technical, you want something live in under 30 minutes, and your lead volume is under 300 assignments per month. Zapier's guided builder handles the Close webhook and Slack OAuth without any configuration headaches. The Filter and Formatter steps are point-and-click, and the whole setup — including testing — takes about 25 minutes. The one scenario where you'd skip Zapier: if you need to detect reassignments (not just first assignments) or route leads based on multiple conditions like territory + company size + lead source. Zapier's Filter can't compare previous vs. current field values, and multi-branch logic requires stacking multiple Zaps, which inflates costs fast.

Cost

The math on cost is straightforward. This Zap consumes 3 tasks per successful run: the Filter pass, the Formatter step, and the Slack action. At 100 lead assignments per month, that's 300 tasks — comfortably inside Zapier's Starter plan (750 tasks, $19.99/month). At 300 assignments/month, you hit 900 tasks and need the Professional plan ($49/month). Make handles the equivalent workflow for $9/month (Core plan, 10,000 operations), and at 300 assignments you'd use roughly 1,200 operations — still well inside the limit. The Zapier premium for this specific workflow is $40/month compared to Make once you're above 250 assignments. Below that, the time savings of Zapier's simpler setup is worth the price difference.

Tradeoffs

Make is better here if you need to compare 'previous assigned_to' vs. 'current assigned_to' — its data store module handles this cleanly. n8n is better if you're self-hosting and want zero per-task cost at any volume; the Close node and Slack node are both native, and you can write inline JavaScript to handle all the channel name normalization without extra steps. Power Automate has a Close connector but it's a premium connector requiring a $15/user/month add-on, making it the most expensive option for this use case with no meaningful feature advantage. Pipedream handles this well for developers — the Close webhook source is built-in and you can write the full message composition and Slack routing in one Node.js step. Zapier wins here specifically on setup speed and the no-code Formatter step, which replaces what would otherwise require custom code in every other platform.

Three things you'll hit after launch. First, Slack channel name normalization: rep names in Close rarely match Slack channel slugs exactly. A rep named 'María García' will break channel lookup immediately — the Formatter lowercase step handles English names but not accented characters or hyphens vs. underscores. Build a naming convention doc and enforce it. Second, Close's API returns the assigned_to field as an object in some plan tiers, which means Zapier surfaces it as 'Assigned To' (raw object) rather than 'Assigned To Name' (string) — always expand the nested fields in the dynamic field picker or you'll get '[object Object]' in your Slack messages. Third, if your team uses Close's built-in sequences, a lead moving through sequence steps triggers multiple 'New or Updated Lead' webhook calls in quick succession. The Filter will pass all of them if the rep is still assigned, flooding the channel with duplicate notifications. Add a Digest by Zapier step or deduplicate on lead ID if sequences are part of your workflow.

Ideas for what to build next

  • Add a Lead Response Tracker Back to CloseWhen a rep replies in the Slack thread, use a second Zap (Slack New Thread Reply → Close Create Activity) to log the response time back to the lead record in Close. This gives you data on how fast reps are actually acting on notifications.
  • Build a Daily Unresponded Leads DigestUse a scheduled Zap that queries Close for leads assigned more than 2 hours ago with no activity logged, then posts a digest to a #sales-ops channel. This catches leads that slipped through without a reply.
  • Route High-Value Leads to a Separate Priority ChannelAdd a second Filter + Slack branch that checks 'Num Employees > 200' or 'Lead Source = Enterprise Demo' and posts those leads to a #hot-leads channel with a @channel mention, in addition to the rep's personal channel.

Related guides

Was this guide helpful?
Slack + Close overviewZapier profile →