

How to Send Daily Copper Pipeline Updates to Slack with Zapier
Zapier runs on a schedule, pulls deal and activity data from Copper, and posts a formatted pipeline summary to a Slack channel — no manual reporting required.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Sales teams of 5-30 people who want leadership to see a daily pipeline snapshot in Slack without anyone pulling a manual report.
Not ideal for
Teams that need real-time deal alerts the moment a stage changes — use a webhook-triggered Zap or Make for that instead.
Sync type
scheduledUse case type
reportingReal-World Example
A 12-person B2B SaaS sales team uses this to post a 9 AM pipeline summary to their #sales-leadership channel every weekday. Before automation, the sales manager exported a Copper report manually each morning and pasted numbers into Slack — a 15-minute task that got skipped on busy days. Now leadership sees deal count, total pipeline value, and deals closing this week before the morning standup starts.
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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Opportunity Name | name | |
| Monetary Value | monetary_value | |
| Close Date | close_date | |
| Pipeline Stage | pipeline_stage_id | |
| Deal Status | status | |
| Scheduled Date (Trigger) | ||
4 optional fields▸ show
| Assigned To (Owner) | assignee_id |
| Pipeline ID | pipeline_id |
| Activity Date | activity_date |
| Activity Type | type |
Step-by-Step Setup
Zapier Dashboard > Create Zap > Trigger > Schedule by Zapier
Create a new Zap and set the Schedule trigger
Log into Zapier and click the orange 'Create Zap' button in the top left. In the trigger search box, type 'Schedule' and select the native 'Schedule by Zapier' app. Choose 'Every Day' as the event. You'll see options for time of day and day-of-week filtering — set this now before moving on, because you can't easily change the schedule frequency later without rebuilding the trigger.
- 1Click the orange 'Create Zap' button in the top left of the Zapier dashboard
- 2In the trigger search field, type 'Schedule'
- 3Select 'Schedule by Zapier' from the results
- 4Choose 'Every Day' as the trigger event
- 5Set 'Time of Day' to your preferred send time (e.g. 8:00 AM) and select your timezone
Copper App > Settings > Integrations > API Keys
Connect your Copper account
Add a new action step and search for 'Copper' in the app selector. Choose the 'Find Opportunities' action — this is Copper's term for deals. Zapier will prompt you to connect a Copper account. You'll need your Copper API key and the email address tied to your Copper account. Find your API key in Copper under Settings > Integrations > API Keys.
- 1Click the '+' icon to add a new action step below the Schedule trigger
- 2Search for 'Copper' in the app selector
- 3Select 'Find Opportunities' as the action event
- 4Click 'Sign in to Copper' and enter your Copper email and API key
- 5Click 'Yes, Continue to Copper' to authorize
Zapier > Copper Action > Find Opportunities > Filters
Configure the Copper opportunity search filters
In the 'Find Opportunities' action, set your filters to pull only the deals you want in the summary. At minimum, filter by pipeline stage or close date range. Use Copper's 'Close Date Start' and 'Close Date End' fields to capture deals closing this week. You can also filter by Pipeline ID if you have multiple pipelines — find the Pipeline ID in Copper under Settings > Pipelines by hovering over the pipeline name.
- 1In the 'Find Opportunities' configuration, locate the 'Close Date Start' field
- 2Map 'Close Date Start' to today's date using Zapier's built-in date formatting (use the Schedule trigger's 'Scheduled Time' field)
- 3Set 'Close Date End' to 7 days from today using a Formatter step (you'll add this before this step if needed)
- 4Optionally set 'Pipeline ID' to the specific pipeline you want to report on
- 5Click 'Continue' and then 'Test Step' to verify results come back
Zapier > + Add Step > Formatter by Zapier > Numbers > Perform Math
Add a Formatter step to calculate pipeline totals
The Copper search returns individual deal records, not aggregated totals. Add a 'Formatter by Zapier' step between the Copper search and the Slack message. Use the 'Numbers' action with the 'Perform Math' event to sum deal values. You'll need to run this once for total pipeline value and optionally again for deals-closing-this-week value. This is the most tedious part of the setup — Zapier Formatter handles basic math but can't loop over multiple records natively.
- 1Click '+' to add a step after the Copper search
- 2Search for 'Formatter by Zapier' and select it
- 3Choose 'Numbers' as the action, then 'Perform Math' as the event
- 4In the formula field, manually reference deal value fields from the Copper step using the field picker (e.g. {{step2.monetary_value}} + {{step2.monetary_value__2}} + ...)
- 5Click 'Continue' and test the step — verify the output shows a numeric total
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Zapier > + Add Step > Code by Zapier > JavaScript
Add Code by Zapier to sum deal values dynamically
If your deal count varies (it will), replace or supplement the Formatter step with a 'Code by Zapier' step using JavaScript. This step takes the raw Copper output and calculates totals, deal count, and average deal size — all in one pass. Set the input data to pass the line-item deal values from the Copper step. The code block runs in Zapier's sandboxed Node.js environment and returns an object with the aggregated fields your Slack message needs.
- 1Click '+' to add a step after the Copper search
- 2Search for 'Code by Zapier' and select 'Run JavaScript'
- 3In the 'Input Data' section, add a key called 'deals' and map it to the monetary_value field from the Copper step
- 4Paste the aggregation code into the 'Code' field (see pro tip below)
- 5Click 'Test Step' and verify the output shows totalValue, dealCount, and avgDealSize
Paste this into a 'Code by Zapier' (Run JavaScript) step placed after the Copper 'Find Opportunities' step. In the Input Data section, add a key named 'rawDeals' and map it to the monetary_value line-item output from the Copper step. The code handles variable deal counts, strips currency formatting, and returns four clean fields your Slack message can reference directly.
JavaScript — Code Step// Input: rawDeals — comma-separated monetary values from Copper line items▸ Show code
// Input: rawDeals — comma-separated monetary values from Copper line items // e.g. '48000,12000,27500' const rawInput = inputData.rawDeals || '';
... expand to see full code
// Input: rawDeals — comma-separated monetary values from Copper line items
// e.g. '48000,12000,27500'
const rawInput = inputData.rawDeals || '';
// Split the raw input into individual values
const dealStrings = rawInput.split(',').map(s => s.trim()).filter(s => s.length > 0);
// Parse each value: strip currency symbols, commas, whitespace
const dealValues = dealStrings.map(val => {
const cleaned = val.replace(/[^0-9.]/g, '');
const parsed = parseFloat(cleaned);
return isNaN(parsed) ? 0 : parsed;
});
// Calculate aggregates
const dealCount = dealValues.length;
const totalValue = dealValues.reduce((sum, val) => sum + val, 0);
const avgDealSize = dealCount > 0 ? totalValue / dealCount : 0;
// Format as USD currency strings
const formatUSD = (num) => '$' + num.toLocaleString('en-US', { minimumFractionDigits: 0, maximumFractionDigits: 0 });
// Return fields for Slack message mapping
output = [
{
dealCount: dealCount,
totalValue: formatUSD(totalValue),
avgDealSize: formatUSD(avgDealSize),
summaryLine: `${dealCount} open deals | Total: ${formatUSD(totalValue)} | Avg: ${formatUSD(avgDealSize)}`
}
];Zapier > + Add Step > Slack > Send Channel Message
Connect your Slack account
Add the next action step and search for 'Slack'. Choose 'Send Channel Message' as the event. Click 'Sign in to Slack' — this opens an OAuth popup where you'll authorize Zapier to post on behalf of a bot. You'll select the workspace and grant permission to post messages. Make sure you authorize as a bot, not as your personal user, so messages show up as a named bot rather than your name.
- 1Click '+' to add a new action step
- 2Search for 'Slack' and select the Slack app
- 3Choose 'Send Channel Message' as the action event
- 4Click 'Sign in to Slack' and complete the OAuth flow in the popup window
- 5Select your workspace and click 'Allow'
Zapier > Slack Action > Send Channel Message > Configuration
Configure the Slack channel and message format
In the Slack action, select the target channel from the dropdown — for example, #sales-daily or #sales-leadership. Set the Bot Name to something recognizable like 'Pipeline Bot' and add an emoji for the bot icon (e.g. :bar_chart:). In the Message Text field, compose the summary using Slack's mrkdwn format. Use the field picker to pull in the calculated totals from your Code step and any deal-level fields from the Copper step.
- 1Click the 'Channel' dropdown and select your target Slack channel
- 2Set 'Bot Name' to 'Pipeline Bot' (or your preferred name)
- 3Set 'Bot Icon' to an emoji like ':bar_chart:'
- 4In the 'Message Text' field, build your summary using Slack mrkdwn — bold headers use *text*, sections use line breaks
- 5Use the field picker (the blue '+' icon) to insert values from the Code step and Copper step
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Zapier > + Add Step > Copper > Find Activities
Add a second Copper search for activity data
If you want to include activity counts (calls logged, emails sent) in the summary, add another 'Find Activities' action from the Copper app. Set the date range to the previous 24 hours using the Schedule trigger's timestamp. This step runs in parallel with your deal search — it is a separate Copper API call that returns activity records. You can then reference the activity count in your Slack message.
- 1Click '+' to add a new step after the Code step but before the Slack step
- 2Search for 'Copper' and select 'Find Activities'
- 3Set the 'Date Start' filter to the Schedule trigger's timestamp minus 24 hours (use a Formatter step to subtract time if needed)
- 4Set 'Activity Type' filter if you want only calls or emails — leave blank for all activity types
- 5Click 'Test Step' and confirm activity records are returned
Zapier > + Add Step > Filter by Zapier
Set day-of-week filtering to skip weekends
The 'Every Day' schedule trigger fires on weekends too. Add a 'Filter by Zapier' step immediately after the Schedule trigger to stop the Zap from running on Saturdays and Sundays. Use the condition: 'Scheduled Day of Week' does not contain 'Saturday' AND does not contain 'Sunday'. Without this, your team gets pipeline updates on Saturday morning.
- 1Click '+' to add a step directly after the Schedule trigger (before the Copper steps)
- 2Search for 'Filter by Zapier' and select it
- 3In the first condition, select 'Scheduled Day of Week' from the field picker
- 4Set the condition to 'Does not contain' and type 'Saturday'
- 5Click '+ AND' to add a second condition: 'Does not contain' 'Sunday', then click 'Continue'
Zapier Editor > Test Zap button (bottom right)
Test the full Zap end-to-end
Click 'Test Zap' from the Zapier editor to run all steps in sequence with real data. Watch each step turn green one by one. Check the Slack channel immediately after — the message should appear within 30-60 seconds. Verify the numbers in the message match what you see in Copper's own pipeline view. If the totals look off, go back to the Code step and check which deal value fields were passed in as input data.
- 1Click the 'Test Zap' button at the bottom right of the editor
- 2Watch each step card — a green checkmark means it passed, a red X means it failed
- 3Open your Slack channel and confirm the pipeline summary message appeared
- 4Compare the deal count and total value in the Slack message against Copper's pipeline view
- 5If numbers match, click 'Publish Zap' in the top right
Zapier Dashboard > Your Zaps > [Zap Name] > Task History
Turn on the Zap and confirm the first scheduled run
Click the toggle in the top right of the Zap editor to turn it on. Zapier will confirm the Zap is live and show the next scheduled run time. Check back the following morning at your configured send time and verify the message posted. Look at the Zap's 'Task History' (left sidebar > Task History) to confirm it ran and all steps show green. If any step fails silently, Zapier sends an email to the Zap owner — make sure the owner email is monitored.
- 1Click the toggle switch in the top right of the Zap editor to activate the Zap
- 2Confirm the 'Next run' timestamp shown by Zapier matches your intended send time and timezone
- 3The following morning, open Task History from the left sidebar of the Zapier dashboard
- 4Click on the most recent run and verify all steps show green checkmarks
- 5Confirm the Slack message appeared in the correct channel at the correct time
Scaling Beyond 200+ open deals in Copper+ Records
If your volume exceeds 200+ open deals in Copper records, apply these adjustments.
Split searches by pipeline stage
Copper's API caps responses at 200 records per call. If you have 200+ open deals, run separate 'Find Opportunities' steps filtered by stage (e.g. one for 'Proposal Sent', one for 'Negotiation'). Sum the results in the Code step. This keeps each API call under the limit.
Summarize instead of listing individual deals
Slack messages have a 4,000-character limit. A pipeline with 200 deals listed individually will exceed it and the message will be silently truncated. Design the Slack message to show aggregated totals and stage counts only — reserve deal-level lists for teams with fewer than 20 active deals.
Consider switching to Make for large pipelines
Make's Copper module supports iterator modules that loop over every record natively — no need to manually map line items. For pipelines over 200 deals, Make handles pagination automatically and can aggregate in a single aggregator module. The same workflow in Make costs less per run at high volume.
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 has no technical resources and needs this running by end of day. The Schedule trigger, Filter, Code, and Slack steps are all available in Zapier's guided builder — no JSON, no scripting environment to configure, no self-hosting. Setup from scratch takes about 45 minutes. The one scenario where you'd skip Zapier: if you need deal-level rows for more than 200 active opportunities, or if you want the summary to loop over every individual record and format them into a table. Zapier's line-item handling is clunky for that — Make handles it cleaner with its aggregator module.
The math is straightforward. This Zap uses 5-6 tasks per run: one for the Schedule trigger, one for the Filter, one for the Copper opportunity search, one for the Code step, one for the activity search, one for the Slack post. Running weekdays only = 22 runs per month = roughly 110-132 tasks per month. Zapier's Starter plan includes 750 tasks/month at $19.99/month. You'll stay well under the limit unless you add more Zaps. Make would run the same workflow for $9/month on its Core plan with 10,000 operations included — about half the cost. If budget matters more than setup speed, Make wins here.
Make's iterator and aggregator modules handle the 'sum all deal values' problem natively — no Code step needed, no manual line-item mapping. That's a genuine advantage. n8n can do the same with a Function node and runs free if self-hosted, but you're managing infrastructure. Power Automate has a Copper connector but it's a premium connector requiring a per-user plan on top of your Microsoft 365 subscription — the cost math gets ugly fast for a small sales team. Pipedream handles this well in code and costs less at scale, but requires a developer to maintain it. Zapier is still the right call if you want a non-technical team member to own the Zap, edit the message template, or troubleshoot it without filing an IT ticket.
Three things you'll hit after launch. First: Copper returns assignee_id as a number, not a name. Your Slack message will show '4521893' where 'Sarah Okonkwo' should be — build in a lookup step or use Copper's 'Find User' action to resolve IDs before they hit the message template. Second: the Code step breaks if Copper returns only one deal, because Zapier formats single-record results differently than multi-record line items — test with exactly one deal in your filter results before going live. Third: Slack's mrkdwn formatting does not render in Zapier's message preview panel — the message looks like broken plain text in the editor but posts correctly in Slack. Don't let the ugly preview fool you into stripping out the formatting.
Ideas for what to build next
- →Add a Weekly Digest Variant — Create a second Zap on a 'Every Week' schedule that posts a deeper Friday summary — include won/lost deal counts for the week alongside the open pipeline. This gives leadership both daily pulse checks and a weekly wrap-up without any manual work.
- →Trigger Deal-Level Alerts on Stage Changes — Add a separate Zap that fires immediately when a Copper deal moves to 'Negotiation' or 'Proposal Sent' — post to a different Slack channel with the deal name, value, and owner. This pairs with the daily summary: broad picture every morning, instant alerts for key moments.
- →Route Summaries to Individual Rep DMs — Extend the workflow to send each sales rep a personalized DM in Slack showing only their own deals — use Zapier's 'Send Direct Message' action in Slack and filter the Copper results by assignee. Reps get personal accountability without seeing each other's numbers.
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