Copper v2

Provides integration with Copper CRM to search and retrieve records, maintain CRM data, manage relationships, and work with file metadata and webhook subscriptions through operation templates.

Revision History

0.0.1.13 - Initial release.

Connection

Use a Connection to store your Copper API key and the email address of the user who generated it.

Property Type Description
ApiKey Masked Required Copper API key.
UserName String Required email address of the API key owner.

Setup Notes

  1. Generate an API key in Copper using an administrator account. See Copper's Generating an API Key instructions.
  2. Enter the key in ApiKey and its owner's email address in UserName.
  3. Run the Connection test. It performs a read-only user search limited to one result.
  4. Select the Node Method, then select an operation template to populate OperationId and expose the operation's input fields.

Methods

Choose the method that matches the action you want to perform. Select a template instead of entering OperationId manually. Searches and email lookups remain read operations even when Copper uses HTTP POST for them.

Read methods accept operation-specific path and query values in Options. Search criteria belong in the single Filter object. Write methods take an Items array, with identifiers and body fields together in each item.

Query

Searches users, leads, people, companies, opportunities, projects, tasks, and activities. You can also search by custom fields or retrieve an entity's activities using the corresponding template. Results page automatically.

Parameter Type Description
Connection Connection Copper credentials.
OperationId String Operation identifier populated by the selected template.
Options Object Optional path and query values for the operation, such as the entity ID for an activity search.
Filter Object Optional structured search criteria. Use the fields exposed by the selected template.
Return Type Description
Response Array One Copper record per result. No matches returns zero rows. Read rows omit the Flowgear object.

Retrieve

Retrieves a single record, account details, a custom definition, file metadata, a signed file-upload URL, or a webhook subscription.

Use the Fetch Current User template to retrieve the API key owner's user record without supplying an ID. User lookup by ID requires a numeric Options.id. Person lookup by email uses Filter for its lookup body.

Parameter Type Description
Connection Connection Copper credentials.
OperationId String Operation identifier populated by the selected template.
Options Object Path and query values required by the operation. Omit when the template requires none.
Filter Object Lookup body for operations that require one, such as fetching a person by email. Omit for other operations.
Return Type Description
Response Array The retrieved Copper object as one row, without a Flowgear object. A missing record reported as HTTP 404 fails the Node.

List

Lists reference data and related records, including customer sources, lead statuses, contact types, loss reasons, pipelines and stages, activity types, tags, custom definitions, field layouts, relationships, attached files, and webhook subscriptions.

Parameter Type Description
Connection Connection Copper credentials.
OperationId String Operation identifier populated by the selected template.
Options Object Path and query values required by the operation, such as an entity type and ID.
Return Type Description
Response Array Copper reference or related records without a Flowgear object. Activity types return one object containing both the user and system arrays.

Create

Creates CRM records, activities, custom definitions, relationships, file attachments, or webhook subscriptions using the selected template.

Parameter Type Description
Connection Connection Copper credentials.
OperationId String Operation identifier populated by the selected template.
Items Array One request object per item, containing the template's body fields and any required path or query identifiers.
Return Type Description
Response Array Copper response fields with Flowgear.IsSuccess, Flowgear.StatusMessage, and Flowgear.Request for each processed item.

Update

Updates CRM records or custom definitions. Record updates are partial: omitted fields remain unchanged, and an explicit null clears a supplied field. Required path identifiers cannot be null.

Parameter Type Description
Connection Connection Copper credentials.
OperationId String Operation identifier populated by the selected template.
Items Array One update object per item, containing the required identifiers and the fields you want to change.
Return Type Description
Response Array Copper response fields with Flowgear.IsSuccess, Flowgear.StatusMessage, and Flowgear.Request for each processed item.

Delete

Deletes records, custom-field definitions, relationships, attached files, or webhook subscriptions using the selected template.

Parameter Type Description
Connection Connection Copper credentials.
OperationId String Operation identifier populated by the selected template.
Items Array One request object per item with the identifiers and any body fields required by the template. A delete without a body still requires an item containing its identifiers.
Return Type Description
Response Array Copper response fields, when present, with Flowgear.IsSuccess, Flowgear.StatusMessage, and Flowgear.Request for each processed item.

Upsert

Creates or updates a lead using matching criteria. Supply the lead's writable fields under properties and the matching criteria under match. The operation supports matching by a standard field or a custom field.

Parameter Type Description
Connection Connection Copper credentials.
OperationId String Operation identifier populated by the selected template.
Items Array One lead upsert request per item, with properties and match structured as shown by the template.
Return Type Description
Response Array Copper response fields with Flowgear.IsSuccess, Flowgear.StatusMessage, and Flowgear.Request for each processed item.

Convert

Converts a lead to a person, with optional company and opportunity overrides. Supply the lead ID in Items.id. Optional overrides belong under Items.details.person, Items.details.company, and Items.details.opportunity.

For a company override, supply either id or name; supplying both fails validation. Opportunity monetary values accept decimals.

Parameter Type Description
Connection Connection Copper credentials.
OperationId String Operation identifier populated by the selected template.
Items Array One conversion request per item, containing the lead id and optional details overrides.
Return Type Description
Response Array Copper conversion data, including person.id, with Flowgear.IsSuccess, Flowgear.StatusMessage, and Flowgear.Request for each processed item.

Usage Notes

Pagination and streaming

Query manages page_number and page_size automatically. Do not supply these fields in Filter. Lead, person, and opportunity searches use pages of 25 records; other searches use pages of 200. Where the operation supports it, the default sort is date_created ascending unless you supply your own sort.

The first read completes before output streaming begins. Later search pages are fetched as downstream Nodes consume the results. Empty or short pages end the search. Repeated full pages fail the Node, and reaching the 100,000-record search window fails with a request to narrow the filter. Use smaller filter ranges for larger exports.

Filters and field values

String and integer collections exposed by templates use CSV strings on input and output. For example, supply Filter.ids as 1,2. Tags containing commas require CSV quoting, such as one,"two,three". Double any quote inside a quoted value. An empty CSV string means an empty collection; "" means one empty string.

Values preserve their spacing and case. Integer CSV fields reject whitespace, fractions, empty elements, and values outside the signed 64-bit range. Enum filters require exact values:

  • Task statuses: Open,Completed.
  • Opportunity statuses: Open,Won,Lost,Abandoned.
  • Priorities: None,Low,Medium,High.

Use a string for company or person name searches. Company domain searches use Filter.email_domains as CSV; Filter.email_domain is not supported.

Nested objects and object collections, such as addresses and contact details, remain structured. Dynamic custom-field values retain their JSON types, including arrays, objects, scalars, and nulls. Read responses preserve nested objects and related-record types and IDs.

Writing records and handling failures

Each write method performs one request per item. The first item completes before output streaming begins, and later items are processed as the response is consumed. An empty input sends no write request.

If the first item fails, the Node fails. Handled validation, provider, or transport failures on later items produce a response with Flowgear.IsSuccess set to false; processing then continues with subsequent items. Check Flowgear.IsSuccess and Flowgear.StatusMessage downstream. Flowgear.Request contains the original input item so you can identify the affected record.

Validate complete source documents before starting writes when you need to reject an entire invalid document. Streaming input can allow an earlier item to be written before a later input error is discovered.

Writable record templates exclude computed fields and timestamps. Use relationship operations to change a person's company association instead of supplying company_id in a person update.

File uploads

Use Retrieve to obtain a signed upload URL. Complete the S3 upload separately using the returned upload details, then use the Copper file-attachment template under Create to relate the uploaded key to the entity. The Copper Node does not perform the S3 upload or send Copper credentials to S3.

Examples

Search companies by domain

Select the company-search template under Query. Supply this Filter to search two domains:

{
  "email_domains": "example.invalid,other.invalid"
}

Consume Response to receive company records. Pagination runs automatically; do not add paging fields to the filter.

Update a record and clear a field

Select the company-update template under Update. Supply this Items array, replacing 10 with your Copper company ID:

[
  {
    "id": 10,
    "details": null
  }
]

This request clears details and leaves omitted fields unchanged. Check the returned Flowgear.IsSuccess value before continuing with actions that depend on the update.

Known Issues

  • Tag-name-only listing and the manual last_tag_value cursor are not supported. Large tag exports may be incomplete because tag pagination is not verified.