Appbricx
Docs
FeaturesPricingStart free

Get started

OverviewWhat Appbricx isQuickstart with a coding agentQuickstart with the builderCore concepts

Guides

Data and tablesAccess and rolesBusiness rulesSign-inCustom screensRealtime and topicsWorkflows, schedules and webhooksServer functionsAI in your appPaymentsFilesMessagesIntegrationsVerifyPublishing, domains and rollbackOperating your appExport and self-hostSelf-host install

Tutorials

Build a booking app with Claude CodeMulti-user todo listClient portalSlack on new sign-upTemplates

Reference

Reference homeFrontend SDKHTTP APIMCP toolsCLIIntegrations catalogContract formatAI key resolutionRun Appbricx locally

Copper

Create people, track opportunities, and manage relationships in Copper CRM.

CRM and salesAPI key20 actionsAll integrations

On this page
  1. Connect
  2. Call it from a workflow
  3. Actions (20)
  4. createOpportunity
  5. createPerson
  6. convertLead
  7. createActivity
  8. createCompany
  9. createLead
  10. createProject
  11. createTask
  12. custom_api_call
  13. searchForACompany
  14. searchForALead
  15. searchForAnActivity
  16. searchForAnOpportunity
  17. searchForAPerson
  18. searchForAProject
  19. updateCompany
  20. updateLead
  21. updateOpportunity
  22. updatePerson
  23. updateProject
  24. Details

Connect

Auth type: API key (secret_text). Paste the API key (or token) from the provider's settings into the connect dialog. It is encrypted at rest and only decrypted on the server when an action runs.

  • In the editor: Backend panel, Integrations tab, then Connect. This connects it for the project.
  • For every project in a workspace: Workspace settings, Integrations.
  • Owners and admins choose which integrations members may connect in the admin panel (Integrations tab), and can attach their own OAuth app there.

Call it from a workflow

Pass the action name and its input. The call resolves with { success, output, error? }; a missing connection resolves with success false and the reason. See ctx.integrations.invoke and ctx.integrations.call.

Native workflow
// .workflow.js (native ctx)
export async function run(ctx) {
  const res = await ctx.integrations.invoke("copper", "createOpportunity", {
    "name": "<name>"
  });
  if (!res.success) throw new Error(res.error);
  ctx.log.info("Copper answered", { output: res.output });
}
defineWorkflow module
// defineWorkflow module (@app/sdk ctx)
import { defineWorkflow } from "@app/sdk";

export default defineWorkflow({
  id: "copper-createopportunity",
  name: "Copper: Create Opportunity",
  description: "Calls Copper when a row is created.",
  trigger: { type: "entity_event", entity: "tickets", event: "created" },
  async run(ctx, event) {
    const res = await ctx.integrations.call("copper", {
      "action": "createOpportunity",
      "name": "<name>"
    }) as { success: boolean; error?: string };
    if (!res.success) throw new Error(res.error);
  },
});
From an app (connector proxy)
curl -X POST "$APP_ORIGIN/__appbricx/connector-proxy/copper/createOpportunity" \
  -H "Authorization: Bearer $APP_KEY" \
  -H "content-type: application/json" \
  -d '{"props":{"name":"<name>"}}'

Actions

createOpportunityin catalog

Create Opportunity. Adds a new opportunity.

Also accepted as create_opportunity.

InputTypeDescription
namerequiredtextThe name of the opportunity
pipelineIdoptionalid (picked from your account)select a Pipeline
pipelineStageIdoptionalid (picked from your account)Select a stage
primaryContactIdoptionalid (picked from your account)select a primary contact

createPersonin catalog

Create Person. Adds a new person/contact.

Also accepted as create_person.

InputTypeDescription
namerequiredtextFull Name
emailsrequiredarrayEmails
phone_numbersoptionalarrayPhone Numbers
address_streetoptionaltextStreet
address_cityoptionaltextCity
address_stateoptionaltextState/Region
address_postal_codeoptionaltextPostal Code
address_countryoptionaltextCountry

convertLead

Convert Lead. Converts a lead into a person (optionally with company/opportunity).

InputTypeDescription
leadIdrequiredid (picked from your account)select a Lead
companyIdoptionalid (picked from your account)select a Company
opportunityIdoptionalid (picked from your account)select an Opportunity

createActivity

Create Activity. Logs an activity related to CRM entities.

InputTypeDescription
entityrequiredone of "person" | "company" | "lead" | "opportunity" | "project" | "task"Select parent entity
entityItemIdrequiredid (picked from your account)Select Resource
detailsoptionaltextThe details of the project
typerequiredid (picked from your account)Select activity Type

createCompany

Create Company. Adds a new company.

InputTypeDescription
namerequiredtextFull Name
email_domainoptionaltextE.g. democompany.com
detailsoptionaltextDetails
phone_numbersoptionalarrayPhone Numbers
address_streetoptionaltextStreet
address_cityoptionaltextCity
address_stateoptionaltextState/Region
address_postal_codeoptionaltextPostal Code
address_countryoptionaltextCountry
primaryContactIdoptionalid (picked from your account)select a primary contact

createLead

Create Lead. Adds a new lead.

InputTypeDescription
namerequiredtextFull Name
emailrequiredtextEmail
categoryrequiredtextCategory of the email address (e.g., work, personal)
phone_numbersoptionalarrayPhone Numbers
address_streetoptionaltextStreet
address_cityoptionaltextCity
address_stateoptionaltextState/Region
address_postal_codeoptionaltextPostal Code
address_countryoptionaltextCountry

createProject

Create Project. Adds a new project.

InputTypeDescription
namerequiredtextThe name of the project
detailsoptionaltextThe details of the project

createTask

Create Task. Adds a new task under a person, lead, or opportunity.

InputTypeDescription
namerequiredtextTask Name
detailsoptionaltextDetails fo this task
custom_activity_type_idrequiredid (picked from your account)Select activity Type
assigneeIdoptionalid (picked from your account)select a user to assign to
entityoptionalone of "person" | "company" | "lead" | "opportunity" | "project"Choose the type of Copper record this task should be linked to (e.g. Person, Company, Lead, Opportunity, or Project).
entityItemIdoptionalid (picked from your account)Select the specific record (from the chosen type above) that this task should be attached to. For example, pick the Person or Opportunity the task relates to.
due_dateoptionaldate-time (ISO)Enter date and time in 24-hour format, e.g. `2025-09-09 11:40` (11:40 AM) or `2025-09-09 13:00` (1:00 PM).
reminder_dateoptionaldate-time (ISO)Enter date and time in 24-hour format, e.g. `2025-09-09 11:40` (11:40 AM) or `2025-09-09 13:00` (1:00 PM)
priorityoptionalone of "None" | "Low" | "Medium" | "High"Priority
tagsoptionalarrayTags

custom_api_call

Custom API Call. Make a custom API call to a specific endpoint

InputTypeDescription
urlrequiredobject (depends on other props)url
methodrequiredone of "GET" | "POST" | "PATCH" | "PUT" | "DELETE" | "HEAD"Method
headersrequiredobjectAuthorization headers are injected automatically from your connection.
queryParamsrequiredobjectQuery Parameters
body_typeoptionalone of "none" | "json" | "form_data" | "raw"Body Type
bodyoptionalobject (depends on other props)Body
response_is_binaryoptionalbooleanEnable for files like PDFs, images, etc.
failsafeoptionalbooleanNo Error on Failure
timeoutoptionalnumberTimeout (in seconds)
followRedirectsoptionalbooleanFollow redirects

searchForACompany

Search for a Company. Lookup a company.

InputTypeDescription
nameoptionaltextFull name of the Company to search for.
phone_numberoptionaltextPhone Number of the Company to search for.
email_domainsoptionaltextEmail Domain of the Company to search for.
contact_type_idsoptionalids (picked from your account)Select contact Type
assignee_idsoptionalids (picked from your account)select assignees
cityoptionaltextThe city in which Company must be located.
stateoptionaltextThe state or province in which Company must be located.
postal_codeoptionaltextThe postal code in which Company must be located.
countryoptionaltextThe two character country code where Company must be located.
tagsoptionalarrayFilter Company to those that match at least one of the tags specified.
socialsoptionalarrayFilter Company to those that match at least one of the social accounts specified.
followedoptionalone of "1" | "2"Filter by followed state
ageoptionalnumberThe maximum age in seconds that Company must be.
page_sizeoptionalnumberDefault 50. Max 200.
page_numberoptionalnumberPage Number
sort_byoptionalone of "name" | "phone" | "contact" | "contact_first_name" | "contact_last_name" | "date_modified" | "date_created" | "email_domain" | "city" | "state" | "country" | "zip"The field on which to sort the results
sort_directionoptionalone of "asc" | "desc"The direction in which to sort the result
minimum_interaction_countoptionalnumberThe minimum number of interactions Company must have had.
maximum_interaction_countoptionalnumberThe maximum number of interactions Company must have had.
minimum_interaction_dateoptionaldate-time (ISO)24-hour format, e.g. 2025-09-10 13:00. The timestamp of the earliest date of the last interaction.

searchForALead

Search for a Lead. Lookup a lead using match criteria.

InputTypeDescription
nameoptionaltextFull name of the Lead to search for.
phone_numberoptionaltextPhone Number of the Lead to search for.
emailsoptionaltextEmails of the Lead to search for.
assignee_idsoptionalids (picked from your account)select assignees
status_idsoptionalids (picked from your account)Select lead status
customer_source_idsoptionalids (picked from your account)Select customer source.
cityoptionaltextThe city in which Lead must be located.
stateoptionaltextThe state or province in which Lead must be located.
postal_codeoptionaltextThe postal code in which Lead must be located.
countryoptionaltextThe two character country code where Lead must be located.
tagsoptionalarrayFilter Lead to those that match at least one of the tags specified.
socialsoptionalarrayFilter Lead to those that match at least one of the social accounts specified.
followedoptionalone of "1" | "2"Filter by followed state
ageoptionalnumberThe maximum age in seconds that Lead must be.
page_sizeoptionalnumberDefault 50. Max 200.
page_numberoptionalnumberPage Number
sort_byoptionalone of "name" | "company_name" | "title" | "value" | "email" | "phone" | "date_modified" | "date_created" | "city" | "state" | "country" | "zip"The field on which to sort the results
sort_directionoptionalone of "asc" | "desc"The direction in which to sort the result
include_converted_leadsoptionalbooleanSpecify if response should contain converted leads.
minimum_monetary_valueoptionalnumberThe minimum monetary value Leads must have.

searchForAnActivity

Search for an Activity. Find an existing activity by type/criteria.

InputTypeDescription
entityoptionalone of "person" | "company" | "lead" | "opportunity" | "project" | "task"Select parent entity
entityItemIdoptionalid (picked from your account)Select Resource
activity_typesoptionalids (picked from your account)Select activity Type
page_sizeoptionalnumberDefault 50. Max 200.
page_numberoptionalnumberPage Number
minimum_activity_dateoptionaldate-time (ISO)24-hour format, e.g. 2025-09-10 11:40. The timestamp of the earliest activity date.
maximum_activity_dateoptionaldate-time (ISO)24-hour format, e.g. 2025-09-10 13:00. The timestamp of the latest activity date.
full_resultoptionalboolean(Optional) If set, search performance improves but duplicate activity logs may be returned

searchForAnOpportunity

Search for an Opportunity. Lookup an opportunity.

InputTypeDescription
nameoptionaltextFull name of the Opportunity to search for.
assignee_idsoptionalids (picked from your account)select assignees
company_idsoptionalids (picked from your account)select Companies
status_idsoptionallist ofFilter by Opportunity status
prioritiesoptionallist ofPriority
pipeline_idsoptionalids (picked from your account)select a Pipeline
pipeline_stage_idsoptionalids (picked from your account)Select a stage
primary_contact_idsoptionalids (picked from your account)select primary contacts
customer_source_idsoptionalids (picked from your account)Select customer source.
loss_reason_idsoptionalids (picked from your account)Select loss reason.
tagsoptionalarrayFilter People to those that match at least one of the tags specified.
followedoptionalone of "1" | "2"Filter by followed state
page_sizeoptionalnumberDefault 50. Max 200.
page_numberoptionalnumberPage Number
sort_byoptionalone of "assignee" | "company_name" | "customer_source_id" | "date_created" | "date_modified" | "inactive_days" | "interaction_count" | "last_interaction" | "monetary_unit" | "monetary_value" | "name" | "primary_contact"The field on which to sort the results
sort_directionoptionalone of "asc" | "desc"The direction in which to sort the result
minimum_monetary_valueoptionalnumberThe minimum monetary value Opportunities must have.
maximum_monetary_valueoptionalnumberThe maximum monetary value Opportunities must have.
minimum_interaction_countoptionalnumberThe minimum number of interactions Opportunity must have had.
maximum_interaction_countoptionalnumberThe maximum number of interactions Opportunity must have had.

searchForAPerson

Search for a Person. Lookup a person using match criteria.

InputTypeDescription
nameoptionaltextFull name of the People to search for.
phone_numberoptionaltextPhone Number of the People to search for.
emailsoptionalarrayEmails of the People to search for.
contact_type_idsoptionalids (picked from your account)Select contact Type
assignee_idsoptionalids (picked from your account)select assignees
company_idsoptionalids (picked from your account)select Companies
opportunity_idsoptionalids (picked from your account)select Opportunities
cityoptionaltextThe city in which People must be located.
stateoptionaltextThe state or province in which People must be located.
postal_codeoptionaltextThe postal code in which People must be located.
countryoptionaltextThe two character country code where People must be located.
tagsoptionalarrayFilter People to those that match at least one of the tags specified.
socialsoptionalarrayFilter People to those that match at least one of the social accounts specified.
followedoptionalone of "1" | "2"Filter by followed state
ageoptionalnumberThe maximum age in seconds that People must be.
page_sizeoptionalnumberDefault 50. Max 200.
page_numberoptionalnumberPage Number
sort_byoptionalone of "name" | "title" | "email" | "phone" | "date_modified" | "date_created" | "city" | "state" | "country" | "zip" | "socials"The field on which to sort the results
sort_directionoptionalone of "asc" | "desc"The direction in which to sort the result
minimum_interaction_countoptionalnumberThe minimum number of interactions People must have had.

searchForAProject

Search for a Project. Lookup a project.

InputTypeDescription
nameoptionaltextFull name of the Opportunity to search for.
assignee_idsoptionalids (picked from your account)select assignees
statusesoptionallist ofFilter by Opportunity status
tagsoptionalarrayFilter People to those that match at least one of the tags specified.
followedoptionalone of "1" | "2"Filter by followed state
page_sizeoptionalnumberDefault 50. Max 200.
page_numberoptionalnumberPage Number
sort_byoptionalone of "name" | "assigned_to" | "related_to" | "status" | "date_modified" | "date_created"The field on which to sort the results
sort_directionoptionalone of "asc" | "desc"The direction in which to sort the result
minimum_created_dateoptionaldate-time (ISO)24-hour format, e.g. 2025-09-10 13:00. The timestamp of the earliest date Opportunity are created.
maximum_created_dateoptionaldate-time (ISO)24-hour format, e.g. 2025-09-10 13:00. The timestamp of the latest date Opportunity are Created.
minimum_modified_dateoptionaldate-time (ISO)24-hour format, e.g. 2025-09-10 13:00. The timestamp of the earliest date Opportunity are Modified.
maximum_modified_dateoptionaldate-time (ISO)24-hour format, e.g. 2025-09-10 13:00. The timestamp of the latest date Opportunity are Modified.

updateCompany

Update Company. Updates a company record.

InputTypeDescription
companyIdrequiredid (picked from your account)select a Company
fieldsoptionalobject (depends on other props)fields
primaryContactIdoptionalid (picked from your account)select a primary contact

updateLead

Update Lead. Updates an existing lead.

InputTypeDescription
leadIdrequiredid (picked from your account)select a Lead
fieldsoptionalobject (depends on other props)fields

updateOpportunity

Update Opportunity. Updates an opportunity using match criteria.

InputTypeDescription
opportunityIdrequiredid (picked from your account)select an Opportunity
updateFieldsoptionalobject (depends on other props)updateFields
pipelineIdoptionalid (picked from your account)select a Pipeline
pipelineStageIdoptionalid (picked from your account)Select a stage
primaryContactIdoptionalid (picked from your account)select a primary contact

updatePerson

Update Person. Updates a person based on matching criteria.

InputTypeDescription
personIdrequiredid (picked from your account)select a person
fieldsoptionalobject (depends on other props)fields

updateProject

Update Project. Updates a project record.

InputTypeDescription
projectIdrequiredid (picked from your account)select a Project
updateFieldsoptionalobject (depends on other props)updateFields

Details

Id
copper
Category
CRM and sales
Tags
crm, sales, google-workspace, relationships
Package
@activepieces/piece-copper@0.1.4
Tier
Community

On this page

  1. Connect
  2. Call it from a workflow
  3. Actions (20)
  4. createOpportunity
  5. createPerson
  6. convertLead
  7. createActivity
  8. createCompany
  9. createLead
  10. createProject
  11. createTask
  12. custom_api_call
  13. searchForACompany
  14. searchForALead
  15. searchForAnActivity
  16. searchForAnOpportunity
  17. searchForAPerson
  18. searchForAProject
  19. updateCompany
  20. updateLead
  21. updateOpportunity
  22. updatePerson
  23. updateProject
  24. Details
Appbricx

The backend, runtime and hosting for apps your coding agent builds. On our cloud, in yours, or on your own servers.

Features

Coding agents and MCPVerify testingBuilder consolePostgres databaseData APIRealtimeRow-level securitySign-in and authPaymentsWorkflows and jobsAI in your appIntegrationsBackups and rollbackHosting and domainsSelf-host and exportAll features

Product

ShowcasePricingFor coding agentsTemplatesPrivate cloudBring your own AI keyFAQ

Compare

Appbricx vs SupabaseLovable alternativeBolt alternativeFor freelancersFor agencies

Resources

DocumentationReferenceBlogSupportContact

© 2026 Appbricx. All rights reserved.

TermsPrivacyCookiesAcceptable Use