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

How to Share Close Prospects to Slack with Make

When a Close opportunity reaches a target stage, Make pulls the deal details, company info, and conversation history, then posts a structured research brief to a Slack channel so your team can contribute insights before the call.

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-20 reps who prep for enterprise or mid-market calls collaboratively and need deal context surfaced in Slack before meetings.

Not ideal for

Teams with high-volume transactional pipelines — posting every new lead to Slack will create noise fast; use a stage filter or move to a digest approach instead.

Sync type

scheduled

Use case type

notification

Real-World Example

💡

A 12-person SaaS sales team uses this to post a research brief into #deal-research whenever a Close opportunity moves to 'Qualified' stage. Before this automation, reps emailed the team manually or pinged people in DMs — context was scattered and easy to miss. Now the Slack post includes deal value, company size, recent call notes, and a direct link to the Close opportunity, and teammates reply in-thread with LinkedIn intel or past connection notes before the call.

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

Skip the setup

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.

Close API key with read access to Opportunities, Leads, and Activities — generated under Close Settings > API Keys
Slack user account with permission to install apps and post to the target channel
Make account on at least the Core plan ($9/month) — the Free plan limits you to 1,000 operations/month which this workflow burns through quickly at 15-minute polling
A Make Data Store created before building the scenario — used in Step 9 to prevent duplicate Slack posts

Optional

At least one Close opportunity in the target pipeline stage so you can run a live test in Step 10

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Opportunity Nameopportunity.name
Opportunity Valueopportunity.value
Opportunity Stageopportunity.status_label
Lead (Company) Namelead.display_name
Assigned Useropportunity.assigned_to_name
Recent Activity Typeactivity.type
Activity Note / Summaryactivity.note
Close Opportunity URLopportunity.id
3 optional fields▸ show
Lead URL / Websitelead.url
Expected Close Dateopportunity.date_won
Activity Dateactivity.date_created

Step-by-Step Setup

1

make.com > Scenarios > Create a new scenario

Create a new scenario in Make

Log in to Make at make.com and click 'Create a new scenario' in the top-right corner. You'll land on the visual canvas with a single empty circle — that's your trigger slot. Click the circle to open the app search modal. This is where you'll configure Close as the data source that kicks off the workflow.

  1. 1Click 'Create a new scenario' in the top-right corner
  2. 2Click the large empty circle in the center of the canvas
  3. 3Type 'Close' in the search bar
  4. 4Select the 'Close' app from the results
What you should see: The Close module menu opens showing a list of available triggers and actions.
Common mistake — Make has two Close modules listed — 'Close' (official) and legacy community ones. Pick the one with the verified badge. Using the wrong module means missing fields like conversation history.
2

Close Module > Watch Opportunities > Connection > Add

Configure the Close 'Watch Opportunities' trigger

From the Close module list, select 'Watch Opportunities' as your trigger. This polls the Close API on a schedule you define and returns opportunities that have changed since the last run. You'll need to connect your Close account by clicking 'Add' next to the connection field and entering your Close API key. Find your API key in Close under Settings > API Keys.

  1. 1Select 'Watch Opportunities' from the Close trigger list
  2. 2Click 'Add' next to the Connection field
  3. 3Paste your Close API key into the API Key field
  4. 4Click 'Save' to authenticate
  5. 5Set the polling interval to '15 minutes' in the Schedule field
What you should see: The connection shows your Close workspace name with a green checkmark, and the trigger module displays configuration fields for filters.
Make
+
click +
search apps
Slack
SL
Slack
Configure the Close 'Watch O…
Slack
SL
module added
3

Close Trigger Module > Filters > Status

Filter by opportunity stage

You don't want to flood Slack with every opportunity update — only post when a deal reaches a specific stage like 'Qualified' or 'Demo Scheduled'. In the 'Watch Opportunities' module, set the Status filter to the target stage name exactly as it appears in Close. Stage names are case-sensitive in the Close API, so 'qualified' will return zero results if your Close pipeline uses 'Qualified'.

  1. 1In the trigger module, locate the 'Status' filter field
  2. 2Type the exact stage name as it appears in your Close pipeline (e.g. 'Qualified')
  3. 3Set 'Limit' to 10 to avoid processing too many records per run
  4. 4Click 'OK' to save the module configuration
What you should see: The module settings panel shows the stage name in the Status field and a limit of 10 records per execution.
Common mistake — If you have multiple pipelines in Close, the stage name filter applies across all pipelines. Add a second filter on pipeline ID if you only want deals from one pipeline — otherwise you'll post irrelevant deals to Slack.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Close
CL
notified
4

Canvas > + > Close > Get Lead

Add a Close 'Get Lead' action to fetch company details

The Watch Opportunities trigger returns opportunity-level data but not the full company profile attached to the lead. Click the '+' button to the right of the trigger module and add a Close 'Get Lead' action. Map the Lead ID from the trigger output into this module. This pulls company name, website, employee count, and any custom fields you've added to leads in Close.

  1. 1Click the '+' icon to the right of the trigger module
  2. 2Search for 'Close' and select 'Get Lead'
  3. 3In the 'Lead ID' field, click the field and select '1. Lead ID' from the trigger output
  4. 4Click 'OK' to save
What you should see: The Get Lead module appears connected to the trigger with a data path line between them. The Lead ID field shows the mapped variable in blue pill format.
5

Canvas > + > Close > List Activities

Add a Close 'List Activities' action for conversation history

To give your team context about past interactions, fetch recent call and email activity from Close. Add another Close action module and select 'List Activities'. Filter by Lead ID and set the type to 'Call' and 'Email'. Set the limit to 5 so you're only surfacing the most recent touchpoints — posting 50 activities in a Slack message is unreadable.

  1. 1Click the '+' icon after the Get Lead module
  2. 2Select 'Close' then 'List Activities'
  3. 3Map 'Lead ID' from the trigger output into the Lead ID field
  4. 4Set 'Type' filter to 'call,email'
  5. 5Set 'Limit' to 5
What you should see: The List Activities module is connected in sequence and shows the Lead ID mapping and type filters populated.
Common mistake — Close returns activities in descending date order by default. If your team needs to see the oldest interactions first (useful for long sales cycles), add a Sort module after this step — Make doesn't auto-sort array output.
6

Canvas > + > Tools > Text Aggregator

Add a text aggregator to format conversation history

The List Activities module returns an array of activity objects. To paste them into a Slack message, you need to flatten that array into readable text. Add a 'Text Aggregator' module from Make's built-in tools. Set the source module to 'List Activities', and in the Text field, build a line like: • {{date}} — {{type}}: {{note}}. The aggregator loops over each activity and joins them with a newline character.

  1. 1Click '+' after the List Activities module
  2. 2Search for 'Text Aggregator' under Tools
  3. 3Set 'Source Module' to your List Activities module
  4. 4In the 'Text' field, type: • {{formatDate(date_created; 'MMM D')}} — {{type}}: {{note}}
  5. 5Set 'Row separator' to a newline character by pressing Shift+Enter inside the field
What you should see: The Text Aggregator module shows a preview row in the output panel with one formatted activity line when you run the module test.
Common mistake — If an activity has a null note field (common for logged calls without a memo), the line will show '• Mar 12 — call: null'. Wrap the note field in Make's `ifempty(note; 'No note recorded')` formula to avoid this showing up in Slack.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
7

Canvas > + > Slack > Create a Message > Connection > Add

Connect your Slack account and add the 'Create a Message' action

Click '+' after the Text Aggregator and add the Slack module 'Create a Message'. Connect your Slack workspace by clicking 'Add' next to the connection field — this triggers an OAuth flow in a new browser tab. After authorizing, return to Make and select the destination channel from the dropdown. Use a dedicated channel like #deal-research rather than a general channel.

  1. 1Click '+' and search for 'Slack'
  2. 2Select 'Create a Message'
  3. 3Click 'Add' next to the Connection field
  4. 4Complete the Slack OAuth flow in the popup window
  5. 5Select your target channel (e.g. #deal-research) from the Channel dropdown
What you should see: The Slack module shows your workspace name in the connection field and the selected channel name in the Channel field.
Common mistake — The Slack OAuth connection in Make requests broad permissions by default. If your Slack admin restricts app installs, you'll need them to approve Make in Slack's App Management before the connection will complete.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
Make settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Make
popup window
Connected
green checkmark
8

Slack Module > Create a Message > Text field

Build the Slack message with deal context

In the 'Text' field of the Slack Create a Message module, compose the research brief using data mapped from previous modules. Use Slack's mrkdwn formatting for readability. Structure the message with the deal name at the top as a bold header, then company details, deal value, and the aggregated conversation history below. End with a direct link to the Close opportunity so teammates can click through.

  1. 1Click into the 'Text' field of the Slack module
  2. 2Paste or build the message template (see field mapping section for exact fields)
  3. 3Map 'Opportunity Name' from the Close trigger output into the header
  4. 4Map 'Text' from the Text Aggregator module into the conversation history section
  5. 5Map the Close opportunity URL using the format: https://app.close.com/opportunities/{{opportunity_id}}/
What you should see: The Text field shows a mix of static formatting characters and blue mapped variable pills from your previous modules.
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}}
9

Canvas > + > Flow Control > Router

Add a router to skip already-posted opportunities

Without deduplication, the scenario will re-post the same opportunity to Slack every 15 minutes as long as it stays in the trigger stage. Add a Router module before the Slack step, then add a filter on the first route that checks whether a Make data store has already recorded this opportunity ID. If the ID exists in the data store, the route terminates silently. If it doesn't, the route continues to Slack.

  1. 1Right-click the line between the Text Aggregator and Slack modules and insert a Router
  2. 2Click the filter icon (wrench) on Route 1
  3. 3Set the condition: 'Opportunity ID' > 'Does not exist in' > select your Make Data Store
  4. 4Add a 'Data Store: Add/Replace a Record' module at the end of Route 1 to save the opportunity ID after posting
What you should see: The canvas shows a Router node with one active route going to Slack and a data store write at the end, and the filter condition displays the opportunity ID check.
Common mistake — Make's free Data Store limit is 1 MB total storage. At ~50 bytes per opportunity ID record, you can store roughly 20,000 IDs before hitting the cap. Archive or clear old records monthly if you're running high volume.
10

Scenario Canvas > Run once (bottom toolbar)

Run a test execution and verify the Slack message

Click 'Run once' in the bottom-left of the Make canvas to execute the scenario against live data. Make will highlight each module in sequence as it runs and show a speech-bubble badge with the record count processed. After it completes, check your #deal-research Slack channel for the posted message. Verify that all fields populated correctly — especially the conversation history and the Close opportunity link.

  1. 1Click 'Run once' in the bottom-left toolbar
  2. 2Watch each module light up in sequence — click any module to inspect its output bundle
  3. 3Open Slack and navigate to your target channel
  4. 4Confirm the message shows company name, deal value, and at least one recent activity
  5. 5Click the Close opportunity link in the message to verify it resolves correctly
What you should see: A formatted Slack message appears in your target channel with the prospect's company name, deal value, recent activity summary, and a working Close link.
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}}
Make
▶ Run once
executed
Slack
Close
Close
🔔 notification
received
11

Scenario Canvas > Toggle (bottom-left) > Scheduling

Activate the scenario and set the polling schedule

Once the test passes, click the toggle at the bottom of the canvas to activate the scenario. Make will prompt you to set a scheduling interval if you haven't already — 15 minutes is the right balance between freshness and operation count. Confirm the scenario is listed as 'Active' on the Scenarios dashboard. The scenario will now run automatically every 15 minutes and post new qualifying opportunities to Slack.

  1. 1Click the grey toggle at the bottom-left of the canvas to activate
  2. 2In the scheduling modal, set interval to '15 minutes'
  3. 3Click 'Save'
  4. 4Navigate to the Scenarios dashboard and confirm the scenario shows 'Active' status
What you should see: The scenario card on the Scenarios dashboard shows a green 'Active' badge and the next scheduled run time.
Common mistake — The default polling interval is often 15 minutes. If you need faster delivery, check whether your plan supports shorter intervals before assuming it's a bug.

Paste this formula into Make's Text Aggregator 'Text' field to format each activity line with a readable date, type label in caps, and a null-safe note. It handles all five activity types Close returns and produces consistent output regardless of missing fields.

JavaScript — Custom Function// Make formula for Text Aggregator — formats Close activities into readable Slack lines
▸ Show code
// Make formula for Text Aggregator — formats Close activities into readable Slack lines
// Paste into the 'Text' field of the Tools > Text Aggregator module
• {{formatDate(date_created; 'MMM D, YYYY')}} — {{upper(type)}}: {{ifempty(note; ifempty(subject; 'No details recorded'))}}

... expand to see full code

// Make formula for Text Aggregator — formats Close activities into readable Slack lines
// Paste into the 'Text' field of the Tools > Text Aggregator module

• {{formatDate(date_created; 'MMM D, YYYY')}} — {{upper(type)}}: {{ifempty(note; ifempty(subject; 'No details recorded'))}}

// For the full Slack message body, use this in the Slack 'Create a Message' Text field:
// Replace MODULE_ID with the actual output reference numbers from your scenario

*🔍 Research Request: {{1.name}}*

*Company:* {{3.display_name}}{{if(3.url; " | " + 3.url; "")}}
*Deal Value:* {{formatNumber(1.value; 2; '.'; ',')}} {{1.value_currency}}
*Stage:* {{1.status_label}}
*Owner:* {{ifempty(1.assigned_to_name; 'Unassigned')}}
*Expected Close:* {{ifempty(formatDate(1.date_won; 'MMM D, YYYY'); 'Not set')}}

*Recent Activity (last 5 interactions):*
{{6.text}}

<https://app.close.com/opportunities/{{1.id}}/|View in Close> | Reply in thread with any intel 👇

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 Make for this workflow

Use Make for this if your team needs conditional routing — for example, posting $50k+ deals to one channel and smaller deals to another — because Make's Router module handles that in under 5 minutes without writing any code. Make is also the right call if you want to enrich the prospect brief mid-scenario (add a Clearbit or Apollo module between Close and Slack) and need to control exactly when that enrichment fires. The one scenario where you'd skip Make: if your team already lives in Zapier and no one wants to learn a new tool. Zapier's Close + Slack integration covers the basics and your reps will actually use it.

Cost

The math on Make's Core plan ($9/month): this scenario uses roughly 9 operations per qualifying deal. At 15-minute polling intervals with 100 new qualifying deals per month, you're spending about 900 operations on actual deal processing, plus roughly 2,880 polling calls per month (96/day × 30 days) that return nothing. Total: ~3,780 operations/month, well inside Core's 10,000 limit. If you're on Make's Free plan (1,000 ops/month), the polling alone consumes nearly 3× your monthly allowance — upgrade before going live. Zapier would cost $19.99/month minimum (Starter) for the same workflow and counts every polling check as a task, making it more expensive at scale.

Tradeoffs

Zapier's Close integration has a native 'New/Updated Opportunity' trigger that's easier to configure and doesn't require you to think about polling mechanics — if setup time matters more than flexibility, that's real. n8n gives you full JavaScript in the workflow so you can manipulate activity arrays, deduplicate natively in code, and skip the Data Store module entirely — better for teams with a developer. Power Automate has no native Close connector, so you'd be hitting the Close REST API directly through an HTTP action, which adds 45 minutes of setup and requires reading API docs. Pipedream's Close integration is solid and the code-first approach makes the Slack message template cleaner to maintain. Make wins here specifically because the visual canvas makes it easy for non-technical sales ops people to maintain and modify the scenario without breaking it.

Three things you'll hit after launch: First, Close's API rate limit is 40 requests per second, which you'll never breach with this workflow — but if you're running multiple Make scenarios against Close simultaneously, aggregate your calls. Second, the assigned_to_name field returns null for opportunities assigned to deleted users. Add an ifempty() wrapper or you'll get blank owner fields in Slack with no error to debug. Third, Close truncates activity notes longer than 10,000 characters in the API response. If your team writes detailed call notes, the conversation history in Slack may be cut off mid-sentence — cap the note field in the Text Aggregator using substring(note; 1; 500) to keep Slack messages scannable and avoid the confusion.

Ideas for what to build next

  • Add a Slack reaction collector to push team notes back to CloseSet up a second Make scenario that watches for replies in the #deal-research thread and appends them as Close activity notes. This closes the loop so research collected in Slack lands in the CRM record before the call.
  • Enrich the prospect brief with LinkedIn or Clearbit company dataAdd a Clearbit or LinkedIn module between the Close 'Get Lead' step and the Slack post to pull employee count, funding stage, and tech stack. A 3-minute enrichment call can change how your rep opens the conversation.
  • Build a daily digest instead of per-opportunity postsReplace the 15-minute trigger with a scheduled daily run at 7am that batches all deals entering the target stage overnight into one Slack message. Reduces channel noise significantly for teams with 10+ deals moving per day.

Related guides

Was this guide helpful?
Slack + Close overviewMake profile →