Autotask CRM entities - companies (accounts), contacts, and sites/locations - including field references, company type classifications, and how these records underpin tickets, contracts, and projects for MSP account management.
Scanned 9/5/2026
Install to Claude Code
npx -y skills add WYRE-AI/msp-claude-plugins --skill crm --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Crm?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/wyre-ai-crm)More formats (shields.io, HTML) on the badges page.
---
name: "Autotask CRM"
description: >
Autotask CRM entities - companies (accounts), contacts, and sites/locations -
including field references, company type classifications, and how these
records underpin tickets, contracts, and projects for MSP account management.
when_to_use: >-
When working with companies, contacts, sites/locations, or opportunities in Autotask CRM. Use
when: autotask company, autotask contact, autotask account, autotask crm, company management,
contact management, client onboarding, autotask site, or autotask location.
---
# Autotask CRM Management
## Overview
Autotask CRM manages the core entities that define your client relationships: companies (accounts), contacts, and sites. Proper CRM data is foundational - tickets, contracts, projects, and billing all depend on accurate company and contact information.
## Anti-triggers
- **The same client as a documentation record** — use
`itglue-organizations`, and `itglue-contacts` for the people.
- **The client's grouping in monitoring or SOC tooling** — Datto RMM
calls it a site (`datto-rmm-sites`), RocketCyber calls it an account
(`rocketcyber-accounts`). Neither shares IDs with an Autotask company.
- **Kaseya BMS accounts and contacts** — a separate PSA with its own
client records; use `kaseya-bms-api-patterns`.
## Key Concepts
### Company (Account)
The primary entity representing a client organization.
| Field | Description | Required |
|-------|-------------|----------|
| `id` | Unique identifier | System |
| `companyName` | Official company name | Yes |
| `companyType` | Customer, Lead, Prospect, etc. | Yes |
| `phone` | Main phone number | No |
| `address1` | Street address | No |
| `city` | City | No |
| `state` | State/Province | No |
| `postalCode` | ZIP/Postal code | No |
| `country` | Country | No |
| `webAddress` | Website URL | No |
| `parentCompanyID` | Parent company for hierarchies | No |
| `ownerResourceID` | Account manager | No |
| `classification` | Classification category | No |
### Company Types
| ID | Type | Use Case |
|----|------|----------|
| 1 | Customer | Active paying clients |
| 2 | Lead | Potential new business |
| 3 | Prospect | Qualified leads |
| 4 | Dead | Churned/lost clients |
| 5 | Vendor | Suppliers and partners |
| 6 | Partner | Strategic partners |
### Contact
Individual people at a company.
| Field | Description | Required |
|-------|-------------|----------|
| `id` | Unique identifier | System |
| `companyID` | Associated company | Yes |
| `firstName` | First name | Yes |
| `lastName` | Last name | Yes |
| `emailAddress` | Primary email | No |
| `phone` | Direct phone | No |
| `mobilePhone` | Mobile number | No |
| `title` | Job title | No |
| `isActive` | Active status | Yes |
| `isPrimaryContact` | Primary contact flag | No |
### Site/Location
Physical locations for a company (for on-site service).
| Field | Description | Required |
|-------|-------------|----------|
| `id` | Unique identifier | System |
| `companyID` | Parent company | Yes |
| `name` | Site name | Yes |
| `address1` | Street address | No |
| `city` | City | No |
| `isActive` | Active status | Yes |
| `isPrimaryLocation` | Primary site flag | No |
## API Patterns
### Creating a Company
```http
POST /v1.0/Companies
Content-Type: application/json
```
```json
{
"companyName": "Acme Corporation",
"companyType": 1,
"phone": "555-123-4567",
"address1": "123 Main Street",
"city": "Springfield",
"state": "IL",
"postalCode": "62701",
"country": "United States",
"webAddress": "https://acme.example.com",
"ownerResourceID": 29744150
}
```
### Searching Companies
```http
GET /v1.0/Companies/query?search={"filter":[{"field":"companyName","op":"contains","value":"acme"}]}
```
#### Common Search Patterns
**Search by name:**
```json
{
"filter": [
{"field": "companyName", "op": "contains", "value": "acme"}
]
}
```
**Active customers only:**
```json
{
"filter": [
{"field": "companyType", "op": "eq", "value": 1},
{"field": "isActive", "op": "eq", "value": true}
]
}
```
**Companies by account manager:**
```json
{
"filter": [
{"field": "ownerResourceID", "op": "eq", "value": 29744150}
]
}
```
### Updating a Company
```http
PATCH /v1.0/Companies
Content-Type: application/json
```
```json
{
"id": 12345,
"phone": "555-987-6543",
"webAddress": "https://newsite.acme.com"
}
```
### Creating a Contact
```http
POST /v1.0/Contacts
Content-Type: application/json
```
```json
{
"companyID": 12345,
"firstName": "John",
"lastName": "Smith",
"emailAddress": "john.smith@acme.example.com",
"phone": "555-123-4567",
"mobilePhone": "555-987-6543",
"title": "IT Director",
"isActive": 1,
"isPrimaryContact": true
}
```
### Searching Contacts
**Contacts for a company:**
```json
{
"filter": [
{"field": "companyID", "op": "eq", "value": 12345},
{"field": "isActive", "op": "eq", "value": 1}
]
}
```
**Search by email:**
```json
{
"filter": [
{"field": "emailAddress", "op": "eq", "value": "john.smith@acme.example.com"}
]
}
```
### Creating a Site
```http
POST /v1.0/CompanyLocations
Content-Type: application/json
```
```json
{
"companyID": 12345,
"name": "Main Office",
"address1": "123 Main Street",
"city": "Springfield",
"state": "IL",
"postalCode": "62701",
"country": "United States",
"isPrimaryLocation": true,
"isActive": 1
}
```
## Common Workflows
### Client Onboarding
1. **Create company record**
- Set company type to Customer
- Assign account manager
- Add billing information
2. **Create primary contact**
- Mark as primary contact
- Verify email address
3. **Create site(s)**
- Add all service locations
- Mark primary location
4. **Set up contract**
- Associate with company
- Define service levels
5. **Configure billing**
- Payment terms
- Tax information
### Contact Management
1. **Verify before creating**
- Search for existing contact by email
- Check for duplicates
2. **Maintain accuracy**
- Update titles when employees change roles
- Mark contacts inactive when they leave
- Add new contacts as needed
3. **Track relationships**
- Note who can authorize work
- Track technical vs billing contacts
### Company Hierarchy
For MSPs managing parent/child company relationships:
1. **Create parent company first**
2. **Create child companies with parentCompanyID**
3. **Contracts can roll up to parent**
4. **Reporting aggregates by hierarchy**
## Error Handling
### Common API Errors
| Code | Message | Resolution |
|------|---------|------------|
| 400 | Duplicate company name | Check for existing company, use unique name |
| 400 | Invalid email format | Verify email address syntax |
| 404 | Company not found | Verify company ID exists |
| 409 | Contact already exists | Search for existing contact first |
### Validation Errors
**"CompanyName is required"** - Company name cannot be empty or null
**"Invalid companyType"** - Must use valid company type ID from picklist
**"Email already exists"** - Contact with this email already exists
## Best Practices
1. **Standardize naming** - Use consistent company name formats
2. **Maintain data quality** - Regular audits of contact information
3. **Use classifications** - Categorize companies for reporting
4. **Track account managers** - Assign ownerResourceID for accountability
5. **Document relationships** - Use notes for key account information
## Related Skills
- [Autotask Tickets](../tickets/SKILL.md) - Service tickets for companies
- [Autotask Contracts](../contracts/SKILL.md) - Service agreements
- [Autotask Projects](../projects/SKILL.md) - Project management
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!