Node reference
Copper
Copper node reference - all 72 operations, the credential it needs, and a worked example.
Copper CRM Developer API (Commerce/CRM). 72 operations: people, leads (including upsert and lead conversion), companies, opportunities and their pipelines, stages and loss reasons; projects, tasks and activity logging; per-record activity feeds; related items and connect-field connections; custom field definitions, activity types and tags; attached-file reads; account and user lookups; and webhook subscription management.
Credential: Copper credential - see Credentials.
Copper has no per-operation scope system. Its OAuth2 flow publishes exactly ONE scope, developer/v1/all - Copper's own table describes it as "Read and modify user records" and adds "more granular scopes will be added in the future" - and states it is backward compatible with the legacy API Key authentication that Pipory's credential uses. An API key simply inherits the role and permissions of the Copper user who generated it, so every operation below either works or the whole credential does not, and a 401 or 403 is never a missing checkbox. Two things it usually IS: the key is wrong or revoked (regenerate it under Copper Settings > Integrations > API Keys), or the email stored alongside it is not the address of the user who generated that key - Copper sends both on every request as X-PW-AccessToken and X-PW-UserEmail and checks them together. Limit the blast radius by generating the key under a Copper user with a restricted role rather than an administrator.
| Operation | What it does |
|---|
createPerson | Create person |
updatePerson | Update person |
getPerson | Get person |
fetchPersonByEmail | Find person by email |
searchPeople | Search people |
deletePerson | Delete person |
listPersonActivities | List a person's activities |
listContactTypes | List contact types |
| Operation | What it does |
|---|
createLead | Create lead |
updateLead | Update lead |
getLead | Get lead |
upsertLead | Upsert lead (match or create) |
convertLead | Convert lead to person / company / opportunity |
searchLeads | Search leads |
deleteLead | Delete lead |
listLeadActivities | List a lead's activities |
listCustomerSources | List customer sources |
listLeadStatuses | List lead statuses |
| Operation | What it does |
|---|
createCompany | Create company |
updateCompany | Update company |
getCompany | Get company |
searchCompanies | Search companies |
deleteCompany | Delete company |
listCompanyActivities | List a company's activities |
| Operation | What it does |
|---|
createOpportunity | Create opportunity |
updateOpportunity | Update / move opportunity |
getOpportunity | Get opportunity |
searchOpportunities | Search opportunities |
deleteOpportunity | Delete opportunity |
listPipelines | List pipelines |
listPipelineStages | List all pipeline stages |
listStagesInPipeline | List stages in one pipeline |
listLossReasons | List loss reasons |
| Operation | What it does |
|---|
createProject | Create project |
updateProject | Update project |
getProject | Get project |
searchProjects | Search projects |
deleteProject | Delete project |
| Operation | What it does |
|---|
createTask | Create task |
updateTask | Update / complete task |
getTask | Get task |
searchTasks | Search tasks |
deleteTask | Delete task |
| Operation | What it does |
|---|
createActivity | Log activity (note / call / meeting) |
updateActivity | Update activity |
getActivity | Get activity |
searchActivities | Search activities |
deleteActivity | Delete activity |
listActivityTypes | List activity types |
| Operation | What it does |
|---|
listRelated | List everything related to a record |
listRelatedOfType | List related records of one type |
relateRecord | Relate a record |
unrelateRecord | Remove a relationship |
| Operation | What it does |
|---|
listConnections | List connect-field connections |
createConnection | Create a connection |
deleteConnection | Delete a connection |
| Operation | What it does |
|---|
listCustomFieldDefinitions | List custom field definitions |
getCustomFieldDefinition | Get a custom field definition |
listCustomActivityTypes | List custom activity types |
getCustomActivityType | Get a custom activity type |
listTags | List all tags |
| Operation | What it does |
|---|
listFiles | List files attached to a record |
getFileMetadata | Get attached file metadata |
| Operation | What it does |
|---|
getAccount | Get account details |
getApiUser | Get the API user (whoami) |
getUser | Get user by ID |
searchUsers | Search users |
| Operation | What it does |
|---|
listWebhooks | List webhook subscriptions |
getWebhook | Get webhook subscription |
createWebhook | Create webhook subscription |
updateWebhook | Update webhook subscription |
deleteWebhook | Delete webhook subscription |
Find a person by email — with a POST, not a GET
Copper breaks REST convention in a way that trips up anything written from assumption: listing and searching are POST /{resource}/search with the filters in a JSON body, and the per-record lookups post a body too. Every mistake found in an earlier inventory of this API made it tidier than it is; this is one of the places it is not.
Set Operation to fetchPersonByEmail, then fill in:
| Field | Value | Notes |
|---|
email | {{ myTrigger.email }} | Posted in a JSON body — this is not a GET with a query string |
Sets {{person.id}} and {{person.person}}. Copper allows 180 requests/minute and sends no Retry-After header, so the node surfaces that number in its 429 message.