UPSERT a Lead¶
PUT https://api.copper.com/developer_api/v1/leads/upsert
Note that this endpoint is eligible to return computed custom field values, click here for more information.
Functionality¶
"Upsert" (update + insert) will atomically do the following:
- Check for the existence of a Lead matching certain criteria
- If one exists, update it with the supplied parameters.
- If not, create a new Lead with the supplied parameters.
- This is particularly useful to avoid creating duplicate Leads.
Match Criteria¶
The supported match criteria are:
- Name
- Custom Fields
To match on a Custom Field, the corresponding Custom Field Definition must be available on Leads and included in filters. (These settings may be viewed and edited in the web application via System Settings -> Custom Fields.)
Match Outcomes¶
Match outcomes are handled as follows:
- If no matches are found, create a new Lead.
- If exactly one match is found, update that Lead.
- If more than one match is found, return a 422 response with the IDs of the matching Leads.
- If more than 30 matches are found, return a 422 response without the IDs of the matching Leads.
Request body¶
{
"properties": {
"name": "My Lead",
"email": {
"email": "mylead@gmail.test",
"category": "work"
}
},
"match": {
"field_name": "email",
"field_value": "mylead@gmail.test"
}
}
Example Requests¶
UPSERT a Lead¶
curl --location --request PUT "https://api.copper.com/developer_api/v1/leads/upsert" \
--header "X-PW-AccessToken: YOUR_TOKEN_HERE" \
--header "X-PW-Application: developer_api" \
--header "X-PW-UserEmail: YOUR_EMAIL_HERE" \
--header "Content-Type: application/json" \
--data "{
\"properties\": {
\"name\": \"My Lead\",
\"email\": {
\"email\": \"mylead@gmail.test\",
\"category\": \"work\"
}
},
\"match\": {
\"field_name\": \"email\",
\"field_value\": \"mylead@gmail.test\"
}
}"
{
"id": 8982702,
"name": "My Lead",
"prefix": null,
"first_name": "My",
"last_name": "Lead",
"middle_name": null,
"suffix": null,
"address": null,
"assignee_id": null,
"company_name": null,
"customer_source_id": null,
"details": null,
"email": {
"email": "mylead@gmail.test",
"category": "work"
},
"interaction_count": 0,
"monetary_unit": null,
"monetary_value": null,
"socials": [],
"status": "New",
"status_id": 208231,
"tags": [],
"title": null,
"websites": [],
"phone_numbers": [],
"custom_fields": [
{
"custom_field_definition_id": 100764,
"value": null
},
{
"custom_field_definition_id": 103481,
"value": null
},
{
"custom_field_definition_id": 128735,
"value": null
}
],
"date_created": 1489531171,
"date_modified": 1512006056,
"date_last_contacted": null
}