AgentSkillsCN

Companies

当您需要管理ConnectWise PSA公司时,可使用此技能:创建、更新、搜索或管理公司/客户记录。本技能涵盖公司类型、状态、站点/位置、自定义字段以及公司间的关系,是MSP在ConnectWise PSA中进行客户关系管理与CRM运营的核心工具。

SKILL.md
--- frontmatter
description: >
  Use this skill when working with ConnectWise PSA companies - creating, updating,
  searching, or managing company/account records. Covers company types, statuses,
  sites/locations, custom fields, and company relationships. Essential for MSP
  account management and CRM operations in ConnectWise PSA.
triggers:
  - connectwise company
  - connectwise account
  - company management
  - create company connectwise
  - company site
  - company location
  - company type
  - company status
  - customer record
  - client record
  - company custom field

ConnectWise PSA Company Management

Overview

Companies in ConnectWise PSA represent your clients, prospects, vendors, and other business entities. Company records are central to ticketing, agreements, projects, and billing. This skill covers company CRUD operations, types, statuses, sites, and custom fields.

API Endpoint

code
Base: /company/companies

Company Types

Standard company types in ConnectWise PSA:

Type IDNameDescription
1ClientActive paying customer
2ProspectPotential customer
3VendorSupplier or partner
4PartnerStrategic partner
5CompetitorMarket competitor

Note: Company types are configurable. Query /company/companies/types for your instance's types.

Company Statuses

Standard company statuses:

Status IDNameDescriptionActive
1ActiveActive companyYes
2InactiveInactive companyNo
3Not ApprovedPending approvalNo

Query /company/companies/statuses for available statuses.

Complete Company Field Reference

Core Fields

FieldTypeRequiredDescription
idintSystemAuto-generated unique identifier
identifierstring(25)YesUnique company code (e.g., "ACME")
namestring(50)YesFull company name
statusobjectNo{id: statusId}
typeobjectNo{id: typeId}

Contact Information

FieldTypeRequiredDescription
phoneNumberstring(30)NoMain phone
faxNumberstring(30)NoFax number
websitestring(255)NoCompany website URL

Address Fields

FieldTypeRequiredDescription
addressLine1string(50)NoStreet address
addressLine2string(50)NoSuite/unit
citystring(50)NoCity
statestring(50)NoState/province
zipstring(12)NoPostal code
countryobjectNo{id: countryId}

Classification Fields

FieldTypeRequiredDescription
territoryobjectNo{id: territoryId} - Sales territory
marketobjectNo{id: marketId} - Industry/market
accountNumberstring(30)NoExternal accounting ID
taxIdentifierstring(25)NoTax ID/EIN
annualRevenuedecimalNoCompany annual revenue
numberOfEmployeesintNoEmployee count

Billing Fields

FieldTypeRequiredDescription
billingTermsobjectNo{id: termsId} - Payment terms
billToCompanyobjectNo{id: companyId} - Bill to different company
invoiceDeliveryMethodobjectNo{id: methodId} - Email, Mail, etc.
invoiceTemplateobjectNo{id: templateId}
pricingScheduleobjectNo{id: scheduleId}

Ownership Fields

FieldTypeRequiredDescription
ownerLevelobjectNo{id: levelId} - Account manager level
defaultContactobjectNo{id: contactId} - Primary contact
leadSourcestring(50)NoHow lead was acquired
leadFlagbooleanNoIs this a lead

Tracking Fields

FieldTypeRequiredDescription
dateAcquireddateNoWhen became customer
deletedFlagbooleanSystemSoft delete status
mobileGuidguidSystemMobile app identifier
_infoobjectSystemMetadata including last updated

Company Sites

Sites represent physical locations for a company. Each company can have multiple sites.

Site Endpoint

code
/company/companies/{companyId}/sites

Site Fields

FieldTypeRequiredDescription
idintSystemSite identifier
namestring(50)YesSite name
addressLine1string(50)NoStreet address
addressLine2string(50)NoSuite/unit
citystring(50)NoCity
statestring(50)NoState/province
zipstring(12)NoPostal code
countryobjectNo{id: countryId}
phoneNumberstring(30)NoSite phone
faxNumberstring(30)NoSite fax
taxCodeobjectNo{id: taxCodeId}
defaultFlagbooleanNoIs primary site

Create Site

http
POST /company/companies/{companyId}/sites
Content-Type: application/json

{
  "name": "Main Office",
  "addressLine1": "123 Main Street",
  "city": "Springfield",
  "state": "IL",
  "zip": "62701",
  "defaultFlag": true
}

Custom Fields

Custom fields store company-specific data not in standard fields.

Get Custom Fields

http
GET /company/companies/{companyId}/customFields

Custom Field Response

json
{
  "id": 1,
  "caption": "SLA Tier",
  "value": "Gold",
  "type": "Text"
}

Update Custom Fields

Custom fields are updated via the company PATCH:

http
PATCH /company/companies/{id}
Content-Type: application/json

{
  "customFields": [
    {
      "id": 1,
      "value": "Platinum"
    }
  ]
}

Custom Field Types

TypeDescription
TextFree-form text
NumberNumeric value
DateDate value
CheckboxBoolean true/false
DropdownSelection from list

API Operations

Create Company

http
POST /company/companies
Content-Type: application/json

{
  "identifier": "ACME",
  "name": "Acme Corporation",
  "status": {"id": 1},
  "type": {"id": 1},
  "addressLine1": "123 Main Street",
  "city": "Springfield",
  "state": "IL",
  "zip": "62701",
  "phoneNumber": "555-123-4567",
  "website": "https://www.acme.com"
}

Get Company

http
GET /company/companies/{id}

Get Company by Identifier

http
GET /company/companies?conditions=identifier="ACME"

Update Company

http
PATCH /company/companies/{id}
Content-Type: application/json

{
  "phoneNumber": "555-987-6543",
  "status": {"id": 1}
}

Search Companies

http
GET /company/companies?conditions=name contains "Acme" and status/id=1

Delete Company

http
DELETE /company/companies/{id}

Note: Deleting a company with related records (tickets, contacts, etc.) will fail. Use status change to Inactive instead.

Common Query Patterns

Active clients:

code
conditions=status/id=1 and type/id=1

Companies by territory:

code
conditions=territory/id=5

Companies with no contact:

code
conditions=defaultContact=null

Recently added companies:

code
conditions=_info/lastUpdated>[2024-01-01]
orderBy=_info/lastUpdated desc

Search by name:

code
conditions=name contains "tech"

Companies by market:

code
conditions=market/id=3

Company Relationships

Parent/Child Companies

Companies can have hierarchical relationships:

http
GET /company/companies/{id}/managedDevicesIntegrations

Related Entities

EntityRelationship
Contacts/company/contacts?conditions=company/id={id}
Tickets/service/tickets?conditions=company/id={id}
Agreements/finance/agreements?conditions=company/id={id}
Projects/project/projects?conditions=company/id={id}
Configurations/company/configurations?conditions=company/id={id}

Best Practices

  1. Use unique identifiers - Keep short, meaningful codes (ACME, ABC123)
  2. Standardize company names - Consistent naming helps searching
  3. Set company type - Enables filtering and reporting
  4. Add default contact - Primary point of contact for communications
  5. Configure sites - Multiple locations need separate sites
  6. Use custom fields - Store industry-specific data
  7. Keep status current - Inactive companies should be marked as such
  8. Link to accounting - Set accountNumber for integration

Error Handling

ErrorCauseResolution
Identifier requiredMissing identifierProvide unique company code
Name requiredMissing company nameInclude name field
Identifier existsDuplicate identifierChoose unique identifier
Cannot deleteHas related recordsSet status to Inactive instead
Invalid statusStatus doesn't existQuery statuses endpoint

Related Skills