

How to Send Close Lead Assignments to Slack with Make
When a lead is assigned in Close, Make fires a webhook and posts a formatted message to the assigned rep's dedicated Slack 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 where each rep owns a personal Slack channel and needs instant visibility when a new lead lands in their queue.
Not ideal for
Teams that assign leads in bulk via CSV import — webhook triggers fire per-record and will flood Slack at high import volume.
Sync type
real-timeUse case type
notificationReal-World Example
A 12-person SaaS sales team at a B2B company gets inbound leads from three sources: website demo requests, outbound sequences, and partner referrals. Before this automation, reps refreshed Close manually and routinely waited 45–90 minutes before touching a new lead. After setup, the moment a lead owner is set in Close, the assigned rep gets a Slack message in their personal channel with the company name, employee count, lead source, and the contact's phone number — median response time dropped from 68 minutes to under 9.
What Will This Cost?
Drag the slider to your expected monthly volume.
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
Import this workflow directly into Make
Copy the pre-built Make blueprint and paste it straight into Make. All modules, filters, and field mappings are already configured — you just need to connect your accounts.
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Lead ID | lead_id | |
| Lead Display Name | display_name | |
| Assigned To (User ID) | assigned_to | |
| Assigned To Email | assigned_to_email | |
| Contact Name | contacts[1].name | |
| Contact Email | contacts[1].emails[1].email | |
| Changed Fields | changed_fields | |
4 optional fields▸ show
| Lead Source | lead_source |
| Number of Employees | num_employees |
| Contact Phone | contacts[1].phones[1].phone |
| Lead Status | status_label |
Step-by-Step Setup
make.com > Scenarios > Create a new scenario
Create a new Make scenario
Log into Make at make.com and click the blue 'Create a new scenario' button in the top right of the Scenarios dashboard. You'll land on the visual canvas with a single empty module in the center. This is where you'll set the trigger. Name the scenario immediately — click the default name at the top ('New scenario') and type something like 'Close Lead Assignment → Slack'.
- 1Click 'Create a new scenario' in the top right
- 2Click the empty circle module on the canvas
- 3Type 'Close' in the app search bar
- 4Select 'Close' from the results
- 5Choose 'Watch Events (Instant)' as the trigger
Close > Settings > API Keys | Make > Close module > Connection > Add
Connect your Close account
In the Close module config panel, click 'Add' next to the Connection field. A dialog will ask for your Close API key. Go to Close at app.close.com, open your profile menu in the bottom left, click 'Settings', then 'API Keys', and generate a new key labeled 'Make Integration'. Paste that key into Make and click Save.
- 1In the Close module panel, click 'Add' next to Connection
- 2Open Close in a new tab: app.close.com > Settings > API Keys
- 3Click 'Generate API Key' and label it 'Make Integration'
- 4Copy the key immediately — Close only shows it once
- 5Paste the key into Make's connection dialog and click Save
Make > Close module > Event Type > Lead > Action > updated
Configure the lead assignment event trigger
With the connection set, you now configure which Close event fires the scenario. In the Event Type dropdown, select 'Lead'. In the Object Type dropdown, select 'lead'. In the Action dropdown, select 'updated'. This catches any lead update — you'll filter specifically for assignment changes in the next step. Click OK to save the module.
- 1Set Event Type to 'Lead'
- 2Set Object Type to 'lead'
- 3Set Action to 'updated'
- 4Leave Webhook Name blank — Make auto-generates it
- 5Click OK
Close > Settings > Integrations > API > Webhooks > Add Webhook
Register the webhook in Close
Make auto-generated a webhook URL when you saved the trigger. You now need to register it in Close so Close knows to send events to Make. Back in Make, click the Close module and look for the generated webhook URL — it appears in a blue info box at the bottom of the config panel. Copy it. In Close, go to Settings > Integrations > API and find the Webhooks section. Click 'Add Webhook', paste the URL, and select 'lead.updated' as the event type.
- 1In Make, click the Close module and copy the webhook URL from the blue info box
- 2In Close, go to Settings > Integrations > API
- 3Scroll to Webhooks and click 'Add Webhook'
- 4Paste the Make webhook URL into the URL field
- 5Select 'lead.updated' from the event type list and click Save
Make > Canvas > Arrow between modules > Filter (wrench icon)
Add a filter for owner assignment changes
Click the small wrench icon on the arrow between the Close module and the next empty module slot. This opens the Filter dialog. You need to filter so the scenario only continues when the assigned_to field actually changed. Set Condition A: Field = 'changed_fields', Operator = 'Contains', Value = 'assigned_to'. This tells Make to only proceed when Close explicitly flags the owner field as modified.
- 1Click the small wrench icon on the connector arrow after the Close module
- 2Click 'Add AND condition'
- 3In Field, type or select 'changed_fields'
- 4Set Operator to 'Contains'
- 5Set Value to 'assigned_to'
- 6Click OK
Make > Canvas > + > Close > Get a Lead
Fetch full lead details from Close
The webhook payload from Close gives you the lead ID and changed fields but not all the rich data you need for the Slack message (company size, lead source, contact phone). Add a second Close module to pull the full lead record. Click the + icon after the filter, search 'Close', and select 'Get a Lead'. Map the Lead ID field to the lead_id value from the webhook trigger output.
- 1Click the + icon after the filter arrow
- 2Search for 'Close' and select it
- 3Choose 'Get a Lead' as the action
- 4Select the same Close connection from the dropdown
- 5In the Lead ID field, click the map icon and select 'lead_id' from the trigger output
- 6Click OK
Make > Canvas > + > Slack > Look Up a User by Email
Look up the assigned rep's Slack user ID
Close stores the assigned rep as a Close user ID (e.g. 'user_abc123'), not a Slack username. You need to resolve this to a Slack user ID to route the message correctly. Add a Slack module: 'Look Up a User by Email'. In Close, the assigned user's email is available via the 'Get a Lead' output under assigned_to_email if you've mapped it, or you can add a 'Get a User' Close module first to resolve the Close user ID to an email, then feed that into the Slack lookup.
- 1Click the + icon after the 'Get a Lead' module
- 2Search 'Slack' and select it
- 3Choose 'Look Up a User by Email'
- 4Connect your Slack workspace (OAuth popup will appear)
- 5In the Email field, map the assigned rep's email from the Close 'Get a Lead' output
- 6Click OK
Make > Slack module > Connection > Add > OAuth
Connect your Slack workspace
If you didn't authenticate Slack in the previous step, click the Slack module, then click 'Add' next to Connection. Make opens an OAuth window — sign into your Slack workspace and authorize the Make app. Make needs the chat:write and users:read.email scopes at minimum for this workflow. These are granted automatically during the OAuth flow if your Slack admin has approved the Make app.
- 1Click 'Add' next to the Connection field in the Slack module
- 2Click 'Sign in with Slack' in the popup
- 3Select your workspace from the dropdown
- 4Review and click 'Allow' on the permissions screen
- 5Return to Make — the connection should auto-populate
Make > Canvas > + > Slack > Send a Message
Add the Slack 'Send a Message' module
Add one more Slack module after the user lookup: 'Send a Message'. For the Channel field, use the Slack user ID from the previous step prefixed with nothing — when you pass a Slack user ID (U0XXXXXXX) as the channel, Slack sends the message as a direct message to that user. Alternatively, if your team uses named per-rep channels (like #rep-jordan), you can use a text formula to build the channel name dynamically from the rep's display name.
- 1Click the + icon after the 'Look Up a User by Email' module
- 2Select 'Slack' > 'Send a Message'
- 3In the Channel field, map the Slack user ID from the lookup module output
- 4Build the message text using the fields in the next step
- 5Click OK after completing the message body
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}channel: {{channel}}
ts: {{ts}}
Make > Slack 'Send a Message' module > Text field
Build the Slack message with lead details
In the 'Send a Message' module, click into the Text field and build the message. Use Make's variable mapper to pull in fields from the 'Get a Lead' output. A good format includes: lead name, company, lead source, number of employees, primary contact name, phone, and email. Use Make's if() formula to handle null fields gracefully — for example, if company size isn't filled in, show 'Unknown' instead of a blank.
- 1Click into the Text field of the 'Send a Message' module
- 2Type the message structure and use the variable picker (click the map icon) to insert dynamic fields
- 3Map: Lead Name from 'Get a Lead' > display_name
- 4Map: Lead Source from 'Get a Lead' > lead_source
- 5Map: Company Size from 'Get a Lead' > custom fields or num_employees
- 6Map: Contact Name, Email, Phone from 'Get a Lead' > contacts[0]
- 7Wrap optional fields in if() formulas to avoid blank lines
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Make > Canvas > Run once button > Toggle (bottom of canvas)
Test and activate the scenario
Click 'Run once' at the bottom left of the canvas. In Close, open any lead and change its assigned owner — this fires the webhook. Return to Make and watch the execution bubble animate across each module. Click each module bubble to inspect the data it processed. Confirm the Slack message arrived in the correct channel. Once the test passes, click the toggle at the bottom of the canvas from OFF to ON to activate the scenario.
- 1Click 'Run once' at the bottom left of the canvas
- 2In Close, open any test lead and change the assigned owner
- 3Return to Make and watch the execution complete
- 4Click each module bubble to verify output data is correct
- 5Check Slack to confirm the message arrived in the right channel
- 6Click the ON/OFF toggle to activate the scenario
Paste this formula into the Text field of the Slack 'Send a Message' module in Make. It handles null fields for company size, phone, and lead source so your Slack messages never have empty bullet points. Replace the contacts[1] references with the actual array index Make resolves during mapping.
JavaScript — Custom Function{{if(1.display_name; 1.display_name; 'Unnamed Lead')}}▸ Show code
{{if(1.display_name; 1.display_name; 'Unnamed Lead')}}
*Source:* {{if(1.lead_source; 1.lead_source; 'Not specified')}}
*Company Size:* {{if(1.num_employees; toString(1.num_employees) + ' employees'; 'Unknown')}}... expand to see full code
{{if(1.display_name; 1.display_name; 'Unnamed Lead')}}
*Source:* {{if(1.lead_source; 1.lead_source; 'Not specified')}}
*Company Size:* {{if(1.num_employees; toString(1.num_employees) + ' employees'; 'Unknown')}}
*Status:* {{if(1.status_label; 1.status_label; 'No status set')}}
*Primary Contact*
Name: {{if(2.contacts[].name; 2.contacts[].name; 'No contact name')}}
Email: {{if(2.contacts[].emails[].email; 2.contacts[].emails[].email; 'No email on file')}}
Phone: {{if(2.contacts[].phones[].phone; 2.contacts[].phones[].phone; 'No phone on file')}}
*Assigned to:* {{3.profile.real_name}}
<{{concat('https://app.close.com/lead/'; 1.lead_id; '/')}}|View in Close →>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
Use Make for this if your team needs conditional routing (different Slack channels based on lead source or company size) or if you want to enrich the notification with data from a third source like Clearbit or your own database. Make's Router module handles branching logic without any code, and the visual canvas makes it easy to audit what's happening when a notification misfires. The one scenario where you'd skip Make: if your whole team is already on Zapier and you have fewer than 50 lead assignments per month — setup time on Zapier is roughly half, and the simpler Zap format is easier for a non-technical sales ops person to maintain.
The math is straightforward. Each lead assignment costs 4 Make operations: trigger, lead fetch, user lookup, message send. At 200 assignments per month, that's 800 ops. Make's Free plan caps at 1,000 ops/month total, so a busy team will need the Core plan at $9/month which includes 10,000 ops. Zapier charges per task — the same 200 assignments would cost 800 tasks/month, landing you in Zapier's Starter plan at $19.99/month. Make is $10.99/month cheaper for identical volume. At 500 assignments/month (2,000 ops), Make Core still covers it. Zapier would require the Professional plan at $49/month.
Zapier's Close integration has a dedicated 'New Lead (Instant)' trigger that's slightly faster to configure — no manual webhook registration in Close required. n8n handles this workflow with more flexibility if you self-host and need to avoid per-operation costs entirely; its Close node and the function node for message formatting are well-documented. Power Automate has no native Close connector — you'd build on the HTTP trigger with custom connectors, which adds 2-3 hours of setup and isn't worth it unless your company is already Microsoft-first. Pipedream is the strongest alternative if you want to write JavaScript to format the Slack message exactly how you want it and handle the user ID resolution in a single code step rather than a separate module. Make wins here because the visual layout makes the filter-then-branch logic easy to review without reading code — when a notification stops working at 9am on a Monday, the sales ops manager can open Make and see exactly which module failed without touching a terminal.
Three things you'll run into after launch. First, Close's webhook payload for lead.updated does not always include the full assigned_to_email field — sometimes it only sends the Close user ID. Budget for the extra 'Get a User' Close API call to resolve the user ID to an email, or the Slack lookup step will fail. Second, if your Slack workspace has strict app permission policies, the Make app's chat:write scope may be silently downgraded to only posting in channels where it's been explicitly invited — DMs to reps will fail with no obvious error until you check Slack's audit logs. Third, Close rate-limits API calls to 40 requests per 10 seconds per API key. If you're running other Make scenarios or third-party tools against the same Close API key simultaneously, you'll occasionally hit 429 errors on the 'Get a Lead' fetch. Use a dedicated API key for this workflow and enable Make's auto-retry setting on that module.
Ideas for what to build next
- →Add a daily digest for uncontacted leads — Build a second Make scenario on a morning schedule that queries Close for leads assigned in the last 24 hours with no activity logged, then posts a summary list to a team Slack channel — catches anything that slipped through without a follow-up.
- →Route by lead source to different Slack channels — Add a Router module between the filter and the Slack message step. Create separate routes for each lead source (e.g. partner referrals go to #partner-leads, demo requests go to the rep's DM) so high-priority sources get extra visibility.
- →Log assignments back to Close as activity — After the Slack message fires, add a Close 'Create Activity' module that logs 'Lead assigned and rep notified via Slack' with a timestamp — gives managers a clean audit trail of assignment events without switching between tools.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup