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.
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.
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
Copper manages companies, leads, opportunities, people, projects, and tasks within Copper CRM. It is the right tool when you need to create, update, retrieve, or delete specific CRM records, or list all records of a certain type. It produces updated CRM records, new entries, or detailed lists of existing companies, leads, opportunities, people, projects, and tasks.