Beginner~8 min setupCommunication & CRMVerified April 2026
Slack logo
Copper logo

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-time

Use case type

notification

Real-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.

/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

Before You Start

Make sure you have everything ready.

Slack workspace admin access or permission to install apps and create slash commands via api.slack.com
Copper account with API access enabled — found under Settings > Integrations > API Keys in Copper
Zapier account on a plan that supports instant (webhook-based) triggers — the free plan supports this but caps at 100 tasks/month
A Slack app created at api.slack.com/apps in your workspace to register the slash command endpoint
Copper user accounts for each sales rep who will be assigned tasks, so their emails can be mapped as Copper assignees

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Task Namename
Statusstatus
7 optional fields▸ show
Assignee User IDassignee_id
Due Datedue_date
Related Resource Typerelated_resource.type
Related Resource IDrelated_resource.id
Detailsdetails
Prioritypriority
Reminder Datereminder_date

Step-by-Step Setup

1

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.

  1. 1Click 'Create Zap' in the left sidebar
  2. 2In the Trigger box, click 'Search for apps...' and type 'Slack'
  3. 3Select Slack from the results
  4. 4Click the 'Trigger Event' dropdown and choose 'New Slash Command'
  5. 5Click 'Continue'
What you should see: You should see the Slack trigger configured with 'New Slash Command' shown in the event field, and a 'Continue' button active at the bottom of the panel.
Common mistake — The 'New Slash Command' trigger in Zapier uses a Zapier-managed endpoint — Slack will send the command payload to Zapier's URL, not your own server. You cannot change this URL. If your workspace has strict outbound webhook allowlists, you'll need your IT team to whitelist Zapier's Slack app.
Zapier
+
click +
search apps
Slack
SL
Slack
Create a new Zap and choose …
Slack
SL
module added
2

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.

  1. 1Click 'Sign in to Slack'
  2. 2Select your correct Slack workspace from the modal
  3. 3Click 'Allow' to grant Zapier the required permissions
  4. 4Back in Zapier, confirm your workspace name appears in the account selector
What you should see: Your Slack workspace name (e.g., 'Meridian Sales') appears in the account field with a green checkmark. The panel advances to the 'Configure' section.
Common mistake — If your Slack workspace has app installation restricted to admins only, a regular member account will hit an approval wall. The OAuth flow will stall at the 'Request to Install' screen. Have an admin pre-approve the Zapier app from Slack's App Management settings before attempting this step.
Zapier settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Zapier
popup window
Connected
green checkmark
3

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.

  1. 1Copy the webhook URL Zapier displays in the Configure section
  2. 2Open api.slack.com/apps in a new tab and select your Slack app
  3. 3Click 'Slash Commands' in the left menu, then 'Create New Command'
  4. 4Set Command to '/copper-task' and paste the Zapier URL in 'Request URL'
  5. 5Save the slash command in Slack, then return to Zapier
What you should see: The slash command '/copper-task' appears in your Slack app's command list with Zapier's URL as the endpoint. In Zapier, the Configure section shows the webhook URL you copied.
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.
4

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.

  1. 1Click 'Test Trigger' in Zapier
  2. 2Switch to Slack and type '/copper-task Follow up with Meridian Labs about Q3 pricing' in a channel
  3. 3Return to Zapier and wait for the payload to appear
  4. 4Click on the payload to expand and inspect the fields
  5. 5Click 'Continue with selected record'
What you should see: Zapier displays a sample payload showing fields including 'text: Follow up with Meridian Labs about Q3 pricing', 'user_name: jsmith', and 'channel_name: sales'. The Continue button activates.
Common mistake — If the test hangs and no payload arrives, the slash command's Request URL in Slack may not match what Zapier generated exactly. Check for a trailing slash mismatch — Slack and Zapier are strict about this. Copy the URL fresh from Zapier and repaste it in the Slack API dashboard.
Zapier
▶ Turn on & test
executed
Slack
Copper
Copper
🔔 notification
received
5

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.

  1. 1Click the '+' icon below the Slack trigger step
  2. 2Search for 'Formatter by Zapier' and select it
  3. 3Choose 'Text' as the Transform type
  4. 4Select 'Trim Whitespace' as the action
  5. 5In the Input field, select the 'Text' variable from the Slack trigger payload
  6. 6Click 'Continue' and run the test
What you should see: The Formatter test output shows the cleaned task string, e.g. 'Follow up with Meridian Labs about Q3 pricing' without extra whitespace. This value will be used as the Copper task name.
Common mistake — Do not use Formatter to split the text trying to extract a prospect name from the command string — that logic breaks the moment a user's phrasing varies. Handle prospect linking manually in Copper after the task is created, or use a structured command format covered in the pro tip.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
6

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.

  1. 1Click '+' below the Formatter step and search for 'Copper'
  2. 2Select 'Copper' and choose 'Create Task' as the action event
  3. 3Click 'Sign in to Copper'
  4. 4Open Copper in a new tab and go to Settings > Integrations > API Keys
  5. 5Copy your API key and paste it into Zapier along with your Copper account email
  6. 6Click 'Yes, Continue' to confirm the connection
What you should see: Zapier shows a green checkmark and your Copper account email in the account selector. The action panel advances to the 'Configure' section showing Copper task fields.
Common mistake — Copper API keys are tied to individual user accounts, not the workspace. If you use a personal API key, tasks will be attributed to that user in Copper's audit log even if you assign them to someone else. Use a shared service account API key if auditability matters to your team.
7

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.

  1. 1Click the 'Task Name' field and select the Formatter output variable
  2. 2Click 'Due Date' and use Zapier's date picker to set a 2-day offset from today
  3. 3Click 'Assignees' and either select a static email or map from a lookup step
  4. 4Set 'Status' to 'Open'
  5. 5Leave 'Related Resource' blank for now (covered in step 9)
What you should see: All required fields show mapped values. The Task Name field shows the cleaned Formatter text in blue pill format. The Due Date shows a calculated date, not a raw timestamp.
Common mistake — Copper's 'Due Date' field expects a Unix timestamp in milliseconds, not a human-readable string. If you type a date manually instead of using Zapier's date helper, the field will silently fail and the task will be created with no due date. Always use the Zapier date formatter or the built-in date helper here.
Slack fields
text
user
channel
ts
thread_ts
available as variables:
1.props.text
1.props.user
1.props.channel
1.props.ts
1.props.thread_ts
8

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.

  1. 1Scroll to 'Related Resource Type' and select 'Person' from the dropdown
  2. 2In 'Related Resource ID', click and check if a search step result is available to map
  3. 3If no search step exists, leave the field blank for now
  4. 4Note this as a step to improve after initial testing
What you should see: The Related Resource section shows either a mapped ID from a search step or is left blank. The rest of the task fields remain configured from step 7.
9

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.

  1. 1Click 'Test Action' in the Copper configuration panel
  2. 2Wait for the green success message showing a task ID
  3. 3Open Copper and navigate to Tasks in the left sidebar
  4. 4Search for the task by the name from your Slack test command
  5. 5Confirm due date and assignee are correct
What you should see: A task named 'Follow up with Meridian Labs about Q3 pricing' appears in Copper's task list with a due date 2 days from today and the correct assignee. The Zapier test panel shows a task ID like '12345678'.
Common mistake — Test runs in Zapier create real records in Copper. If you run the test multiple times, you'll end up with duplicate tasks. Clean these up manually in Copper before going live — search Tasks and filter by creation date.
10

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.

  1. 1Click the pencil icon next to the default Zap name at the top
  2. 2Type 'Slack /copper-task → Copper Task' and press Enter
  3. 3Click the toggle in the top right to switch the Zap from Off to On
  4. 4Confirm the 'Your Zap is on!' confirmation message appears
  5. 5Post the slash command instructions in your Slack #sales channel
What you should see: The Zap shows 'On' status in the editor and in your Zap dashboard. The Zap appears in your Zap list with a green active indicator.

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

VerdictWhy Zapier for this workflow

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.

Cost

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.

Tradeoffs

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 StepAdd 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 CreatedAdd 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 PointBuild 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

Was this guide helpful?
Slack + Copper overviewZapier profile →