

How to Create Copper Tasks from Slack with Zapier
When a Slack user runs a slash command or adds a specific emoji reaction to a message, Zapier instantly creates a follow-up task in Copper CRM with a due date, assignee, and linked prospect name.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Sales teams who discuss prospects in Slack and need follow-up tasks captured in Copper without switching apps mid-conversation.
Not ideal for
Teams with complex task routing logic or who need two-way sync back from Copper into Slack — that requires Make or a custom webhook setup.
Sync type
real-timeUse case type
notificationReal-World Example
A 12-person SaaS sales team at a Series A startup uses this to turn deal conversations into Copper tasks without leaving Slack. Before the automation, reps pasted follow-up notes into Slack then manually created tasks in Copper hours later — sometimes the next day. Now a rep types /copper-task 'Follow up with Meridian Labs about pricing' and a task appears in Copper within 90 seconds, assigned to them, with a 2-day due date.
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 | ||
| Task Name | name | |
| Status | status | |
7 optional fields▸ show
| Assignee User ID | assignee_id |
| Due Date | due_date |
| Related Resource Type | related_resource.type |
| Related Resource ID | related_resource.id |
| Details | details |
| Priority | priority |
| Reminder Date | reminder_date |
Step-by-Step Setup
Zapier Dashboard > Create Zap > Trigger > App & Event
Create a new Zap and choose your Slack trigger
Go to zapier.com, click 'Create Zap' in the left sidebar, and search for Slack in the trigger app search box. You're building a trigger that fires when a slash command is used in a specific channel. Select Slack, then choose the trigger event 'New Slash Command' from the dropdown. This event type requires Zapier's Slack bot to be installed in your workspace, which the OAuth connection step handles automatically.
- 1Click 'Create Zap' in the left sidebar
- 2In the Trigger box, click 'Search for apps...' and type 'Slack'
- 3Select Slack from the results
- 4Click the 'Trigger Event' dropdown and choose 'New Slash Command'
- 5Click 'Continue'
Zapier Trigger Panel > Choose Account > Sign in to Slack
Connect your Slack account
Click 'Sign in to Slack' and a popup will open asking you to authorize Zapier's Slack app in your workspace. You must authorize this with an account that has permission to add apps to the workspace. After authorization, Slack redirects back to Zapier and you'll see your workspace name appear in the account dropdown. If you manage multiple Slack workspaces, confirm the correct one is selected.
- 1Click 'Sign in to Slack'
- 2Select your correct Slack workspace from the modal
- 3Click 'Allow' to grant Zapier the required permissions
- 4Back in Zapier, confirm your workspace name appears in the account selector
Zapier Trigger Panel > Configure > Webhook URL | Slack API > Your App > Slash Commands
Configure the slash command name and channel
In the 'Configure' section, Zapier gives you a webhook URL to register as a slash command in Slack. Copy this URL. Then in Slack, go to api.slack.com/apps, open your app (or create one), navigate to 'Slash Commands', and click 'Create New Command'. Set the command to '/copper-task', paste Zapier's webhook URL as the Request URL, and add a short description like 'Create a Copper follow-up task'. Back in Zapier, you can optionally filter to a specific channel so only commands from #sales fire the Zap.
- 1Copy the webhook URL Zapier displays in the Configure section
- 2Open api.slack.com/apps in a new tab and select your Slack app
- 3Click 'Slash Commands' in the left menu, then 'Create New Command'
- 4Set Command to '/copper-task' and paste the Zapier URL in 'Request URL'
- 5Save the slash command in Slack, then return to Zapier
Zapier Trigger Panel > Test Trigger
Test the Slack trigger with a real command
Click 'Test Trigger' in Zapier. Zapier will now wait for an incoming payload. Switch to Slack and type '/copper-task Follow up with Meridian Labs about Q3 pricing' in any channel where the bot is present. Return to Zapier — within 10 seconds, the trigger should show a test payload with fields like 'text', 'user_name', 'channel_name', and 'user_id'. The 'text' field contains everything the user typed after the slash command.
- 1Click 'Test Trigger' in Zapier
- 2Switch to Slack and type '/copper-task Follow up with Meridian Labs about Q3 pricing' in a channel
- 3Return to Zapier and wait for the payload to appear
- 4Click on the payload to expand and inspect the fields
- 5Click 'Continue with selected record'
Zap Editor > + Add Step > Apps > Formatter by Zapier > Text > Trim Whitespace
Add a Formatter step to parse the task text
The raw slash command text comes in as a single string. Before creating the Copper task, add a Zapier Formatter step to extract the task name cleanly. Click the '+' button below the trigger, search for 'Formatter by Zapier', and select the 'Text' transform type, then 'Trim Whitespace'. Map the 'text' field from the Slack payload as the input. This ensures accidental leading/trailing spaces in the command don't carry into Copper's task name field.
- 1Click the '+' icon below the Slack trigger step
- 2Search for 'Formatter by Zapier' and select it
- 3Choose 'Text' as the Transform type
- 4Select 'Trim Whitespace' as the action
- 5In the Input field, select the 'Text' variable from the Slack trigger payload
- 6Click 'Continue' and run the test
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Zap Editor > + Add Step > Copper > Create Task > Sign in to Copper
Add the Copper action and connect your account
Click '+' again below the Formatter step, search for 'Copper', and select it. Choose 'Create Task' as the action event. Click 'Sign in to Copper' — Zapier will ask for your Copper API key and the email address tied to your Copper account. Find your API key in Copper under Settings > Integrations > API Keys. Paste both into Zapier and click 'Yes, Continue'. Zapier will verify the credentials and show your account name.
- 1Click '+' below the Formatter step and search for 'Copper'
- 2Select 'Copper' and choose 'Create Task' as the action event
- 3Click 'Sign in to Copper'
- 4Open Copper in a new tab and go to Settings > Integrations > API Keys
- 5Copy your API key and paste it into Zapier along with your Copper account email
- 6Click 'Yes, Continue' to confirm the connection
Zap Editor > Copper Action > Configure > Field Mapping
Map the task fields from Slack data
Now fill in the Copper task fields using data from the previous steps. Set 'Task Name' to the Formatter output (the cleaned text string). Set 'Assignees' to the Slack user's email — but note that Slack's slash command payload gives you user_id and user_name, not email. You'll need to either hardcode a default assignee email for now or add a lookup step (covered in Next Steps). Set 'Due Date' by clicking the field and typing a relative value like 'today + 2 days' using Zapier's date helper. Set 'Status' to 'Open' and 'Priority' to 'None' unless your team has a standard.
- 1Click the 'Task Name' field and select the Formatter output variable
- 2Click 'Due Date' and use Zapier's date picker to set a 2-day offset from today
- 3Click 'Assignees' and either select a static email or map from a lookup step
- 4Set 'Status' to 'Open'
- 5Leave 'Related Resource' blank for now (covered in step 9)
Zap Editor > Copper Action > Configure > Related Resource
Link the task to a Copper person or opportunity
Copper tasks can be associated with a Person, Company, or Opportunity record. In the 'Related Resource' section of the action config, set 'Related Resource Type' to 'Person' (or 'Opportunity' if your team works deal-first). For 'Related Resource ID', you would ideally pull a Copper record ID from a search step — but for a first version, you can leave this blank and have reps link manually in Copper. If you want auto-linking, insert a 'Find Person in Copper' search step between steps 5 and 6 using the prospect name extracted from the Slack message.
- 1Scroll to 'Related Resource Type' and select 'Person' from the dropdown
- 2In 'Related Resource ID', click and check if a search step result is available to map
- 3If no search step exists, leave the field blank for now
- 4Note this as a step to improve after initial testing
Zap Editor > Copper Action > Test Action | Copper > Tasks
Test the Copper action with live data
Click 'Test Action' at the bottom of the Copper configuration panel. Zapier will send a real API call to Copper using the test data from your Slack trigger. After 5-10 seconds, Zapier shows a success response with a Copper task ID. Open Copper in your browser, go to the Tasks section in the left sidebar, and look for the task you just created. Confirm the name, due date, and assignee all look correct.
- 1Click 'Test Action' in the Copper configuration panel
- 2Wait for the green success message showing a task ID
- 3Open Copper and navigate to Tasks in the left sidebar
- 4Search for the task by the name from your Slack test command
- 5Confirm due date and assignee are correct
Zap Editor > Zap Name (top pencil icon) > Publish Toggle (top right)
Name and publish the Zap
Click the pencil icon at the top of the Zap editor to give it a clear name like 'Slack /copper-task → Copper Task'. Toggle the Zap to 'On' using the switch in the top right. Zapier will confirm the Zap is live. From this point, any '/copper-task' slash command in your Slack workspace fires the Zap within 90 seconds. Share the command syntax with your team — post a pinned message in your #sales channel explaining the format.
- 1Click the pencil icon next to the default Zap name at the top
- 2Type 'Slack /copper-task → Copper Task' and press Enter
- 3Click the toggle in the top right to switch the Zap from Off to On
- 4Confirm the 'Your Zap is on!' confirmation message appears
- 5Post the slash command instructions in your Slack #sales channel
This Code by Zapier step parses a structured slash command format — '/copper-task [prospect name] | [task description] | [days until due]' — so you can extract each component into separate fields. Paste this into a 'Run Python' Code by Zapier step placed between the Slack trigger and the Copper action. Map 'inputData.text' to the input, then use the output fields (prospect, task_name, due_days) in your Copper field mapping.
JavaScript — Code Stepimport re▸ Show code
import re from datetime import datetime, timedelta # Expect input format: 'Prospect Name | Task description | 3'
... expand to see full code
import re
from datetime import datetime, timedelta
# Expect input format: 'Prospect Name | Task description | 3'
# Example: 'Meridian Labs | Follow up on Q3 pricing | 2'
raw_text = input_data.get('text', '').strip()
# Split on pipe delimiter
parts = [p.strip() for p in raw_text.split('|')]
prospect = parts[0] if len(parts) > 0 else 'Unknown Prospect'
task_description = parts[1] if len(parts) > 1 else raw_text
# Parse due days — default to 2 if missing or non-numeric
try:
due_days = int(parts[2]) if len(parts) > 2 else 2
except ValueError:
due_days = 2
# Calculate due date as Unix timestamp in milliseconds (Copper API requirement)
due_datetime = datetime.utcnow() + timedelta(days=due_days)
due_timestamp_ms = int(due_datetime.timestamp() * 1000)
# Build task name
task_name = f"{task_description} — {prospect}"
return {
'prospect_name': prospect,
'task_name': task_name,
'due_timestamp_ms': due_timestamp_ms,
'due_days': due_days,
'raw_input': raw_text
}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 within an hour. The guided Zap builder handles the Slack webhook registration, the Copper OAuth, and the field mapping without anyone writing a line of code. At 50-150 slash commands per month — typical for a 10-15 person sales team — Zapier's Starter plan ($19.99/month) covers you comfortably, and the trigger fires within 90 seconds of the command. The one scenario where you'd skip Zapier: if you need the task auto-linked to a Copper opportunity based on fuzzy name matching from the command text. That kind of conditional lookup logic gets ugly fast in Zapier's linear step model.
Here's the real cost math. Each slash command execution burns 3 Zapier tasks: one for the trigger, one for the Formatter step, one for the Copper Create Task action. A team running 200 commands per month uses 600 tasks. Zapier's free plan caps at 100 tasks/month total, so you'll hit that wall in the first week. The Starter plan ($19.99/month) gives you 750 tasks — enough for ~250 commands. If your team runs 500+ commands per month, you're looking at the Professional plan at $49/month for 2,000 tasks. Make handles the same workflow for free up to 1,000 operations/month on its free tier, and $9/month for 10,000 — roughly 5x cheaper at volume.
Make is better here if you need conditional routing — for example, sending high-priority tasks to one Copper pipeline and normal tasks to another based on a keyword in the command. Make's router module handles this natively in one scenario. n8n beats Zapier if you're self-hosting and want to avoid per-task costs entirely — its Slack node and Copper HTTP request node get this done in 8 nodes with no monthly ceiling. Power Automate has a Copper connector, but it's limited and requires premium licensing that costs more than Zapier for most teams. Pipedream is the best pure-code option: you can deploy this entire workflow as a single Node.js function for free under its hobby tier, with cleaner error handling than Zapier's email alerts. Zapier is still the right call for teams where no one wants to look at JSON or a function editor.
Three things you'll run into after going live. First, Copper's due date field will silently accept bad timestamp formats and just save the task with no due date — you won't see an error in Zapier. Always verify the first 3 tasks manually in Copper after launch. Second, if a Slack workspace admin rotates the bot token or reinstalls the Zapier app, the slash command stops firing and you get no alert — set up Zapier's built-in error email notifications immediately. Third, users will inevitably type the command in channels where the Zapier bot isn't present, which causes Slack to return 'dispatch_failed' silently. Solve this upfront by inviting the bot to all relevant channels and documenting which channels are supported in your team's Slack channel description.
Ideas for what to build next
- →Auto-link Tasks to Copper Persons via Search Step — Add a 'Find Person in Copper' Zapier search step between the Formatter and the Copper Create Task action. Use the prospect name parsed from the slash command to look up a matching Copper person record and map their ID into the Related Resource field automatically.
- →Post a Slack Confirmation When the Task is Created — Add a second Copper action followed by a Slack 'Send Direct Message' action that confirms task creation to the user who ran the command. Include the task name and due date in the message so reps know the Zap fired successfully.
- →Add an Emoji Reaction Trigger as an Alternative Entry Point — Build a parallel Zap using the Slack 'New Reaction Added' trigger with a specific emoji (e.g. ✅) to create Copper tasks from any existing Slack message without requiring a slash command — useful for capturing action items from ongoing conversations.
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