

How to Share Close Opportunities to Slack with Zapier
When a Close opportunity reaches a target stage, Zapier instantly posts deal details, company info, and conversation history to a Slack channel so your team can research and weigh in 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 want collective input on high-value deals before discovery or closing calls.
Not ideal for
Teams with 100+ daily stage changes — the Slack channel will flood; use a digest approach with Make or n8n instead.
Sync type
real-timeUse case type
notificationReal-World Example
A 12-person SaaS sales team moves every opportunity past $10K into a 'Pre-Call Research' stage in Close before a scheduled demo. Before this Zap, reps emailed the team or pinged people individually — details got buried and half the team showed up to calls cold. Now Zapier posts a formatted Slack message to #prospect-research within 90 seconds of the stage change, including the company name, deal value, last 3 call notes, and a direct link to the Close record.
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
Before You Start
Make sure you have everything ready.
Optional
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Opportunity Name | opportunity.name | |
| Lead Name (Company) | lead.name | |
| Opportunity Value | opportunity.value | |
| Opportunity Status Name | opportunity.status_label | |
| Assigned User | opportunity.user_name | |
| Lead URL | lead.url | |
4 optional fields▸ show
| Close Date | opportunity.date_won |
| Last Activity Note | activity.note |
| Lead ID | lead.id |
| Opportunity Created Date | opportunity.date_created |
Step-by-Step Setup
zapier.com > Dashboard > Create Zap
Create a new Zap in Zapier
Log into your Zapier account at zapier.com. Click the orange 'Create Zap' button in the top left sidebar. Zapier opens the Zap editor, which shows a two-panel layout: the step list on the left and the configuration panel on the right. You'll work left to right — trigger first, then action.
- 1Go to zapier.com and sign in
- 2Click 'Create Zap' in the left sidebar
- 3Confirm the Zap editor opens with a blank 'Trigger' step on screen
Zap Editor > Trigger > Choose App
Set Close as the trigger app
Click the trigger block and search for 'Close' in the app search field. Select the Close CRM app from the results — look for the red Close logo. You'll then pick a trigger event. For this workflow, select 'New Opportunity' so the Zap fires whenever an opportunity is created or updated to your target stage. If you want to trigger only on stage changes, use 'Updated Opportunity' — but note that fires on every field edit, not just stage.
- 1Click the empty trigger block
- 2Type 'Close' in the app search bar
- 3Select 'Close' (red logo) from the dropdown
- 4Choose 'New Opportunity' as the trigger event
- 5Click 'Continue'
Zap Editor > Trigger > Close > Sign In
Connect your Close account
Click 'Sign in to Close' in the account connection panel. Zapier opens a popup asking for your Close API key. Get this from Close under Settings > API Keys — generate a new key if you don't have one. Paste it into the Zapier field and click 'Yes, Continue.' Zapier validates the key immediately.
- 1Click 'Sign in to Close'
- 2In Close, go to Settings > API Keys and copy your API key
- 3Paste the API key into the Zapier popup field
- 4Click 'Yes, Continue to Close'
- 5Confirm the account name appears in the connected accounts list
Zap Editor > Trigger > Close > Test Trigger
Configure the trigger and pull sample data
After connecting Close, Zapier asks you to configure the trigger. There are no additional filter fields at the trigger level for 'New Opportunity' — you'll handle stage filtering in the next step. Click 'Test Trigger' to pull real opportunity records from Close. Zapier fetches the 3 most recent opportunities. Pick one that has meaningful data — ideally one with a deal value, lead name, and some notes — so you can map fields accurately in later steps.
- 1Click 'Test Trigger'
- 2Wait for Zapier to fetch records from Close (takes 5–10 seconds)
- 3Browse the sample records and select one with a company name, deal value, and notes populated
- 4Click 'Continue with selected record'
Zap Editor > + Add Step > Filter by Zapier
Add a Filter step to target the right stage
Click the '+' button below the trigger block to add a new step. Search for 'Filter by Zapier' — this is a built-in Zapier tool, no separate app needed. Add a condition: 'Opportunity Status Name' (the human-readable stage label from Close) 'Contains' the name of your target stage — for example, 'Pre-Call Research' or 'Qualified.' This ensures only opportunities at that specific stage trigger the Slack post, not every new opportunity.
- 1Click the '+' icon between the trigger and action blocks
- 2Search for 'Filter by Zapier' and select it
- 3In the condition field, choose 'Opportunity Status Name' from the Close trigger data
- 4Set the condition operator to '(Text) Contains'
- 5Type your target stage name exactly as it appears in Close
- 6Click 'Continue'
Zap Editor > + Add Step > Slack > Send Channel Message
Add Slack as the action app
Click the '+' button below the Filter step to add the final action. Search for 'Slack' and select it. For the action event, choose 'Send Channel Message' — this posts to a public or private channel. Do not choose 'Send Direct Message' unless you want this going to one person. 'Send Channel Message' is what lets the whole team see and reply in a shared context.
- 1Click '+' below the Filter step
- 2Search for 'Slack' and select it
- 3Choose 'Send Channel Message' as the action event
- 4Click 'Continue'
Zap Editor > Action > Slack > Sign In
Connect your Slack workspace
Click 'Sign in to Slack.' Zapier opens a Slack OAuth window. Select your workspace from the dropdown and click 'Allow.' You must authorize with an account that has permission to post in the target channel. If the channel is private, the Slack account you authorize must already be a member of that channel — otherwise the post will fail silently.
- 1Click 'Sign in to Slack'
- 2Select your workspace in the Slack OAuth popup
- 3Click 'Allow' to grant Zapier posting permissions
- 4Confirm your workspace name appears in the connected accounts list
Zap Editor > Action > Slack > Send Channel Message > Channel
Configure the target Slack channel
In the 'Channel' field, click the dropdown and select the channel where prospect research discussions happen — for example, #prospect-research or #sales-intel. If the channel doesn't appear in the list, type its name manually with the # prefix. For private channels, you must invite the Zapier bot to the channel first using /invite @Zapier inside Slack.
- 1Click the 'Channel' dropdown field
- 2Search for or select your target channel (e.g. #prospect-research)
- 3If using a private channel, confirm the Zapier bot is already a member
Zap Editor > Action > Slack > Send Channel Message > Message Text
Build the Slack message with Close fields
This step is where the workflow becomes useful or useless — the message format matters. In the 'Message Text' field, click inside and use Zapier's data picker (the blue '+' icon) to insert Close fields. Build a structured message that includes: the opportunity name, company name, deal value, opportunity status, the last activity note, and a direct URL to the Close record. Use line breaks and Slack markdown (asterisks for bold, > for blockquotes) to make the message scannable. See the field mapping section below for the exact Close field names to use.
- 1Click into the 'Message Text' field
- 2Type '*New Prospect for Research:*' as the header line
- 3Press Enter, then use the blue '+' to insert 'Lead Name' from Close
- 4Add lines for Deal Value, Opportunity Status, and Last Note
- 5On the final line, insert the Close opportunity URL or construct it using the Lead ID
- 6Set 'Send as a Bot?' to Yes and give the bot a name like 'Close Research Bot'
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Zap Editor > + Add Step > Formatter by Zapier > Numbers > Format Number
Add a Formatter step to clean up deal value
Go back and click '+' between the Filter step and the Slack action to insert a Formatter step. Choose 'Formatter by Zapier,' then select 'Numbers' as the transform type, and 'Format Number' as the action. Map the Close 'Opportunity Value' field as the input. Set the output format to '$#,##0' for US dollar formatting. This Formatter step output is what you'll use in the Slack message instead of the raw Close value field.
- 1Click '+' between Filter and Slack steps
- 2Search 'Formatter by Zapier' and select it
- 3Choose 'Numbers' as the event type
- 4Select 'Format Number' as the transform
- 5Map 'Opportunity Value' from the Close trigger as the input
- 6Set the To Format field to '$#,##0'
- 7Click 'Continue' and verify the output shows a formatted dollar value
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}This Code by Zapier step runs in the Code action and solves a specific problem: Close's trigger payload doesn't always include a clean summary of recent activities. Paste this into a 'Code by Zapier' step (JavaScript) placed between the Filter and Slack action steps. It takes the raw Close fields from the trigger as input variables and outputs a fully formatted Slack Block Kit message string — structured sections, bold labels, and a button linking directly to the Close record. Map the output variable 'slackBlocks' into the Slack action's 'Blocks' field instead of the plain Message Text field.
JavaScript — Code Step// Code by Zapier — JavaScript▸ Show code
// Code by Zapier — JavaScript // Input data from Close trigger (set these in the 'Input Data' section above) const opportunityName = inputData.opportunityName || 'Unnamed Opportunity';
... expand to see full code
// Code by Zapier — JavaScript
// Input data from Close trigger (set these in the 'Input Data' section above)
const opportunityName = inputData.opportunityName || 'Unnamed Opportunity';
const leadName = inputData.leadName || 'Unknown Company';
const dealValueRaw = parseInt(inputData.dealValue || '0', 10);
const dealValueFormatted = '$' + (dealValueRaw / 100).toLocaleString('en-US');
const stage = inputData.stage || 'Unknown Stage';
const assignedUser = inputData.assignedUser || 'Unassigned';
const closeDate = inputData.closeDate || 'No date set';
const leadUrl = inputData.leadUrl || 'https://app.close.com';
const lastNote = inputData.lastNote || 'No recent notes on record.';
// Build Slack Block Kit JSON for a rich, structured message
const blocks = [
{
type: 'header',
text: { type: 'plain_text', text: '🔍 Prospect Research Request', emoji: true }
},
{
type: 'section',
fields: [
{ type: 'mrkdwn', text: '*Company:*\n' + leadName },
{ type: 'mrkdwn', text: '*Deal:*\n' + opportunityName }
]
},
{
type: 'section',
fields: [
{ type: 'mrkdwn', text: '*Value:*\n' + dealValueFormatted },
{ type: 'mrkdwn', text: '*Stage:*\n' + stage }
]
},
{
type: 'section',
fields: [
{ type: 'mrkdwn', text: '*Owner:*\n' + assignedUser },
{ type: 'mrkdwn', text: '*Target Close:*\n' + closeDate }
]
},
{
type: 'section',
text: { type: 'mrkdwn', text: '*Last Note:*\n> ' + lastNote }
},
{
type: 'actions',
elements: [
{
type: 'button',
text: { type: 'plain_text', text: 'Open in Close', emoji: true },
url: leadUrl,
style: 'primary'
}
]
},
{
type: 'divider'
}
];
output = [{ slackBlocks: JSON.stringify(blocks) }];Zap Editor > Test Action > Publish
Test and activate the Zap
Click 'Test Action' in the Slack step. Zapier sends a real message to your selected Slack channel using the sample Close data. Open Slack and confirm the message posted correctly — check that the company name, formatted deal value, and link all appear as expected. If the message looks right, click 'Publish Zap' to turn it on. The Zap is now live and will fire within 1–2 minutes of a matching Close opportunity being created.
- 1Click 'Test Action' in the Slack step
- 2Open your Slack channel and locate the test message
- 3Confirm all Close fields rendered correctly (name, value, status, link)
- 4Return to Zapier and click 'Publish Zap'
- 5Toggle the Zap to 'On' if it isn't already
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 Zapier for this if your sales team is non-technical and needs this running today. Setup takes under 30 minutes, the trigger fires within 90 seconds of a Close opportunity update, and the only coding involved is optional. Zapier's guided Zap builder makes the Filter and Formatter steps easy to configure without touching a single line of JSON. The one scenario where you'd skip Zapier: if your team wants rich Slack threading, conditional routing by territory or deal size, and a reverse sync back to Close — that combination gets expensive fast on Zapier and is cleaner to build in Make.
Real cost math: this Zap runs 4–5 tasks per qualifying opportunity. At 80 opportunities per month hitting your target stage, that's 320–400 tasks. Zapier's Starter plan costs $29.99/month and includes 750 tasks — so you're fine up to about 150 qualifying opportunities/month. Above that, you hit the Professional plan at $73.50/month (2,000 tasks). Make handles the equivalent workflow on the Core plan ($10.90/month) for the same 150 opportunities and comes in at 450 operations — well within Make's 10,000-operation limit. For this specific use case, Make is $63/month cheaper at scale. Zapier is worth the premium only if your team won't touch Make's scenario builder.
Make does one thing better here: its Slack module supports Block Kit formatting natively without a code step, so you get structured messages with buttons and sections through dropdowns alone. n8n handles it better if you self-host and want to pull Close activity history through a custom HTTP request node — the Close API exposes more data than Zapier's trigger payload, and n8n lets you chain those calls without counting tasks. Power Automate is the wrong tool entirely — Close doesn't have a native Power Automate connector, so you'd be writing custom HTTP actions for every Close call. Pipedream is overkill for what is fundamentally a simple notification workflow. Zapier is still the right call for teams that prioritize setup speed and need zero ongoing maintenance.
Three things you'll hit after setup. First: Close's 'New Opportunity' trigger payload includes the opportunity's own fields but sometimes omits the parent lead's full data — you may find the company website, LinkedIn URL, or industry missing from the Slack message. Fix this by adding a Close 'Find Lead' step using the Lead ID to fetch the complete lead record. Second: if your team creates opportunities in bulk (e.g., after a conference import), you'll generate a rapid burst of Slack messages that bury each other. There's no native Zapier rate-limiting tool — you'd need to switch to a digest approach using a scheduled Zap. Third: Zapier's Formatter step for number formatting has an edge case — if Close sends a null value for an opportunity with no deal size set, the Formatter returns an error and the entire Zap fails. Add a fallback default value of '0' in the Formatter input field to prevent this.
Ideas for what to build next
- →Post a Slack thread summary back to Close — Add a reverse Zap that watches for a specific emoji reaction (e.g. ✅) on the Slack research message and posts the thread's key replies as a note directly on the Close lead — so research insights live in the CRM, not just in Slack.
- →Add a daily digest for high-value opportunities — Create a scheduled Zap that runs every morning, searches Close for all opportunities above a value threshold in 'Pre-Call Research' stage, and posts a single digest message to Slack — better than one message per event if deal volume is high.
- →Route to different Slack channels by deal size — Add a Paths step in Zapier after the Filter to split opportunities: deals over $25K go to #enterprise-research with a longer message template, deals under $25K go to #smb-research with a shorter one — keeps discussions focused.
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