Basic
$29/mo
billed monthly
$23/mo
billed annually
per seat; 2,500 contact limit; 25 custom fields; no Leads or Sales opportunities objects
Google Workspace-native CRM with a Developer API v1 (leads, people, companies, opportunities, projects, tasks, activities, custom fields), lead upsert, small bulk endpoints (10 records), search, and webhooks that are never retried. Best for google Workspace teams that want a simple CRM inside Gmail.
The actions you pay for, as Copper prices them.
| Action | Cost |
|---|---|
| Atomically update the lead matching given criteria or create it. Match on name, email or a custom field (match.field_name 'custom' with custom_field_definition_id + value; the field must be available on Leads and filterable). 0 matches = create, 1 = update, >1 = 422 with matching IDs, >30 = 422 without IDs | none |
| Fetch a person by email (email is the unique key for People) | none |
| List/search people with filters (AND across criteria; some fields filter on empty, assignee_ids -2 = unassigned) | none |
| List/search companies with filters (AND across criteria; some fields filter on empty, assignee_ids -2 = unassigned) | none |
| List/search leads with filters (AND across criteria; some fields filter on empty, assignee_ids -2 = unassigned) | none |
| List/search opportunities with filters (AND across criteria; some fields filter on empty, assignee_ids -2 = unassigned) | none |
| Bulk create companies (beta Bulk API; email domains must not overlap existing companies, else those records fail) | none |
| Create a webhook subscription. type: lead, person, company, opportunity, project, task (overview also lists activity_log); event: new, update, delete | none |
US dollars, as Copper's pricing page shows them on 25 Oct 2026. Monthly and annual billing are shown apart.
Free tier No free plan. 14-day free trial, no credit card; signup is Google-only ('Continue with Google', Copper only works with Gmail & Google Workspace).
$29/mo
billed monthly
$23/mo
billed annually
per seat; 2,500 contact limit; 25 custom fields; no Leads or Sales opportunities objects
$69/mo
billed monthly
$59/mo
billed annually
per seat; 15,000 contact limit; 50 custom fields; workflows, bulk email, integrations
$134/mo
billed monthly
$99/mo
billed annually
per seat; unlimited contacts and custom fields; email series, custom reports, Okta SSO
All API calls: 180 requests per minute on a rolling window, 429 when exceeded.
Bulk APIs: additional 3 requests/second and max 10 records per request. Webhook notifications: 600 per minute and 1,800 per 10 minutes per account.
Copper uses API key. The steps below follow Copper's own docs.
curl -X PUT "https://api.copper.com/developer_api/v1/leads/upsert" \
-H "X-PW-AccessToken: $COPPER_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'| What | Where |
|---|---|
| Documentation | developer.copper.com |
| API reference | developer.copper.com/introduction/requests.html |
| OpenAPI spec | developer.copper.com/download/copper_postman_collection.json |
| Changelog | developer.copper.com/introduction/changelog.html |
| Base URL | https://api.copper.com/developer_api/v1 |
| SDKs | Embedded integration SDK (for apps inside Copper) |
Other CRM tools in this directory, each with its own review.
Best for start-ups and agencies wanting a free/cheap CRM with API, webhooks and MCP on every plan.
Attio API reviewBest for inside-sales teams that call and email from the CRM.
Close API reviewBest for agencies, VCs and founder-led teams that want a simple CRM their agents can write to.
folk API reviewFour things to settle first, each read off Copper's own pages.
Tell us what you want Copper to do in your stack. We will show you how we would wire it into your data, outbound or CRM, and what we would check first.
Read from copper.com/pricing, developer.copper.com/introduction/requests.html and developer.copper.com/introduction/authentication.html. Verified 25 Oct 2026.
| Method | Path | What it does | Cost |
|---|---|---|---|
| PUT | /leads/upsert | Atomically update the lead matching given criteria or create it. Match on name, email or a custom field (match.field_name 'custom' with custom_field_definition_id + value; the field must be available on Leads and filterable). 0 matches = create, 1 = update, >1 = 422 with matching IDs, >30 = 422 without IDs | none |
| POST | /people/fetch_by_email | Fetch a person by email (email is the unique key for People) | none |
| POST | /people/search | List/search people with filters (AND across criteria; some fields filter on empty, assignee_ids -2 = unassigned) | none |
| POST | /companies/search | List/search companies with filters (AND across criteria; some fields filter on empty, assignee_ids -2 = unassigned) | none |
| POST | /leads/search | List/search leads with filters (AND across criteria; some fields filter on empty, assignee_ids -2 = unassigned) | none |
| POST | /opportunities/search | List/search opportunities with filters (AND across criteria; some fields filter on empty, assignee_ids -2 = unassigned) | none |
| POST | /companies/bulk_create | Bulk create companies (beta Bulk API; email domains must not overlap existing companies, else those records fail) | none |
| POST | /webhooks | Create a webhook subscription. type: lead, person, company, opportunity, project, task (overview also lists activity_log); event: new, update, delete | none |
No endpoint matches that filter.