Copper n8n integrationAutomate Copper with n8n.
Your Copper records should keep themselves up to date. The Copper n8n integration gives you a node with 32 operations spread over 8 resources, from companies and leads to opportunities and people. A second node listens on 3 events, and a single API key credential powers both.
Verified Trustpilot reviews · AI, automation & growth agency
What does the Copper n8n integration actually do?
The Copper n8n integration wires your CRM into any workflow you build in n8n, a workflow being a chain of automated steps that runs without anyone clicking. One node reads and writes companies, leads, opportunities, people, projects, tasks, customer sources and users, 32 operations in all. A second node, the Copper Trigger, starts a workflow the moment a record appears, changes or disappears in Copper.
Three shapes cover most of what teams end up building. The first one pulls new business in. A signup form or an ads export lands in n8n, the node runs lead.create with a Name, and the lead sits in Copper before anyone opens a tab. That pairs well with Google Sheets when the raw list already lives in a spreadsheet.
The second shape pushes news out instead of pulling data in. The Copper Trigger fires on an updated record, a branch checks what came through, and the workflow drops a short message into Slack or sends a recap with Gmail. Nobody has to ask who touched the account last.
The third shape is reporting. Run opportunity.getAll with Return All switched on and n8n walks every page of the API, handing the whole pipeline to the next node for a weekly snapshot. Leave Return All off and Limit caps how many records come back, which is the faster choice while you are still testing the workflow.
Two things are worth knowing before you build. Anything that falls outside the 32 catalog operations goes through the HTTP Request node, which calls any Copper API endpoint while reusing the credential you already saved. And the trigger is set on one Resource, the object it watches, so decide which object matters before you activate the workflow.
Still picking a platform? The n8n review covers what self-hosting changes for cost and for data control, which is usually the deciding factor when a CRM is involved. Whichever way you go, the credential you saved and the 32 operations behave exactly the same on n8n Cloud and on a server you run yourself, so a workflow built on one moves to the other without being rewritten.
How do you connect Copper to n8n?
- 01
Generate the API key in Copper
The credential needs a Copper account on the Professional or Business plan. Open Copper and generate an API key from the account settings, following the Copper support article on generating an API key. Copy the key once, because it is the value n8n will store. Note down which user generated it too, that email address is the second half of the credential.
- 02
Save the credential in n8n
In n8n, open the Credentials menu and create a Copper credential. It asks for two values: API Key, the key you just generated, and Email, the address of the person who created that key rather than a shared mailbox. Save it once and both the Copper node and the Copper Trigger will offer it in their dropdown, in every workflow on the instance.
- 03
Run a read operation to confirm
Drop a Copper node on the canvas, pick the credential, then choose a harmless read such as Customer Source with Get Many. Execute the node on its own. Records coming back means the key and the email match. From there, switch Resource and Operation to whatever the workflow really needs, companies, leads, opportunities or people.
What can start a Copper workflow?
Copper Trigger is the node that starts a workflow when something happens in Copper. It listens to 3 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your Copper account.
What you see in n8n
Every event, by family
One row per object, one chip per action. The event to tick in the node is object.action; hover a chip to read exactly when it fires.
delete.*1delete.delete
new.*1new.new
update.*1update.update
Configuration notes
01Set up the Copper Trigger
The Copper Trigger is version 1 of the trigger node and it works by webhook, meaning n8n exposes a URL and Copper calls it. n8n registers that URL with Copper when you activate the workflow, so events arrive within seconds and nothing is polled on a timer.
Key parameters
- Resource: required, and it decides which object the trigger listens to. One node watches one resource, so choose it before activating.
- Event: the change you care about on that resource. There are 3 to choose from and no wildcard option, so a workflow that should react to several changes needs several selections or several trigger nodes.
02New
Fires when a new record is created on the selected resource. Copper posts the record to the n8n webhook URL as soon as it exists, whether it was typed in by hand, imported, or written by another workflow.
Key parameters
- Resource: the object being created. Watching new companies and new people means two separate trigger nodes, one per object.
- Event: pick
new. It only covers creation, so a record edited five minutes later does not fire this event again.
03Update
Fires when any field on an existing record changes. This is the busiest of the 3 events, because a CRM record gets touched far more often than it gets created.
Key parameters
- Event: pick
update. It covers any field on the record, not one field in particular, so the workflow usually needs an If or Switch node right after to sort out what actually matters. - Resource: the object being edited. On opportunities this is what turns a stage change into a notification.
person.update. Expect real volume here, so filter as early in the workflow as you can, well before the notification step, to keep executions worth reading later.04Delete
Fires when an existing record is removed from Copper. The quietest of the 3 events, and the one that saves the most cleanup work later.
Key parameters
- Event: pick
delete. It reports the removal, so the workflow has to react on what arrives rather than call the record back. - Resource: the object being removed, most often people or companies when a CRM cleanup is running.
What can the Copper node do?
The Copper node exposes 32 operations across 8 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Many | Update | Delete |
|---|---|---|---|---|---|
| Company | ✓ | ✓ | ✓ | ✓ | ✓ |
| Customer Source | ✓ | ||||
| Lead | ✓ | ✓ | ✓ | ✓ | ✓ |
| Opportunity | ✓ | ✓ | ✓ | ✓ | ✓ |
| Person | ✓ | ✓ | ✓ | ✓ | ✓ |
| Project | ✓ | ✓ | ✓ | ✓ | ✓ |
| Task | ✓ | ✓ | ✓ | ✓ | ✓ |
| User | ✓ |
Operations index
Company
5 operationsCreate a company
company.createWhat you see in n8n
Notes & use cases
Adds a company to Copper and passes the created record to the next node.
Key parameters
- Name: the only required field, the company name as it should read in the CRM. Map it from an earlier node with an expression like
{{ $json.field }}. - Additional Fields: an optional block carrying Email Domain, Details, Address and Phone Numbers. The last two open as sub-blocks you fill line by line, via Add Address Fields and Add Phone Number.
Delete a company
company.deleteWhat you see in n8n
Notes & use cases
Removes a company from Copper for good. Treat it as the end of a branch, not a step in the middle of one.
Key parameters
- Company ID: required, and it is the Copper identifier, not the company name. If the workflow only knows the name, run Get Many with the Name filter first and pass the identifier along.
Get a company
company.getWhat you see in n8n
Notes & use cases
Reads a single company and returns its record, which is how a workflow gets the current state of an account instead of the state it had when the trigger fired.
Key parameters
- Company ID: required. Coming out of the Copper Trigger or a previous read, it is usually mapped as an expression rather than typed in.
Get many companies
company.getAllWhat you see in n8n
Notes & use cases
Lists companies in bulk, which is the operation behind exports, audits and any recurring account review.
Key parameters
- Return All: on, n8n chains the API pages and brings back every company. Off, Limit sets how many records come back, which keeps test runs short.
- Filters: Country picks the company country from a list of codes, and Name narrows to a company name.
Update a company
company.updateWhat you see in n8n
Notes & use cases
Edits an existing company record. Only the fields you fill are sent, so the rest of the record stays untouched.
Key parameters
- Company ID: required, and it says which record gets edited.
- Update Fields: the optional block holding Name, Details, Address and Phone Numbers. Note that Email Domain is not part of this block, unlike the create side.
Customer Source
1 operationGet many customer sources
customerSource.getAllWhat you see in n8n
Notes & use cases
Returns the customer sources configured in Copper, the labels that record where a deal came from. It is the lookup you run before writing anything on an opportunity.
Key parameters
- Return All: on, the full list comes back, which is usually what you want since there are rarely many. Off, Limit caps the number returned.
Lead
5 operationsCreate a lead
lead.createWhat you see in n8n
Notes & use cases
Writes a lead into Copper, the stage before a contact has been qualified into a person and a company.
Key parameters
- Name: required. Anything else is optional, so an incomplete form can still land rather than being dropped.
- Additional Fields: carries Email, Phone Numbers and Address, each opened through its own Add button.
Delete a lead
lead.deleteWhat you see in n8n
Notes & use cases
Erases a lead from Copper. Useful precisely because leads pile up faster than any other object in a CRM.
Key parameters
- Lead ID: required. The identifier, not the lead name, so a cleanup workflow reads before it deletes.
Get a lead
lead.getWhat you see in n8n
Notes & use cases
Fetches one lead and hands its record to the next node. The read you place between a trigger and a decision.
Key parameters
- Lead ID: required. Typically an expression such as
{{ $json.field }}carrying the identifier from whatever ran before.
Get many leads
lead.getAllWhat you see in n8n
Notes & use cases
Pulls leads in batches, filtered or not. This is the reading half of every lead scoring or nurturing workflow.
Key parameters
- Return All: on for a complete export, off to stop at Limit.
- Filters: here Country is a plain text field, the country name, not a code list like on companies. Name filters on the lead name.
Update a lead
lead.updateWhat you see in n8n
Notes & use cases
Changes a lead already in Copper, field by field, without rewriting the whole record.
Key parameters
- Lead ID: required, the record to edit.
- Update Fields: the widest of the lead blocks, with Name, Details, Email, Phone Numbers and Address. Details is where a scoring note or a call summary fits.
Opportunity
5 operationsCreate an opportunity
opportunity.createWhat you see in n8n
Notes & use cases
Opens a deal in Copper and returns it, which is how a qualified conversation becomes a line in the pipeline.
Key parameters
- Name: required, the deal name.
- Primary Contact ID: optional, the identifier of the primary company attached to the deal.
- Customer Source ID: optional, the identifier of the source that generated the opportunity. Read it first with Get Many on customer sources rather than hardcoding it.
Delete an opportunity
opportunity.deleteWhat you see in n8n
Notes & use cases
Drops a deal from Copper. Rarely automated on its own, often the last step of a cleanup branch.
Key parameters
- Opportunity ID: required. Get it from a previous read or from the trigger, never from the deal name.
Get an opportunity
opportunity.getWhat you see in n8n
Notes & use cases
Loads one deal and returns its current record, including whatever has changed since the workflow last looked.
Key parameters
- Opportunity ID: required, mapped from the trigger or from an earlier list operation.
Get many opportunities
opportunity.getAllWhat you see in n8n
Notes & use cases
Returns deals in bulk. Pipeline reporting in n8n starts here, and so does anything that needs to look at more than one deal at a time.
Key parameters
- Return All: on to walk every page of the pipeline, off to stop at Limit.
- Filters: Company IDs and Customer Source IDs both take comma separated identifiers, so several accounts or several sources fit in one call.
Update an opportunity
opportunity.updateWhat you see in n8n
Notes & use cases
Edits a deal in place, which is what moves a workflow from reading the pipeline to actually maintaining it.
Key parameters
- Opportunity ID: required, the deal to edit.
- Update Fields: Name, Primary Contact ID and Customer Source ID. The two identifiers let a workflow reattach a deal to another company or another source without anyone opening Copper.
Person
5 operationsCreate a person
person.createWhat you see in n8n
Notes & use cases
Adds a contact to Copper. The most used write of the whole node, and the one most workflows end on.
Key parameters
- Name: required, the contact name.
- Additional Fields: the richest optional block of the node, with Emails, Phone Numbers, Address, Email Domain and Details. Emails and Phone Numbers accept several entries through Add Email and Add Phone Number.
Delete a person
person.deleteWhat you see in n8n
Notes & use cases
Removes a contact from Copper permanently. No confirmation step, so gate it behind a condition in the workflow.
Key parameters
- Person ID: required, the Copper identifier of the contact.
Get a person
person.getWhat you see in n8n
Notes & use cases
Reads one contact and returns the record, which makes it the natural first step after any trigger that only hands over an identifier.
Key parameters
- Person ID: required. An expression like
{{ $json.field }}is the usual way to pass it from the node before.
Get many people
person.getAllWhat you see in n8n
Notes & use cases
Lists contacts, the read behind every synchronization between Copper and a mailing tool or a spreadsheet.
Key parameters
- Return All: on, every contact comes back page after page. Off, Limit decides how many, which matters on a contact book that has grown for years.
- Filters: a single Name filter, so narrowing happens on the contact name and nothing else.
Update a person
person.updateWhat you see in n8n
Notes & use cases
Rewrites the fields you choose on an existing contact and leaves the others alone.
Key parameters
- Person ID: required, the contact to edit.
- Update Fields: the largest block in the node, with Name, Emails, Phone Numbers, Address, Email Domain and Details. Sending an empty block does nothing, which is a safe default when a branch is unsure.
Project
5 operationsCreate a project
project.createWhat you see in n8n
Notes & use cases
Copper gets a new project record built from data already moving through the workflow, so a signed deal turns into a delivery folder without anyone retyping it.
Key parameters
- Name: required, the name the project is created with. Pull it from the incoming item with an expression such as
{{ $json.field }}when it comes from a form or a spreadsheet row. - Additional Fields: optional extras applied at creation. Assignee ID is the ID of the user who will own the project, Details carries the description, and Status accepts
OpenorCompleted.
Delete a project
project.deleteWhat you see in n8n
Notes & use cases
Cleanup runs through this one: it removes a single project from Copper, which keeps test records and duplicated folders out of everyone's view.
Key parameters
- Project ID: required, the ID of the project to delete. Copper expects the identifier here, not the project name, so read it from a previous step instead of typing a label.
Get a project
project.getWhat you see in n8n
Notes & use cases
When a workflow only carries an identifier, this operation reads the matching project back from Copper so the next steps have something to work with.
Key parameters
- Project ID: required, the ID of the project to retrieve. It usually arrives from the trigger, the node that starts the workflow, or from a lookup run a step earlier.
Get many projects
project.getAllWhat you see in n8n
Notes & use cases
Reporting starts here. The operation lists the projects held in Copper, either the full set or a capped batch, and hands them to the rest of the workflow one item at a time.
Key parameters
- Return All: switched on, n8n chains through the API pages until every project has come back; switched off, Limit sets the maximum number of projects returned.
- Filters: the Name filter narrows the list to projects matching that name, which beats pulling everything and sorting it downstream.
Update a project
project.updateWhat you see in n8n
Notes & use cases
A project lives for weeks and its details move. This operation writes onto a project that already exists in Copper, so the CRM follows the delivery instead of describing its first day.
Key parameters
- Project ID: required, the ID of the project to update.
- Update Fields: only what you fill in gets written. Name renames the project, Details replaces the description, Assignee ID hands ownership to another user, and Status moves it between
OpenandCompleted.
Completed as soon as the final invoice is marked paid in the billing tool.Task
5 operationsCreate a task
task.createWhat you see in n8n
Notes & use cases
Follow-up work lands in the CRM instead of somebody's inbox: the operation adds a task to Copper from whatever the workflow just produced.
Key parameters
- Name: required, the text of the task itself. Keep it readable, it is what the assignee sees in Copper.
- Additional Fields: Assignee ID for the user who will own the task, Details for the longer description, Priority set to
HighorNone, and Status set toOpenorCompleted.
High.Delete a task
task.deleteWhat you see in n8n
Notes & use cases
A task leaves Copper here, one call per identifier, which is what an automated tidy-up needs when two workflows fire on the same event and both create the same reminder.
Key parameters
- Task ID: required, the ID of the task to delete. Feed it from the step that found the task, since Copper matches on the identifier and not on the task name.
Get a task
task.getWhat you see in n8n
Notes & use cases
Reading a single task back is useful before deciding anything: the operation returns the task matching the identifier it is given.
Key parameters
- Task ID: required, the ID of the task to retrieve, usually carried over from the trigger output or from a list step run just before.
Get many tasks
task.getAllWhat you see in n8n
Notes & use cases
Batches of tasks come out of Copper through this operation, which is how workload reviews and daily digests get their raw material.
Key parameters
- Return All: on, n8n keeps requesting pages until the whole task list is returned; off, Limit caps how many tasks come back in one run.
- Filters: Assignee IDs and Project IDs both take comma-separated identifiers, so a single node can cover one team or one delivery project.
Update a task
task.updateWhat you see in n8n
Notes & use cases
Reassignment, renaming and status changes all go through this operation, which edits a task already stored in Copper.
Key parameters
- Task ID: required, the ID of the task to update.
- Update Fields: Assignee ID moves ownership to another user, Name and Details rewrite the task text and its description, Priority takes
HighorNone, and Status takesOpenorCompleted.
High for the week.User
1 operationGet many users
user.getAllWhat you see in n8n
Notes & use cases
The people side of the account shows up here: the operation lists the users of the Copper account the credential opens, a credential being the saved connection you create once in n8n.
Key parameters
- Return All: on, every user comes back; off, Limit decides how many the node returns in one execution.
Need help automating Copper with n8n?
A person reads every message.

