Reference · Tools

Copper

Manage companies, leads, opportunities, people, projects, tasks, users, and customer sources in Copper CRM

Action Marketing v1

The Copper node lets you create, read, update, and delete records across eight resource types in Copper CRM — the CRM built natively for Google Workspace. You can, for example, automatically create a new lead in Copper whenever a form is submitted, then update the opportunity stage as deals progress. Users and customer sources are also accessible for reading, making it easy to enrich or route records without leaving your workflow.

Node type
Action
Parameters
69
Outputs
Output, Error
Credentials
Copper API

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

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Copper API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Companycompany
Customer SourcecustomerSource
Leadlead
Opportunityopportunity
Personperson
Projectproject
Tasktask
Useruser

Operations

The operations available depend on the resource you select.

Company

OperationValueDescription
CreatecreateCreate a new company.
DeletedeleteDelete a company by ID.
GetgetRetrieve a single company by ID.
Get ManygetAllRetrieve many companies, with optional filters.
UpdateupdateUpdate an existing company by ID.

Customer Source

OperationValueDescription
Get ManygetAllRetrieve the customer sources defined in your Copper account.

Lead

OperationValueDescription
CreatecreateCreate a new lead.
DeletedeleteDelete a lead by ID.
GetgetRetrieve a single lead by ID.
Get ManygetAllRetrieve many leads, with optional filters.
UpdateupdateUpdate an existing lead by ID.

Opportunity

OperationValueDescription
CreatecreateCreate a new opportunity.
DeletedeleteDelete an opportunity by ID.
GetgetRetrieve a single opportunity by ID.
Get ManygetAllRetrieve many opportunities, with optional filters.
UpdateupdateUpdate an existing opportunity by ID.

Person

OperationValueDescription
CreatecreateCreate a new person.
DeletedeleteDelete a person by ID.
GetgetRetrieve a single person by ID.
Get ManygetAllRetrieve many people, with optional filters.
UpdateupdateUpdate an existing person by ID.

Project

OperationValueDescription
CreatecreateCreate a new project.
DeletedeleteDelete a project by ID.
GetgetRetrieve a single project by ID.
Get ManygetAllRetrieve many projects, with optional filters.
UpdateupdateUpdate an existing project by ID.

Task

OperationValueDescription
CreatecreateCreate a new task.
DeletedeleteDelete a task by ID.
GetgetRetrieve a single task by ID.
Get ManygetAllRetrieve many tasks, with optional filters.
UpdateupdateUpdate an existing task by ID.

User

OperationValueDescription
Get ManygetAllRetrieve 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

ParameterTypeRequiredDefaultDescription
NamestringYesName of the company to create.
Additional FieldscollectionNo{}Optional company fields to send with the create request.
— AddressfixedCollectionNo{}Address of the company. Nest the values under addressFields.
— — StreetstringNoStreet address.
— — CitystringNoCity.
— — StatestringNoState or region.
— — Postal CodestringNoPostal or ZIP code.
— — CountrystringNoISO 3166 alpha-2 country code
— DetailsstringNoDescription of the company to create.
— Email DomainstringNoEmail domain used by the company.
— Phone NumbersfixedCollectionNo{}Phone numbers for the company. Nest the values under phoneFields.
— — NumberstringNoPhone number.
— — CategorystringNoCategory label for this phone number.

Company: Delete

ParameterTypeRequiredDefaultDescription
Company IDstringYesID of the company to delete.

Company: Get

ParameterTypeRequiredDefaultDescription
Company IDstringYesID of the company to retrieve.

Company: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the search before results are returned.
— CountrystringNoISO 3166 alpha-2 country code to filter by.
— NamestringNoName of the company to filter by.

Company: Update

ParameterTypeRequiredDefaultDescription
Company IDstringYesID of the company to update.
Update FieldscollectionNo{}Fields to change on the company. Anything you leave out is left as it is.
— AddressfixedCollectionNo{}Address of the company. Nest the values under addressFields.
— — StreetstringNoStreet address.
— — CitystringNoCity.
— — StatestringNoState or region.
— — Postal CodestringNoPostal or ZIP code.
— — CountrystringNoISO 3166 alpha-2 country code
— DetailsstringNoDescription to set for the company.
— NamestringNoName to set for the company.
— Phone NumbersfixedCollectionNo{}Phone numbers for the company. Nest the values under phoneFields.
— — NumberstringNoPhone number.
— — CategorystringNoCategory label for this phone number.

Customer Source: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)

Lead: Create

ParameterTypeRequiredDefaultDescription
NamestringYesName of the lead to create.
Additional FieldscollectionNo{}Optional lead fields to send with the create request.
— AddressfixedCollectionNo{}Address of the lead. Nest the values under addressFields.
— — StreetstringNoStreet address.
— — CitystringNoCity.
— — StatestringNoState or region.
— — Postal CodestringNoPostal or ZIP code.
— — CountrystringNoISO 3166 alpha-2 country code
— EmailfixedCollectionNo{}Email address for the lead. Nest the values under emailFields.
— — EmailstringNoEmail address.
— — CategorystringNoCategory label for this email address.
— Phone NumbersfixedCollectionNo{}Phone numbers for the lead. Nest the values under phoneFields.
— — NumberstringNoPhone number.
— — CategorystringNoCategory label for this phone number.

Lead: Delete

ParameterTypeRequiredDefaultDescription
Lead IDstringYesID of the lead to delete.

Lead: Get

ParameterTypeRequiredDefaultDescription
Lead IDstringYesID of the lead to retrieve.

Lead: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the search before results are returned.
— CountrystringNoName of the country to filter by.
— NamestringNoName of the lead to filter by.

Lead: Update

ParameterTypeRequiredDefaultDescription
Lead IDstringYesID of the lead to update.
Update FieldscollectionNo{}Fields to change on the lead. Anything you leave out is left as it is.
— AddressfixedCollectionNo{}Address of the lead. Nest the values under addressFields.
— — StreetstringNoStreet address.
— — CitystringNoCity.
— — StatestringNoState or region.
— — Postal CodestringNoPostal or ZIP code.
— — CountrystringNoISO 3166 alpha-2 country code
— DetailsstringNoDescription to set for the lead.
— EmailfixedCollectionNo{}Email address for the lead. Nest the values under emailFields.
— — EmailstringNoEmail address.
— — CategorystringNoCategory label for this email address.
— NamestringNoName to set for the lead.
— Phone NumbersfixedCollectionNo{}Phone numbers for the lead. Nest the values under phoneFields.
— — NumberstringNoPhone number.
— — CategorystringNoCategory label for this phone number.

Opportunity: Create

ParameterTypeRequiredDefaultDescription
NamestringYesName of the opportunity to create.
Customer Source ID (customerSourceId)stringNoID of the customer source that generated this opportunity.
Primary Contact ID (primaryContactId)stringNoID of the primary contact associated with this opportunity.

Opportunity: Delete

ParameterTypeRequiredDefaultDescription
Opportunity IDstringYesID of the opportunity to delete.

Opportunity: Get

ParameterTypeRequiredDefaultDescription
Opportunity IDstringYesID of the opportunity to retrieve.

Opportunity: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the search before results are returned.
— Company IDsstringNoComma-separated IDs of the primary companies to filter by.
— Customer Source IDsstringNoComma-separated IDs of the customer sources to filter by.

Opportunity: Update

ParameterTypeRequiredDefaultDescription
Opportunity IDstringYesID of the opportunity to update.
Update FieldscollectionNo{}Fields to change on the opportunity. Anything you leave out is left as it is.
— Customer Source ID (customer_source_id)stringNoID of the customer source associated with this opportunity.
— NamestringNoName to set for the opportunity.
— Primary Contact ID (primary_contact_id)stringNoID of the primary contact for this opportunity.

Person: Create

ParameterTypeRequiredDefaultDescription
NamestringYesName of the person to create.
Additional FieldscollectionNo{}Optional person fields to send with the create request.
— AddressfixedCollectionNo{}Address of the person. Nest the values under addressFields.
— — StreetstringNoStreet address.
— — CitystringNoCity.
— — StatestringNoState or region.
— — Postal CodestringNoPostal or ZIP code.
— — CountrystringNoISO 3166 alpha-2 country code
— DetailsstringNoDescription to set for the person.
— Email DomainstringNoEmail domain used by the person.
— EmailsfixedCollectionNo{}Email addresses for the person. Nest the values under emailFields.
— — EmailstringNoEmail address.
— — CategorystringNoCategory label for this email address.
— Phone NumbersfixedCollectionNo{}Phone numbers for the person. Nest the values under phoneFields.
— — NumberstringNoPhone number.
— — CategorystringNoCategory label for this phone number.

Person: Delete

ParameterTypeRequiredDefaultDescription
Person IDstringYesID of the person to delete.

Person: Get

ParameterTypeRequiredDefaultDescription
Person IDstringYesID of the person to retrieve.

Person: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the search before results are returned.
— NamestringNoName of the person to filter by.

Person: Update

ParameterTypeRequiredDefaultDescription
Person IDstringYesID of the person to update.
Update FieldscollectionNo{}Fields to change on the person. Anything you leave out is left as it is.
— AddressfixedCollectionNo{}Address of the person. Nest the values under addressFields.
— — StreetstringNoStreet address.
— — CitystringNoCity.
— — StatestringNoState or region.
— — Postal CodestringNoPostal or ZIP code.
— — CountrystringNoISO 3166 alpha-2 country code
— DetailsstringNoDescription to set for the person.
— Email DomainstringNoEmail domain used by the person.
— EmailsfixedCollectionNo{}Email addresses for the person. Nest the values under emailFields.
— — EmailstringNoEmail address.
— — CategorystringNoCategory label for this email address.
— NamestringNoName to set for the person.
— Phone NumbersfixedCollectionNo{}Phone numbers for the person. Nest the values under phoneFields.
— — NumberstringNoPhone number.
— — CategorystringNoCategory label for this phone number.

Project: Create

ParameterTypeRequiredDefaultDescription
NamestringYesName of the project to create.
Additional FieldscollectionNo{}Optional project fields to send with the create request.
— Assignee IDstringNoID of the user who will own the project.
— DetailsstringNoDescription of the project to create.
— StatusoptionsNoOpenStatus to set for the project.
Options: Completed, Open

Project: Delete

ParameterTypeRequiredDefaultDescription
Project IDstringYesID of the project to delete.

Project: Get

ParameterTypeRequiredDefaultDescription
Project IDstringYesID of the project to retrieve.

Project: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the search before results are returned.
— NamestringNoName of the project to filter by.

Project: Update

ParameterTypeRequiredDefaultDescription
Project IDstringYesID of the project to update.
Update FieldscollectionNo{}Fields to change on the project. Anything you leave out is left as it is.
— Assignee IDstringNoID of the user who will own the project.
— DetailsstringNoDescription to set for the project.
— NamestringNoName to set for the project.
— StatusoptionsNoOpenStatus to set for the project.
Options: Completed, Open

Task: Create

ParameterTypeRequiredDefaultDescription
NamestringYesName of the task to create.
Additional FieldscollectionNo{}Optional task fields to send with the create request.
— Assignee IDstringNoID of the user who will own the task.
— DetailsstringNoDescription of the task to create.
— PriorityoptionsNoHighPriority to set for the task.
Options: High, None
— StatusoptionsNoOpenStatus to set for the task.
Options: Completed, Open

Task: Delete

ParameterTypeRequiredDefaultDescription
Task IDstringYesID of the task to delete.

Task: Get

ParameterTypeRequiredDefaultDescription
Task IDstringYesID of the task to retrieve.

Task: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the search before results are returned.
— Assignee IDsstringNoComma-separated IDs of assignees to filter by.
— Project IDsstringNoComma-separated IDs of projects to filter by.

Task: Update

ParameterTypeRequiredDefaultDescription
Task IDstringYesID of the task to update.
Update FieldscollectionNo{}Fields to change on the task. Anything you leave out is left as it is.
— Assignee IDstringNoID of the user who will own the task.
— DetailsstringNoDescription to set for the task.
— NamestringNoName to set for the task.
— PriorityoptionsNoHighPriority to set for the task.
Options: High, None
— StatusoptionsNoOpenStatus to set for the task.
Options: Completed, Open

User: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum 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

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes 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.

Frequently asked questions

What credentials do I need to connect the Copper node?

You need a Copper API key and the email address of the Copper user that key belongs to — both are required together as the 'Copper API' credential type. You can generate an API key from your Copper account settings. The email must match the account that owns the key, not just any user in your workspace.

Which resource types support full create/update/delete, and which are read-only?

Companies, leads, opportunities, people, projects, and tasks all support the full set of operations: create, get, get many, update, and delete. Users and customer sources are read-only — you can only use 'Get Many' on them. If you need to modify user records, that must be done directly inside Copper.

What happens when a Copper API call fails — does the workflow stop?

The node has two separate outputs: Output and Error. A failed API call routes to the Error output rather than halting the entire workflow, so you can handle failures explicitly — for example, logging the error or sending an alert — while letting successful operations continue on the main Output path.

Can I use this node to look up which sales rep owns a lead, or to list all customer sources?

Yes. The 'Get Many' operation on the Users resource returns Copper user records, letting you cross-reference ownership or assignees in your workflow logic. Similarly, 'Get Many' on Customer Sources returns the source list you've configured in Copper, which is useful for mapping incoming leads to the correct source without hardcoding values.

Is the Copper node specific to Google Workspace environments?

Copper CRM itself is designed for Google Workspace and integrates tightly with Gmail and Google Calendar, but the BusyBot node connects via the Copper REST API, so no Google authentication is required on the BusyBot side. You only need your Copper API key and associated email. That said, if your team uses Copper precisely because of its Google Workspace integration, this node fits naturally into workflows that also include Google Sheets, Gmail, or Google Drive nodes.

Build with the Copper node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Copper API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.