Copper
Manage CRM records in Copper (companies, leads, opportunities, people, projects, tasks, users, customer sources).
Overview
Copper (formerly ProsperWorks) is a CRM built for Google Workspace. Use this node to create, read, update and delete records across eight resource types: companies, leads, opportunities, people, projects, tasks, users and customer sources. Companies, leads, opportunities, people, projects and tasks support the full create / get / get many / update / delete set, while users and customer sources are read-only and support Get Many only. Authentication uses your Copper API key together with the email address of the Copper user that key belongs to.
Category: Marketing
Tool Name: copper
Version: 1
Appearance: Icon: lucide-CircleDollarSign | Color: #F09839
Node Type
Action — processes input items and produces output
| Direction | Port(s) |
|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Copper API credentials.
See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|
| Company | company |
| Customer Source | customerSource |
| Lead | lead |
| Opportunity | opportunity |
| Person | person |
| Project | project |
| Task | task |
| User | user |
Operations
The operations available depend on the resource you select.
Company
| Operation | Value | Description |
|---|
| Create | create | Create a new company. |
| Delete | delete | Delete a company by ID. |
| Get | get | Retrieve a single company by ID. |
| Get Many | getAll | Retrieve many companies, with optional filters. |
| Update | update | Update an existing company by ID. |
Customer Source
| Operation | Value | Description |
|---|
| Get Many | getAll | Retrieve the customer sources defined in your Copper account. |
Lead
| Operation | Value | Description |
|---|
| Create | create | Create a new lead. |
| Delete | delete | Delete a lead by ID. |
| Get | get | Retrieve a single lead by ID. |
| Get Many | getAll | Retrieve many leads, with optional filters. |
| Update | update | Update an existing lead by ID. |
Opportunity
| Operation | Value | Description |
|---|
| Create | create | Create a new opportunity. |
| Delete | delete | Delete an opportunity by ID. |
| Get | get | Retrieve a single opportunity by ID. |
| Get Many | getAll | Retrieve many opportunities, with optional filters. |
| Update | update | Update an existing opportunity by ID. |
Person
| Operation | Value | Description |
|---|
| Create | create | Create a new person. |
| Delete | delete | Delete a person by ID. |
| Get | get | Retrieve a single person by ID. |
| Get Many | getAll | Retrieve many people, with optional filters. |
| Update | update | Update an existing person by ID. |
Project
| Operation | Value | Description |
|---|
| Create | create | Create a new project. |
| Delete | delete | Delete a project by ID. |
| Get | get | Retrieve a single project by ID. |
| Get Many | getAll | Retrieve many projects, with optional filters. |
| Update | update | Update an existing project by ID. |
Task
| Operation | Value | Description |
|---|
| Create | create | Create a new task. |
| Delete | delete | Delete a task by ID. |
| Get | get | Retrieve a single task by ID. |
| Get Many | getAll | Retrieve many tasks, with optional filters. |
| Update | update | Update an existing task by ID. |
User
| Operation | Value | Description |
|---|
| Get Many | getAll | Retrieve the users in your Copper account. |
Parameters
Every parameter accepts {{ … }} expressions, including the values you place inside Additional Fields, Update Fields and Filters, so record data can be taken straight from the incoming item.
Company: Create
| Parameter | Type | Required | Default | Description |
|---|
| Name | string | Yes | — | Name of the company to create. |
| Additional Fields | collection | No | {} | Optional company fields to send with the create request. |
| — Address | fixedCollection | No | {} | Address of the company. Nest the values under addressFields. |
| — — Street | string | No | — | Street address. |
| — — City | string | No | — | City. |
| — — State | string | No | — | State or region. |
| — — Postal Code | string | No | — | Postal or ZIP code. |
| — — Country | string | No | — | ISO 3166 alpha-2 country code |
| — Details | string | No | — | Description of the company to create. |
| — Email Domain | string | No | — | Email domain used by the company. |
| — Phone Numbers | fixedCollection | No | {} | Phone numbers for the company. Nest the values under phoneFields. |
| — — Number | string | No | — | Phone number. |
| — — Category | string | No | — | Category label for this phone number. |
Company: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Company ID | string | Yes | — | ID of the company to delete. |
Company: Get
| Parameter | Type | Required | Default | Description |
|---|
| Company ID | string | Yes | — | ID of the company to retrieve. |
Company: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 5 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the search before results are returned. |
| — Country | string | No | — | ISO 3166 alpha-2 country code to filter by. |
| — Name | string | No | — | Name of the company to filter by. |
Company: Update
| Parameter | Type | Required | Default | Description |
|---|
| Company ID | string | Yes | — | ID of the company to update. |
| Update Fields | collection | No | {} | Fields to change on the company. Anything you leave out is left as it is. |
| — Address | fixedCollection | No | {} | Address of the company. Nest the values under addressFields. |
| — — Street | string | No | — | Street address. |
| — — City | string | No | — | City. |
| — — State | string | No | — | State or region. |
| — — Postal Code | string | No | — | Postal or ZIP code. |
| — — Country | string | No | — | ISO 3166 alpha-2 country code |
| — Details | string | No | — | Description to set for the company. |
| — Name | string | No | — | Name to set for the company. |
| — Phone Numbers | fixedCollection | No | {} | Phone numbers for the company. Nest the values under phoneFields. |
| — — Number | string | No | — | Phone number. |
| — — Category | string | No | — | Category label for this phone number. |
Customer Source: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 5 | Max number of results to return. (shown when Return All is false) |
Lead: Create
| Parameter | Type | Required | Default | Description |
|---|
| Name | string | Yes | — | Name of the lead to create. |
| Additional Fields | collection | No | {} | Optional lead fields to send with the create request. |
| — Address | fixedCollection | No | {} | Address of the lead. Nest the values under addressFields. |
| — — Street | string | No | — | Street address. |
| — — City | string | No | — | City. |
| — — State | string | No | — | State or region. |
| — — Postal Code | string | No | — | Postal or ZIP code. |
| — — Country | string | No | — | ISO 3166 alpha-2 country code |
| — Email | fixedCollection | No | {} | Email address for the lead. Nest the values under emailFields. |
| — — Email | string | No | — | Email address. |
| — — Category | string | No | — | Category label for this email address. |
| — Phone Numbers | fixedCollection | No | {} | Phone numbers for the lead. Nest the values under phoneFields. |
| — — Number | string | No | — | Phone number. |
| — — Category | string | No | — | Category label for this phone number. |
Lead: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Lead ID | string | Yes | — | ID of the lead to delete. |
Lead: Get
| Parameter | Type | Required | Default | Description |
|---|
| Lead ID | string | Yes | — | ID of the lead to retrieve. |
Lead: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 5 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the search before results are returned. |
| — Country | string | No | — | Name of the country to filter by. |
| — Name | string | No | — | Name of the lead to filter by. |
Lead: Update
| Parameter | Type | Required | Default | Description |
|---|
| Lead ID | string | Yes | — | ID of the lead to update. |
| Update Fields | collection | No | {} | Fields to change on the lead. Anything you leave out is left as it is. |
| — Address | fixedCollection | No | {} | Address of the lead. Nest the values under addressFields. |
| — — Street | string | No | — | Street address. |
| — — City | string | No | — | City. |
| — — State | string | No | — | State or region. |
| — — Postal Code | string | No | — | Postal or ZIP code. |
| — — Country | string | No | — | ISO 3166 alpha-2 country code |
| — Details | string | No | — | Description to set for the lead. |
| — Email | fixedCollection | No | {} | Email address for the lead. Nest the values under emailFields. |
| — — Email | string | No | — | Email address. |
| — — Category | string | No | — | Category label for this email address. |
| — Name | string | No | — | Name to set for the lead. |
| — Phone Numbers | fixedCollection | No | {} | Phone numbers for the lead. Nest the values under phoneFields. |
| — — Number | string | No | — | Phone number. |
| — — Category | string | No | — | Category label for this phone number. |
Opportunity: Create
| Parameter | Type | Required | Default | Description |
|---|
| Name | string | Yes | — | Name of the opportunity to create. |
Customer Source ID (customerSourceId) | string | No | — | ID of the customer source that generated this opportunity. |
Primary Contact ID (primaryContactId) | string | No | — | ID of the primary contact associated with this opportunity. |
Opportunity: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Opportunity ID | string | Yes | — | ID of the opportunity to delete. |
Opportunity: Get
| Parameter | Type | Required | Default | Description |
|---|
| Opportunity ID | string | Yes | — | ID of the opportunity to retrieve. |
Opportunity: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 5 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the search before results are returned. |
| — Company IDs | string | No | — | Comma-separated IDs of the primary companies to filter by. |
| — Customer Source IDs | string | No | — | Comma-separated IDs of the customer sources to filter by. |
Opportunity: Update
| Parameter | Type | Required | Default | Description |
|---|
| Opportunity ID | string | Yes | — | ID of the opportunity to update. |
| Update Fields | collection | No | {} | Fields to change on the opportunity. Anything you leave out is left as it is. |
— Customer Source ID (customer_source_id) | string | No | — | ID of the customer source associated with this opportunity. |
| — Name | string | No | — | Name to set for the opportunity. |
— Primary Contact ID (primary_contact_id) | string | No | — | ID of the primary contact for this opportunity. |
Person: Create
| Parameter | Type | Required | Default | Description |
|---|
| Name | string | Yes | — | Name of the person to create. |
| Additional Fields | collection | No | {} | Optional person fields to send with the create request. |
| — Address | fixedCollection | No | {} | Address of the person. Nest the values under addressFields. |
| — — Street | string | No | — | Street address. |
| — — City | string | No | — | City. |
| — — State | string | No | — | State or region. |
| — — Postal Code | string | No | — | Postal or ZIP code. |
| — — Country | string | No | — | ISO 3166 alpha-2 country code |
| — Details | string | No | — | Description to set for the person. |
| — Email Domain | string | No | — | Email domain used by the person. |
| — Emails | fixedCollection | No | {} | Email addresses for the person. Nest the values under emailFields. |
| — — Email | string | No | — | Email address. |
| — — Category | string | No | — | Category label for this email address. |
| — Phone Numbers | fixedCollection | No | {} | Phone numbers for the person. Nest the values under phoneFields. |
| — — Number | string | No | — | Phone number. |
| — — Category | string | No | — | Category label for this phone number. |
Person: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Person ID | string | Yes | — | ID of the person to delete. |
Person: Get
| Parameter | Type | Required | Default | Description |
|---|
| Person ID | string | Yes | — | ID of the person to retrieve. |
Person: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 5 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the search before results are returned. |
| — Name | string | No | — | Name of the person to filter by. |
Person: Update
| Parameter | Type | Required | Default | Description |
|---|
| Person ID | string | Yes | — | ID of the person to update. |
| Update Fields | collection | No | {} | Fields to change on the person. Anything you leave out is left as it is. |
| — Address | fixedCollection | No | {} | Address of the person. Nest the values under addressFields. |
| — — Street | string | No | — | Street address. |
| — — City | string | No | — | City. |
| — — State | string | No | — | State or region. |
| — — Postal Code | string | No | — | Postal or ZIP code. |
| — — Country | string | No | — | ISO 3166 alpha-2 country code |
| — Details | string | No | — | Description to set for the person. |
| — Email Domain | string | No | — | Email domain used by the person. |
| — Emails | fixedCollection | No | {} | Email addresses for the person. Nest the values under emailFields. |
| — — Email | string | No | — | Email address. |
| — — Category | string | No | — | Category label for this email address. |
| — Name | string | No | — | Name to set for the person. |
| — Phone Numbers | fixedCollection | No | {} | Phone numbers for the person. Nest the values under phoneFields. |
| — — Number | string | No | — | Phone number. |
| — — Category | string | No | — | Category label for this phone number. |
Project: Create
| Parameter | Type | Required | Default | Description |
|---|
| Name | string | Yes | — | Name of the project to create. |
| Additional Fields | collection | No | {} | Optional project fields to send with the create request. |
| — Assignee ID | string | No | — | ID of the user who will own the project. |
| — Details | string | No | — | Description of the project to create. |
| — Status | options | No | Open | Status to set for the project. |
| | | | Options: Completed, Open |
Project: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Project ID | string | Yes | — | ID of the project to delete. |
Project: Get
| Parameter | Type | Required | Default | Description |
|---|
| Project ID | string | Yes | — | ID of the project to retrieve. |
Project: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 5 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the search before results are returned. |
| — Name | string | No | — | Name of the project to filter by. |
Project: Update
| Parameter | Type | Required | Default | Description |
|---|
| Project ID | string | Yes | — | ID of the project to update. |
| Update Fields | collection | No | {} | Fields to change on the project. Anything you leave out is left as it is. |
| — Assignee ID | string | No | — | ID of the user who will own the project. |
| — Details | string | No | — | Description to set for the project. |
| — Name | string | No | — | Name to set for the project. |
| — Status | options | No | Open | Status to set for the project. |
| | | | Options: Completed, Open |
Task: Create
| Parameter | Type | Required | Default | Description |
|---|
| Name | string | Yes | — | Name of the task to create. |
| Additional Fields | collection | No | {} | Optional task fields to send with the create request. |
| — Assignee ID | string | No | — | ID of the user who will own the task. |
| — Details | string | No | — | Description of the task to create. |
| — Priority | options | No | High | Priority to set for the task. |
| | | | Options: High, None |
| — Status | options | No | Open | Status to set for the task. |
| | | | Options: Completed, Open |
Task: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Task ID | string | Yes | — | ID of the task to delete. |
Task: Get
| Parameter | Type | Required | Default | Description |
|---|
| Task ID | string | Yes | — | ID of the task to retrieve. |
Task: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 5 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the search before results are returned. |
| — Assignee IDs | string | No | — | Comma-separated IDs of assignees to filter by. |
| — Project IDs | string | No | — | Comma-separated IDs of projects to filter by. |
Task: Update
| Parameter | Type | Required | Default | Description |
|---|
| Task ID | string | Yes | — | ID of the task to update. |
| Update Fields | collection | No | {} | Fields to change on the task. Anything you leave out is left as it is. |
| — Assignee ID | string | No | — | ID of the user who will own the task. |
| — Details | string | No | — | Description to set for the task. |
| — Name | string | No | — | Name to set for the task. |
| — Priority | options | No | High | Priority to set for the task. |
| | | | Options: High, None |
| — Status | options | No | Open | Status to set for the task. |
| | | | Options: Completed, Open |
User: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 5 | Max number of results to return. (shown when Return All is false) |
All Operations
| Parameter | Type | Required | Default | Description |
|---|
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. |
Output Data
The Copper record is merged onto the input item JSON — the fields the API returns are spread over the incoming item, so anything your upstream nodes put on the item is still there unless Copper returns a field with the same name. Binary data on the input item is forwarded unchanged.
Item counts depend on the operation:
- Create, Get, Update and Delete produce exactly one output item per input item.
- Get Many (
getAll, on every resource — company, customerSource, lead, opportunity, person, project, task and user) fans out: one output item per record returned. An input item that matches ten companies leaves ten output items; an input item that matches nothing leaves no output items at all, so a downstream node may see fewer items than it received.
The node does not add fields of its own — the merged fields are whatever the Copper API returns for that resource, which for records includes the record id you need for later Get, Update and Delete calls. A typical Get Many item looks like this:
{
"orderRef": "SO-4192",
"id": 12345678,
"name": "Acme Corporation",
"email_domain": "acme.com",
"details": "Leading technology company",
"date_created": 1765432100,
"date_modified": 1765432900
}
Here orderRef came in on the item and the rest came back from Copper. Reference the result downstream by expression, for example {{ $json.id }}.
Failures do not merge anything onto the item: with error handling set to continue or errorPort a failed item is replaced by an error item instead.
Usage Examples
- Create a new company in Copper CRM
- List all leads from Copper
- Update a person record in Copper
- Delete an opportunity by ID in Copper
- Get all tasks assigned to a user in Copper
Example Configuration
Create a company with an address and a phone number taken from the incoming item:
{
"type": "copper",
"parameters": {
"resource": "company",
"operation": "create",
"name": "{{ $json.companyName }}",
"additionalFields": {
"details": "{{ $json.summary }}",
"email_domain": "{{ $json.domain }}",
"address": {
"addressFields": {
"street": "{{ $json.street }}",
"city": "{{ $json.city }}",
"state": "{{ $json.state }}",
"postal_code": "{{ $json.postcode }}",
"country": "US"
}
},
"phone_numbers": {
"phoneFields": {
"number": "{{ $json.phone }}",
"category": "work"
}
}
}
}
}
List up to 25 companies in a single country, one output item per company:
{
"type": "copper",
"parameters": {
"resource": "company",
"operation": "getAll",
"returnAll": false,
"limit": 25,
"filterFields": {
"country": "US"
}
}
}
Create an opportunity and link it to an existing contact and customer source:
{
"type": "copper",
"parameters": {
"resource": "opportunity",
"operation": "create",
"name": "{{ $json.dealName }}",
"customerSourceId": "{{ $json.sourceId }}",
"primaryContactId": "{{ $json.contactId }}"
}
}
Update a person, adding an email address and refreshing the description:
{
"type": "copper",
"parameters": {
"resource": "person",
"operation": "update",
"personId": "{{ $json.id }}",
"updateFields": {
"details": "Synced from the signup form on {{ $datetime.now }}",
"emails": {
"emailFields": {
"email": "{{ $json.email }}",
"category": "work"
}
}
}
}
}
Create a follow-up task and assign it to a Copper user:
{
"type": "copper",
"parameters": {
"resource": "task",
"operation": "create",
"name": "Follow up with {{ $json.contactName }}",
"additionalFields": {
"assignee_id": "{{ $json.ownerId }}",
"details": "Call back about {{ $json.dealName }}",
"priority": "High",
"status": "Open"
}
}
}
Fetch every user in the account so you can map names to assignee IDs:
{
"type": "copper",
"parameters": {
"resource": "user",
"operation": "getAll",
"returnAll": true
}
}
Error Handling
| Mode | Behavior |
|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Use Copper to manage CRM records (companies, leads, opportunities, people, projects, tasks) in Copper CRM for Google Workspace.